o(n log n)の点の最短ペアワイズ距離を見つける?


11

次の演習は、私が監督する学生に配布されています。

平面内のポイントが与えられた場合、すべてのポイントのペアの中で距離が最小になるポイントのペアを見つけるアルゴリズムを考案します。アルゴリズムは時間o n 2)で実行する必要があります。no(n2)

時間タスクを解決する(比較的)単純な分割統治アルゴリズムがあります。Θ(nlogn)

質問1:最悪の場合に特定の問題を正確に解決するアルゴリズムはありますo(nlogn)

これが可能なのではないかと私に思わせたのは、私がいくつかの講演で見たことを覚えている結果です(参考文献を歓迎します)。これはないより一定数よりその線に沿って何かを述べ点のいくつかの点の周囲面に配置することができるP半径の円の内側R Rと、R関与点のうちのいずれか2つの間の最小距離を。私はc = 7、中央にpを持つ正六角形を形成する点(極端な場合)と思います。cNprRrc=7p

その場合、次のアルゴリズムはそれらの問題をステップで解決するはずです。n

fun mindist [] | p::[] = INFINITY
|   mindist p1::p1::[] = dist(P[0], P[1])
|   mindist p::r = let m = mindist(r) in
                     min(m, nextNeighbour(p, r, m))
                   end

(上記のステートメントを想定して)から一定の数のポイントだけがr遠くmから離れることができないため、これは線形時間であると主張されていることに注意してくださいp。新しい最小値を見つけるには、これらのポイントのみを調査する必要があります。もちろん、キャッチがあります。どのように実装しますかnextNeighbour(線形時間で前処理を行う場合があります)?

質問2:ポイントのセットましょうと点P R。してみましょうメートルRRpRmR

mmin{dist(p1,p2)p1,p2R}

そして

Rp,m:={ppRdist(p,p)m}

は有限あると仮定します。検索することが可能であるP 'RのP Mからの最小距離を有するP(償却)の時間O1 ?(調査ポイントpを 1つずつ追加することにより、Rが構築されると想定できます。)Rp,mpRp,mpO(1)Rp


2
「最も近いペア」をキーワードとして検索することを提案します。
岡本良夫

これは今ではすべて標準的なものです。最初の2つの章を参照してください:goo.gl/pLiEO
サリエルハー

追伸 予想される時間が必要な場合は、最小距離を含むドロネー三角形分割を計算することもできます。
domotorp

質問1の後、「半径rの円の内側のある点pの周りの平面に、一定数以下の点を配置​​できます。rはpと他の点の間の最小距離です。」これは確かに真実ではありません。半径rの円上の任意の数の点を取ることができます。rが2点間の最小距離である場合、ステートメントは真です。その場合、証明は非常に簡単です。
domotorp

mppR

回答:


12

cnlognniϵxinϵ2nϵΩ(nlogn)


本当にありがとう。それは質問2(否定的)にも答えます。
ラファエル

あなたが言及する問題は、明らかに要素の明確さの問題としても知られています。
ラファエル

@Sariel Har-Peledのリファレンス(goo.gl/pLiEO)は、最も近いペアを見つけるための実用的な線形時間アルゴリズムを示しています。その文書はこの議論に直接対処し、アルゴリズムがより強力な計算モデルを使用するため、適用されないことを説明しています。
ケビンクライン

1
はい。ただし、質問は最悪の場合の実行時間を具体的に尋ねました。しかし、私の観察はすべてサリエルの論文にすでに掲載されていることに同意します。
-domotorp


0

質問2を理解している限り、Rabinのアルゴリズムはそれに対する一種の答えを提供します。各時間ステップで、データ構造は、これまでに見られたポイントのペア間の最小距離よりも小さいセル幅を、で割ったグリッドです。2pO(1)


ところで、私はリプトンが説明しているアルゴリズムのバージョンではなく、最初のコメント(およびクラインバーグとタルドスの本)で説明されているように言及しています。
サショニコロフ

予想のみで、domotorpsの回答を参照してください。
ラファエル

あなたが決定論的アルゴリズムに自分を制限したいと思ったことはどこにも見当たりません。rabinのアルゴリズムは、決定ツリーの下限(これは、比較ソートと整数ソートのアルゴリズムの下限に似ています)を巡回するため、まさに興味深いものです。ところで、ラビン用途は下限の周りに行くことにすることをおそらくよりあり、すなわちハッシュトリックは、グリッドにアクセスするために使用される
Sashoニコロフ

4
「Rabinが使用するその他」について:実数入力を整数に丸める機能。これには非常に注意する必要があります:標準の算術演算と実数の丸めを行うことができる計算モデルを設定し、すべての操作で一定時間であれば、多項式時間でPSPACE完全な問題を解決することが可能ですこのモデルで。しかし、Rabinは入力番号を(異なる反復で異なる精度レベルに)丸めるだけであり、この制限された形式の丸めには問題はありません。
デビッドエップスタイン

o(nlogn) O(1)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.