2次元ピーク検出の複雑さ(MIT OCW 6.006)


9

43:30のMIT OCW 6.006の朗読ビデオで、

mn行の行列Aが与えられた場合、2次元ピーク検出アルゴリズムは、ピークが隣接する隣接セル以上の任意の値である場合、次のように記述されます。m×nAmn

注:を使用して列を説明する際に混乱がある場合は、申し訳ありませんが、これは、朗読ビデオがそれを説明する方法であり、ビデオと一貫性を保つように努めました。それは私をとても混乱させました。n

  1. 真ん中の列を選択 // 複雑さがありますΘ 1 n/2Θ(1)

  2. の最大値を見つける// 列にmあるため、複雑度 Θ m があるn/2Θ(m)m

  3. 水平を確認してください。最大値の行の近傍、それがより大きい場合はピークが検出され、それ以外の場合は再帰します// 複雑さT n / 2 m )を持ちますT(n/2,m)T(n/2,m)

次に、再帰を評価するために、暗唱インストラクターは言います

は、最大値を見つけるためT(1,m)=Θ(m)

(E1)T(n,m)=Θ(1)+Θ(m)+T(n/2,m)

ビデオの52:09に次の部分を理解します。ここでは、行数は決して変化しないため、定数のように扱うと彼は言っています。しかし、それが次の製品にどのようにつながるのか理解できません。m

(E2)T(n,m)=Θ(m)Θ(logn)

私は以来、と思わ一定のように扱われ、それはこのようにように扱われΘ 1 とで除去E 1 上記。しかし、E 2 )にジャンプするのに苦労しています。これは、定数mT n / 2 )の場合を検討しているためですか?mΘ(1)(E1)(E2)T(n/2)m

私は、全体的なアイデアがあることである「見る」ことができると思い操作が行のm個のため、最悪で、行われます。私が理解しようとしているのは、E 1 からE 2 へのジャンプを他の誰かにどのように説明するか、つまり実際の理解を得る方法です。Θ(logn)(E1)(E2)

回答:


1

ΘΘ(lg(n))lg(n)Θ(mlg(n))

たとえば、マトリックスに32列と8行があるとします。

  1. 真ん中の列、たとえば列16を取り上げます。それを評価して、列のグローバルピークが右側の要素に置き換えられていることを確認します。列1〜16をドロップし、列17〜32に注目します。
  2. 残りの行列の中央の列(列24)を見つけ、グローバルピークを評価します(これは2番目の列の評価です)。右に移動する必要があることがわかります。列17〜24をドロップし、25〜32に注目します。
  3. 真ん中(列28)を見つけます-評価し(3列目の評価)、右に移動する必要があることがわかります。列25〜28を削除し、29〜32に注目します。
  4. 30列目(4番目の評価)を評価し、右に移動する必要があることを確認して、29〜30列目を削除します。
  5. 残りの列の1つ(5番目の列の評価)を評価すれば完了です。

lg(32)lg(n)


2

O(m)mT(n,m)T(n,m)

T(n)=T(n2)+cnT(n)=T(1)+cn(1+12+14+18+)=O(n)


1
この答えは、実際には問題外です!OPは暗唱ビデオMIT OCW 6.006でアルゴリズムについて話しますが、この回答は別のアルゴリズムについて話します。特に、OPで概説されている分析は、そのビデオのアルゴリズムに関して正しいものです。
ジョンL.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.