最大化する方法


9

私は常にアルゴリズムの問​​題をたくさん見ています。それは常に次のような長い行に還元されます。

あなたが持っている整数配列の、あなたは見つける必要がある、このような最大化するで時間。h[1..n]0i,j(h[j]h[i])(ji)O(n)

明らかに時間解はすべてのペアを考慮することですが、プロパティについて他に何も知らなくても式を最大化できる方法はありますか?O(n2)O(n)h

私が考えた1つのアイデアはを修正することです。それから、等しいからまでのを見つける必要がありますまたはあり、が固定されているため、。ji1j1argmaxi{(h[j]h[i])(ji)}argmaxi{h[j]jh[j]h[]j+h[]}jargmax{h[j]jh[]+h[]}

ただし、内部の従属項を取り除く方法はありません。何か助けは?j


ウィルソリューションが役に立ち?Oログ
xskxzr 2018

@xskxzrあるかどうか確認してください
AspiringMat

回答:


5

これはOログソリューションです。この回答の最後に、Willard Zhanによって指摘されOが追加されています。


Oログソリューション

convience、示すためにfj=h[j]h[]j

定義l1=1、およびl、そのような最小の指標であることがl>l1h[l]<h[l1]。同様に、定義r1=、及びr最大インデックスようなものでr<r1h[r]>h[r1]。シーケンスl1l2また、r1r2O時間で簡単に計算できます。

がなく、h [ i ] < h [ j ](つまり、f i j > 0)である場合は、簡単です。ここでは、重要なケースに焦点を当てます。そのような場合、解決策を見つけるには、そのようなペアを検討するだけで済みます。<jh[]<h[j]fj>0

それぞれについて、ようにH [ I ] < H [ jが、聞かせてUは最大インデックスであるように、L UI、およびVの最小のインデックスであっても、その結果のR VJ、次いでH [ L 、U ] H [ I ](そうでなければL U + 1Iの定義によってL U + 1<jh[]<h[j]あなたlあなたvrvjh[lu]h[i]lあなた+1lあなた+1、こうしての定義に矛盾)、同様にH [ R V ] H [ J ]。従って H [ R V ] - H [ L Uを ] R V - L UH [ J ] - H [ I ] R V - L UH [あなたh[rv]h[j] つまり、 l u < r vであるペアl ur vのみを考慮する必要があります。

h[rv]h[lあなた]rvlあなたh[j]h[]rvlあなたh[j]h[]j
lあなたrvlあなた<rv

意味の、我々は次の補題を持っています。vあなた=arg最高v lあなた<rvflあなたrv

L U < RのV、および場合があるUを0ように、U < U 0及びV < V U 0又はそのU > U 0及びV > V U 0は、最終的な最適解にはなりません。lあなたrvlあなた<rvあなた0あなた<あなた0v<vあなた0あなた>あなた0v>vあなた0

証明。定義によれば、我々は H [ RのV U 0 ] - H [ L U 0 ] RのV U 0 - L U 0H [ R V ] - H [ L U 0 ] RのV - Lvあなた0 または H[RV]-H[R V U 0 ]L U 0 +H[L、U 0 ]RV-R V U 0+H[Rの V U 0 ]r v u 0

h[rvあなた0]h[lあなた0]rvあなた0lあなた0h[rv]h[lあなた0]rvlあなた0
h[rv]h[rvあなた0]lあなた0+h[lあなた0]rvrvあなた0+h[rvあなた0]rvあなた0h[rv]rvあなた00。

あなた<あなた0v<vあなた0h[rv]h[rvあなた0]<0rvrvあなた0>0lあなた<lあなた0h[lあなた]>h[lあなた0]

h[rv]h[rvあなた0]lあなた+h[lあなた]rvrvあなた0> h[rv]h[rvあなた0]lあなた0+h[lあなた0]rvrvあなた0

h[rv]h[rvあなた0]lあなた+h[lあなた]rvrvあなた0+h[rvあなた0]rvあなた0h[rv]rvあなた0>0
h[rvあなた0]h[lあなた]rvあなた0lあなた>h[rv]h[lあなた]rvlあなた

lあなたrvあなた0lあなたrv

v/2l1l2o1lあなたrvあなた=1/21v=v/2v/2+1o2lあなたrvあなた=/2+1/2+2v=1v/2{l/2rv/2o1o2}


O

flあなたrv=lあなたrvあなた>あなた0v>v0flあなた0rv0flあなた0rvflあなたrv0>flあなたrvM[x,y]:=f(lx,rcy+1)cr1,r2,rcy+1yMf


1
あなたが証明したのは flあなたrv は単調行列なので、分割統治は Oログアルゴリズム。しかし、あなたは実際にそれを証明することができますflあなたrvあるモンジュ、ので、O SMAWKアルゴリズムを適用できます。
ウィラードジャン2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.