2Dの2つのセット間で最も近いポイントのペア


11

2次元平面に2セットのポイントあります。私はポイントの最も近いペアを見つけるしたいなど、、との間のユークリッド距離極力小さくなります。これはどのくらい効率的に行うことができますか?時間で実行できますか、?、S 、T 、S ∈ S T ∈ T S 、T O (N ログN )N = | S | + | T |S,Ts,ts∈St∈Ts,tO(nlog⁡n)n=|S|+|T|

単一のセットが与えられた場合、標準の分割統治アルゴリズムを使用して時間で最も近い点ペアを見つけることが可能であることはわかっています。ただし、または内の最も近い2つのポイント間の距離と、これらのセット全体の最も近い2つのポイント間の距離との間には関係がないため、そのアルゴリズムは2つのセットの場合に一般化していないようです。、S 、S ' ∈ S O (N ログN )Ss,s′∈SO(nlog⁡n)ST

セットを -dツリーに格納し、次にについて、最近傍クエリを使用して最も近い点を見つけることを考えました。ただし、これの最悪の場合の実行時間は、時間と同じくらい悪い場合があります。点あればという結果がありますランダムに分布している場合、クエリごとに予想される実行している時間は私たちが期待ランニングタイムとアルゴリズム得ると思いますので、我々場合は、ポイントがランダムに分布していることが保証されていました-しかし、ポイントのコレクション(必ずしもランダムに分布しているとは限りません)で機能するアルゴリズムを探しています。Tks∈STsO(n2)TO(log⁡n)O(nlog⁡n)

動機:効率的なアルゴリズムは、この他の質問に役立ちます。

回答:


10

はい、これは時間です。Tのボロノイ図を作成します。次いで、各点S ∈ S、それに含まれるボロノイ図のどのセルを見つける。そのセルの中心が点であるT ∈ Tに最も近いS。O(nlog⁡n)Ts∈St∈Ts

ボロノイ図を時間で作成でき、各クエリ(sを含むセルを見つける)はO (log n )時間で実行できるため、合計実行時間はO (n log n )時間です。O(nlog⁡n)sO(log⁡n)O(nlog⁡n)


素敵な、私が思いつくよりもはるかに単純です:)。
— aelguindy 2016年

素敵なアプローチです!ただし、リンクは特にクエリの側面で役立ちます。一般的な点の位置の問題が時間で解決できることを示すWikipediaのページを見つけることができましたが、ボロノイセルの特殊なケースに適した方法はありますか?私の検索は上がっこの回答それを行い、O (n個)の道を。O(log⁡n)O(n)
— j_random_hacker

Tn=|S|+|T|O(n)

1
nO(n)≤6n

これは、math.stackexchangeに関するこの質問の時点では正しいようです。
— アルビエノウ

5

L1

dO(nlogd−1⁡n)

O(nlog⁡n)O(nlog2⁡n)

S,TS−δzTδzzδzδz


P2pmPPqmQQ

1
l

リンクが壊れています:(
— Keerthana Gopalakrishnan '06 / 12/18
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.