Ближайшая пара точек между двумя наборами в 2D

11

У меня есть два набора точек в 2-мерной плоскости. Я хочу найти ближайшую пару точек такую, чтобы , , а евклидово расстояние между как можно меньше. Насколько эффективно это можно сделать? Можно ли это сделать за , где?s , t s S t T s , t O ( n log n ) n = | S | + | T |S,Ts,TsSTTs,TО(NжурналN)Nзнак равно|S|+|T|

Я знаю, что если мне дать один набор , то можно найти ближайшую пару точек за времени, используя стандартный алгоритм «разделяй и властвуй» . Однако этот алгоритм, похоже, не обобщает случай двух наборов, потому что нет никакой связи между расстоянием между двумя ближайшими точками в пределах или и расстоянием между двумя ближайшими точками в этих наборах.s , s 'S О ( п войти п )Ss,s'SО(NжурналN)TST

Я думал о сохранении множества в k- d дереве, затем для каждого s S , используя запрос ближайшего соседа, чтобы найти ближайшую точку в T к s . Однако время выполнения в худшем случае может быть таким же плохим, как время O ( n 2 ) . Есть результаты, говорящие, что если точки T распределены случайным образом, то ожидаемое время выполнения для каждого запроса равно O ( log n ) , поэтому мы получили бы алгоритм с ожидаемым временем выполнения O ( n log n ).TКsSTsО(N2)TО(журналN)О(NжурналN) если бы мы были уверены, что точки распределены случайным образом - но я ищу алгоритм, который будет работать для любого набора точек (не обязательно случайного распределения).

Мотивация: эффективный алгоритм был бы полезен для этого другого вопроса .

DW
источник

Ответы:

10

Да, это может быть время. Построить диаграмму Вороного для T . Затем, для каждой точки сек S , выяснить , какие ячейки диаграммы Вороного он содержится в. В центре этой ячейки является точка T T , что является самым близким к с .О(NжурналN)TsSTTs

Вы можете построить диаграмму Вороного за , и каждый запрос (найдите ячейку, содержащую s ) можно выполнить за O ( log n ) , поэтому общее время выполнения составляет O ( n log n ) .О(NжурналN)sО(журналN)О(NжурналN)

DW
источник
Хорошо, намного проще, чем я мог придумать :).
Aelguindy
Хороший подход! Ссылки помогут , хотя, особенно для стороны запроса вещей. Я мог бы найти страницу Википедии , показывая , что общая точка задачи размещения может быть решена в времени, но есть лучше способ для особого случая клеток Вороного? Мой поиск только появился этот ответ , который делает это в O ( п ) пути. О(журналN)О(N)
j_random_hacker
Сложность задачи определения местоположения точки обычно дается в терминах общего числа вершин (здесь диаграммы Вороного). Это число, вероятно , больше , чем количество точек в , и даже п = | S | + | T | , Я не уверен , что если число вершин ограничено O ( п ) , не так ли? TNзнак равно|S|+|T|О(N)
Albjenow
1
@Albjenow, я не уверен, что это решает вашу проблему, но да, в двух измерениях я считаю, что число вершин в диаграмме Вороного в точках равно O ( n ) (кажется, я помню, что 6 n или что-то вроде того). NО(N)6N
DW
Это кажется правильным , как в этом вопросе на math.stackexchange.
Albjenow
5

Я расширяю мой комментарий в ответ, так как я понял, пол-удовлетворительный ответ. Это только решает проблему для -Расстояние. Этот ответ в основном неверен.L1

Эта статья решает проблему нахождения ближайшей пары точек в измерениях для случая, когда множества разделены гиперплоскостью в O ( n log d - 1 n ) .dO(nlogd1n)

Для двух измерений это решает случай в ответе, который вы называете своей основной мотивацией для вашего вопроса в . Его также можно использовать для решения общего случая двумерной задачи в O ( n log 2 n ) .O(nlogn)O(nlog2n)

Даны два множества точек в 2D, вставлять их в 3D пространстве, перемещая множество S некоторыми - б г и множество Т от б г в г направлении. Выбор б г может быть сделан , чтобы не повлиять на выбор ближайших паров точек, взяв б г будет меньше , чем точность ваших входных точек (и удвоение точности бит для каждого входа координат). Используйте алгоритм 3D из цитируемой статьи.S,TSδZTδzzδzδz

aelguindy
источник
+1, но несколько вещей об этой статье (которую я только начал читать): (i) они утверждают, что решают проблему только для случая прямолинейного (манхэттенского) расстояния; (ii) Я не понимаю, почему они думают, что область на p. 2 содержит ровно 1 балл. Я предположил, что p m - это точка в P с медианной координатой y в P , а q m - это точка в Q с медианной координатой y в Q , но я не понимаю, как вышесказанное может следовать из этого , P2pmPPqmQQ
j_random_hacker
1
@j_random_hacker статья только решает проблему для расстояния L1, и этот ответ неверен :). И я думаю, что это буква :). l
aelguindy
Ссылка не работает :(
Keerthana Gopalakrishnan