AのポイントとBのポイント間の最短距離


9

ABnABmin { dist(p,q) | pAqB }

私が正しいかどうかはわかりませんが、この問題は計算幾何学の線形計画法で解決できる問題と非常によく似ています。ただし、LPへの削減は簡単ではありません。また、私の問題は、2次元空間で LPによって明らかに解決できる2組の点の間の最も薄い点を見つけることに関連しているようです。O(n)


4
ここでの質問は何ですか?
ラファエル


私は専門家ではありませんが、通常、この点がデータである機械学習では、セットはほとんどの場合正常に動作し、グループ化されるため、@ Pedroによって提案されたようなアルゴリズムがうまく機能します。
chazisop 2012年

3
「明らかに2次元空間のO(n)でLPによって解決できます」-このステートメントの原因は何だったのでしょうか。「線形計画法」は一般に線形時間では解決できません。「線形」とは何か他のものを指します。LPには特別な形式があるのですか?
ラファエル

回答:


5

少し複雑に思えるかもしれませんが、素朴な総当たり検索よりも効率的な解決策があります。O(n2)

  1. ましょう質量の中心間の軸である及び。vBAB
  2. この軸に沿ってとポイントをそれぞれ降順と昇順で並べ替え、シーケンス、、...、と、、...、ます。B 0 1 N B 0 、B 1 、B NABa0a1anb0b1bn

残りは明確にするために擬似コードにあります:

d = infinity.
for j from 1 to n
    if (b_1 - a_j) along v > d then break endif
    for k from 1 to n
        if (b_k - a_j) along v > d then
            break
        else
            d = min( d , ||b_k - a_j|| )
        endif
    enddo
enddo

つまり、に沿ってポイントを事前にソートすることにより、に沿ったは常になるため、お互いの内に決してないペアを除外できます。D B のk - jは V BのK - Jvdbkajvbkaj

最悪の場合、これはまだですが、とが十分に分離されている場合は、それよりもはるかに高速ですが、は必要です。ソート用。O(n2)ABO(nlogn)

更新

この解決策は決して帽子から引き抜かれるものではありません。これは、空間ビニングで相互作用する粒子のペアをすべて見つけるために、粒子シミュレーションで使用する特別なケースです。より一般的な問題を説明する私自身の仕事はこちらです。

変更されたラインスイープアルゴリズムを使用するという提案については、直感的には簡単ですが、これがばらばらのセットを考慮した場合、これがにあるとは確信できません。ラビンのランダム化アルゴリズムについても同様です。O(nlogn)

そこ互いに素な集合内の最も近いペアの問題を持つ多くの文献の取引ではないようですが、私が見つけたこれを下であることにノークレームをしないこれ、、及びこの思えません、何かについて主張するため。O2

上記のアルゴリズムは、最初の論文(Shan、Zhang、Salzberg)で提案された平面スイープの変形と見なすことができますが、軸を使用してソートを行わず、セット間の軸を使用してセットをトラバースします降順/昇順。バツ


2
@ペドロ:申し訳ありませんが、私は以前にコメントしませんでした(現時点では時間がない)。私があなたの回答に反対票を投じた理由は、それが悪い回答であり、トップであるべきではなかったからです。これは実際には、最悪の場合のO(n log n)を伴う計算ジオメトリのよく知られた問題です。良い答えは、既知の問題(おそらく参照がある)と一般的な解決策を指摘しているでしょう。これには、kdツリーの使用と要素ごとのテスト、スイープアルゴリズムなどのテストが含まれます。 。1Dケースを見てください-より明白なO(n log n)があります。
ex0du5 2012年

2
@ ex0du5:まるで自分の答えを投稿するように聞こえます!「より良い答えがある」は、通常、反対票を投じる正当な理由ではないことに注意してください。この対策は、間違ったスパム、非常に不適切な形式の回答のために予約する必要があります。ペドロはどちらでもありません。一部の人々が反対投票の前に与えられるべきだと思う考えの印象については、こちらも参照してください。
ラファエル

1
@Raphael:公正な回答が1つあり、参照を調べる時間がないため、回答しませんでした。反対投票の方法に関するあなたの参照として、それはこれらのサイトにとって恐ろしいアルゴリズムです!CSの学生は、形式主義の目標を失わないことの重要性を特に理解する必要があります。投票の目的は、同じ問題を抱える後の生徒を最も役立つ回答に導くランキングに回答を移動することです。私の投票アルゴリズムはそれを行います。そのアルゴ:明らかにそうではありません。これはメタで話し合うこともできますが、大人としては私たちの力を十分に使うべきだと思います。
ex0du5 '21 / 06/21

