Проблема ближайшей пары точек или проблема ближайшей пары - это проблема вычислительной геометрии : для заданных n точек в метрическом пространстве найдите пару точек с наименьшим расстоянием между ними. Ближайшая парная задача для точек на евклидовой плоскости [1] была одной из первых геометрических задач, которые рассматривались у истоков систематического изучения вычислительной сложности геометрических алгоритмов.
Наивный алгоритм поиска расстояний между всеми парами точек в пространстве размерности d и выбора минимума требует времени O ( n 2 ) . Оказывается, проблема может быть решена за O ( n log n ) времени в евклидовом пространстве или L p пространстве фиксированной размерности d. [2] В алгебраического дерева решений модели вычислений , в O ( п войти п ) алгоритм является оптимальным, за счет уменьшения от проблемы единственности элемента. В вычислительной модели, которая предполагает, что нижняя функция вычислима за постоянное время, проблема может быть решена за время O ( n log log n ) . [3] Если мы позволим использовать рандомизацию вместе с функцией минимума, проблема может быть решена за время O ( n ) . [4] [5]
Алгоритм грубой силы [ править ]
Ближе весь пар точек может быть вычислен в O ( п 2 ) время , выполняя поиск грубой силы . Для этого можно вычислить расстояния между всеми парами точек n ( n - 1) / 2 , а затем выбрать пару с наименьшим расстоянием, как показано ниже.
minDist = бесконечность для i = 1 до длины ( P ) - 1 do для j = i + 1 до длины ( P ) действительно let p = P [ i ], q = P [ j ], если dist ( p , q ) < minDist тогда minDist = dist ( p , q ) closestPair = (p , q ) вернуть ближайшую пару
Планарный случай [ править ]
Проблема может быть решена за время O ( n log n ), используя рекурсивный подход « разделяй и властвуй» , например, следующим образом: [1]
- Отсортируйте точки по их x-координатам.
- Разделите набор точек на два подмножества одинакового размера вертикальной линией x = x mid .
- Решите задачу рекурсивно в левом и правом подмножествах. Это дает минимальные расстояния d Lmin и d Rmin для левой и правой стороны соответственно.
- Найдите минимальное расстояние d LRmin среди множества пар точек, в которых одна точка лежит слева от разделяющей вертикали, а другая - справа.
- Окончательный ответ - это минимум из d Lmin , d Rmin и d LRmin .
Оказывается, шаг 4 можно выполнить за линейное время. Опять же, наивный подход потребовал бы вычисления расстояний для всех пар левых и правых, т. Е. В квадратичном времени. Ключевое наблюдение основано на следующем свойстве разреженности набора точек. Мы уже знаем, что ближайшая пара точек не дальше, чем dist = min ( d Lmin , d Rmin ) . Следовательно, для каждой точки p слева от разделительной линии мы должны сравнить расстояния до точек, лежащих в прямоугольнике размеров (dist, 2 ⋅ dist)граничащие с разделительной линией с правой стороны, как показано на рисунке. Более того, этот прямоугольник может содержать не более шести точек с попарными расстояниями не менее d Rmin . Следовательно, достаточно вычислить не более 6 n расстояний влево-вправо на шаге 4. [6] Рекуррентное соотношение для количества шагов можно записать как T ( n ) = 2 T ( n / 2) + O ( n ) , которую мы можем решить, используя основную теорему для повторений «разделяй и властвуй», чтобы получить O ( n log n ) .
Поскольку ближайшая пара точек определяет ребро в триангуляции Делоне и соответствует двум соседним ячейкам на диаграмме Вороного , ближайшая пара точек может быть определена за линейное время, когда нам дана одна из этих двух структур. Вычисление триангуляции Делоне или диаграммы Вороного занимает время O ( n log n ) . Эти подходы неэффективны для измерения d > 2 , в то время как алгоритм «разделяй и властвуй» можно обобщить, чтобы взять время O ( n log n ) для любого постоянного значения d с экспоненциальной зависимостью от d. [7]
Задача динамической ближайшей пары [ править ]
Версия динамической для задачи ближе пары формулируется следующим образом :
- При наличии динамического набора объектов найдите алгоритмы и структуры данных для эффективного пересчета ближайшей пары объектов каждый раз, когда объекты вставляются или удаляются.
Если ограничивающая рамка для всех точек известна заранее и доступна функция пола с постоянным временем, то была предложена ожидаемая пространственная структура данных O ( n ), которая поддерживает вставки и удаления с ожидаемым временем O (log n ) и постоянное время запроса. . При модификации для модели алгебраического дерева решений вставки и удаления потребуют ожидаемого времени O (log 2 n ). [8] Однако стоит отметить, что сложность процитированного выше динамического алгоритма ближайшей пары экспоненциальна в размерности d , и поэтому такой алгоритм становится менее подходящим для задач большой размерности.
Алгоритм для динамической задачи о ближайших парах в d- мерном пространстве был разработан Сергеем Беспамятных в 1998 году. [9] Точки можно вставлять и удалять за O (log n ) раз на точку (в худшем случае).
См. Также [ править ]
- ГИС
- Поиск ближайшего соседа
Примечания [ править ]
- ^ а б М. И. Шамос и Д. Хоуи . «Ближайшие проблемы». В Proc. 16-й ежегодный симпозиум IEEE по основам информатики (FOCS), стр. 151–162, 1975 г. (DOI 10.1109 / SFCS.1975.8 )
- ^ К.Л. Кларксон, "Быстрые алгоритмы для задачи всех ближайших соседей", FOCS 1983.
- ^ С. Форчун и Дж. Э. Хопкрофт. «Заметка об алгоритме ближайшего соседа Рабина». Письма об обработке информации, 8 (1), стр. 20–23, 1979
- ^ С. Хуллер и Ю. Матиас. Простой алгоритм рандомизированного сита для задачи ближайшей пары. Инф. Вычисл., 118 (1): 34–37, 1995.
- ^ Ричард Липтон (24 сентября 2011 г.). «Рабин подбрасывает монету» .
- ^ Кормена, Лейзерсон, Ривест и Stein, 2001.
- ^ Сури, Субхаш. «Проблема ближайшей пары» (PDF) . Калифорнийский университет в Санта-Барбаре.
- ^ Мордехай Голин, Раджив Раман, Кристиан Шварц, Мишель Смид, «Рандомизированные структуры данных для динамической проблемы ближайших пар», SIAM J. Comput. , vo. 27, нет. 4 января 1998 г., предварительная версия сообщена на 4-м Annu. ACM-SIAM Symp. по дискретным алгоритмам, стр. 301–310 (1993)
- ^ Сергей Беспамятных, Оптимальный алгоритм обслуживания ближайшей пары. Дискретное вычисление. Геом., 19: 175-195, 1998.
Ссылки [ править ]
- Томас Х. Кормен , Чарльз Э. Лейзерсон , Рональд Л. Ривест и Клиффорд Стейн . Введение в алгоритмы , второе издание. MIT Press и McGraw-Hill, 2001. ISBN 0-262-03293-7 . Страницы 957–961 раздела 33.4: Поиск ближайшей пары точек.
- Джон Кляйнберг; Эва Тардос (2006). Разработка алгоритмов . Эддисон Уэсли.CS1 maint: несколько имен: список авторов ( ссылка )
- Конспект лекций UCSB
- rosettacode.org - ближайшая пара точек, реализованная на нескольких языках программирования
- Алгоритм строчной развертки для задачи ближайшей пары