1
@ ex0du5:もう少し時間があるようですね。このインスタンスが実際に「最悪のケースよく知られている問題」であることを実際に示すことができますか?O(nlogn)
ペドロ

1
@ ex0du5:実は、最近傍探索、例えば使用してKD木は、持っているだけで平均的な複雑さO(LOGN)を。それで私たちはスクエアワンに戻りました。
ペドロ

4

「最も近いペア」のラインスウィープアルゴリズムであるを適合させることができますO(nlogn)

必要な唯一の変更は、同じセットに属するペアを無視することです。

編集:私が説明したように、これは実際には単純ではありません(または可能ですらありません)。議論についてはコメントを参照してください。


2
単なる注釈として、でも実行される最も近いペアに古典的な分割統治アルゴリズムを適応させることもできますウィキペディアも参照してください。O(nlogn)
リズワンフッダ

1
ランダム化された線形時間アルゴリズムについては、例えばリプトンのブログのラビンフリップコインを参照してください。
Juho

3
特に境界の維持に関して、ばらばらのセットにこれを実装する方法についてもう少し具体的に教えてください。O(nlogn)
ペドロ

正しくない場合は-1。リンクする最も近いペアのラインスウィープアルゴリズムは、要素を含むソートされたセットに依存しますが、互いに素なセットの場合、このセットはn要素を含んで開始されるため、少なくともO n log n にはありません最悪のケースではありません。O(1)nO(nlogn)
ペドロ

1
@ペドロ:なぜもっと大きくなるのですか?どちらかといえば、現在の候補点のセットは縮小するはずです。
ラファエル

4

このような問題のアイデアは、Nearest Neighborの効率的なクエリを可能にするセットの1つから順序付けられた構造を作成することです。任意の次元のO(log n)クエリ構造を示した古典的な論文は次のとおりです。

ボロノイソリューションのシャモスとホーイ

それ以来、デローニーテッセレーションからのアイデアに基づいて他の多くのスペースパーティションが作成され、これらはさまざまなサブスペーススイープの説明にも変換されます。ボロノイ法は、構成ステップをO(n log n)にする平面分割であるため、一般的な分割統治法の説明にも該当します。

したがって、この問題の基本的な解決策は次のとおりです。

  1. セットAを取得して、選択した効率的な最近傍クエリ構造を構築します。この構築ステップはO(n log n)です[定理4を参照]。
  2. Bの要素ごとに、最近傍の構造Aをクエリします。各クエリはO(log n)[定理15、固定次元を参照]であるため、Bのすべてのポイントのクエリ時間の合計はO(n log n)です。
  3. Aの各Bに最も近い点の結果が取得されたら、距離で並べられた構造体に入れます。これは、各結果を挿入するO(log n)、またはすべてのO(n log n)です。
  4. すべてのBが確認されたら、A(O(1))で、Aのポイントへの隣接距離が最も小さい順序付けられた構造のポイントBをすばやく取得できます。

各ステップの複雑さを見るとわかるように、全体の複雑度はO(n log n)です。古典的な論文を見ない現代の読者のために、これは多くのアルゴリズムの本、例えば、スキーナによる「アルゴリズム設計マニュアル」でカバーされています。


1
「たとえば、Artiumのソリューションはこの形式で書くことができ、完全に有効です。」-まあ、あなたがここで提案するものはもはや(純粋な)掃引線アルゴリズムではないので、私はそれについて知りません。
ラファエル

@ラファエル:確かにそうだ。スイープラインアルゴリズムは、ここで説明するように、ポイントを前処理して順序付けられた構造にします。私は彼の答えの下でフォーチュンのアルゴリズムにもリンクしました。これは、スイープラインアルゴリズムがボロノイアルゴリズムの単なる例であることを示しています。クエリ構造に汎用的なソリューションを採用した理由は、このために開発された幾何学的メカニズムが多数あるためです。
ex0du5

B

1

私が正しいかどうかはわかりませんが、この問題は計算幾何学の線形計画法で解決できる問題と非常によく似ています。ただし、LPへの削減は簡単ではありません。また、私の問題は、2次元空間でLPによって明らかに解決できる2組の点の間の最も薄い点を見つけることに関連しているようです。

O(nlogn)

要素の明確性の問題EのインスタンスをCに減らします。

  • S={a1,a2,a3,...,an}
  • ϵ
  • {(ai,0):1in}B={(ai+ϵ):1in}
  • O(n)
    • Sϵ

O(nlogn)

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