Задача пошуку найближчої пари точок належить до задач обчислювальної геометрії: дано n точок в метричному просторі, знайти пару точок з найменшою відстанню між ними. Задача найближчої пари точок в евклідовій площині була однією з перших геометричних задач, яка вирішувалась на початку систематичного вивчення обчислювальної складності геометричних алгоритмів.
«Наївний» алгоритм полягає в знаходженні відстаней між усіма парами точок в просторі даної розмірності і виборі мінімальної, це вимагає часу. Виявляється, що ця проблема може бути вирішена за часу в Евклідовому просторі або просторі Lp фіксованої розмірності d. В алгебраїчному дереві рішень моделі обчислень, алгоритм складності є оптимальним. В обчислювальній моделі, яка передбачає, що функція знаходить результат за постійний час, кажуть, що проблема може бути вирішена за часу. Якщо допускається рандомізація, з використання функції підлоги, то проблема може бути вирішена за часу.
Алгоритм перебору
Найближча пара точок може бути знайдена за час O(n2) з допомогою пошуку грубою силою. Щоб зробити це, можна обчислити відстані між усіма парами точок, потім вибрати пару з найменшою відстанню, як показано нижче.
minDist = infinity for i = 1 to length(P) - 1 for j = i + 1 to length(P) let p = P[i], q = P[j] if dist(p, q) < minDist: minDist = dist(p, q) closestPair = (p, q) return closestPair
Планарний випадок
Проблема може бути вирішена за часу, використовуючи рекурсивний підхід розділяй і володарюй, наприклад, наступним чином:
- Сортування точок відповідно до їх x-координат.
- Поділ множини точок на два рівні за розміром підмножини по вертикальній лінії .
- Вирішити цю проблему рекурсивно в лівій і правій підмножині.
- Знайти мінімальну відстань серед множини пар точок, в яких одна точка лежить ліворуч від ділення по вертикалі, а інша точка праворуч.
- Відповідь є мінімальним серед , та .
Виявляється, що 4-ий крок може бути виконаний за лінійний час. Знову ж, наївний підхід вимагає розрахунок відстаней для всіх пар зліва на право, тобто за квадратичний час. Ключове спостереження засноване на властивості розрідженості множини точок. Ми вже знаємо, що найближча пара точок не далі ніж . Таким чином, для кожної точки p ліворуч від розділової лінії, необхідно порівняти відстань до точки, які лежать у прямокутнику розмірів праворуч від розділової лінії, як показано на малюнку. Більш того, цей прямокутник може містити не більше шести точок з попарних відстаней принаймні . Таким чином, досить обчислити максимально 6n зліва направо відстаней на 4-му кроці. Рекурентне співвідношення для числа кроків може бути записане у вигляді , яке можна вирішити, використовуючи (майстер-метод), щоб отримати .
Оскільки найближча пара точок визначає край у тріангуляції Делоне, і відповідає двом сусіднім коміркам на діаграмі Вороного, то найближча пара точок може бути визначена за лінійний час у разі використання однієї з цих структур. Обчислення чи то тріангуляції Делоне, чи діаграми Вороного займає часу. Ці підходи не є ефективними для розмірності , тоді як алгоритм розділяй і володарюй можна узагальнити і він буде виконуватись за час для будь-якого сталого значення d[].
Динамічна задача знаходження пари найближчих точок
Динамічна задача знаходження пари найближчих точок формулюється так:
- Для динамічної множини об'єктів, знайти алгоритми і структури даних для ефективного перерахунку найближчої пари об'єктів щоразу, коли об'єкти додаються або видаляються.
Див. також
Посилання
- Т. Кормен; Ч. Лейзерсон; Р. Рівест; К. Стайн (2009) [1990]. 33.4: Пошук найближчої пари точок. Вступ до алгоритмів (вид. 3rd). MIT Press і McGraw-Hill. ISBN .
- Jon Kleinberg; Éva Tardos (2006). Algorithm Design. Addison Wesley.
- UCSB Lecture Notes
- rosettacode.org — Closest pair of points implemented in multiple programming languages
- Line sweep algorithm for the closest pair problem
Примітки
- Шеймос, Майкл; Хой, Ден (1975). . 16-й річний симпозіум у Фонді комп'ютерних наук IEEE. с. 151—162. doi:10.1109/SFCS.1975.8. Архів оригіналу за 18 травня 2015. Процитовано 30 травня 2017.
- Кларксон, К. Л. (1983). Fast algorithms for the all nearest neighbors problem. FOCS.
- Фортуна, С.; Гопкрофт, Дж. Є. (1979). A note on Rabin's nearest-neighbor algorithm. Information Processing Letters. 8 (1): 20—23.
- Хуллер, С.; Матіас, І. (1995). A simple randomized sieve algorithm for the closest-pair problem. Inf. Comput. 118 (1): 34—37.
- Ліптон, Річард (24 вересня 2011). . Архів оригіналу за 16 лютого 2019. Процитовано 30 травня 2017.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Zadacha poshuku najblizhchoyi pari tochok nalezhit do zadach obchislyuvalnoyi geometriyi dano n tochok v metrichnomu prostori znajti paru tochok z najmenshoyu vidstannyu mizh nimi Zadacha najblizhchoyi pari tochok v evklidovij ploshini bula odniyeyu z pershih geometrichnih zadach yaka virishuvalas na pochatku sistematichnogo vivchennya obchislyuvalnoyi skladnosti geometrichnih algoritmiv Najblizhcha para zafarbovana v chervonij kolir Nayivnij algoritm polyagaye v znahodzhenni vidstanej mizh usima parami tochok v prostori danoyi rozmirnosti i vibori minimalnoyi ce vimagaye O d n 2 displaystyle O dn 2 chasu Viyavlyayetsya sho cya problema mozhe buti virishena za O n log n displaystyle O n log n chasu v Evklidovomu prostori abo prostori Lp fiksovanoyi rozmirnosti d V algebrayichnomu derevi rishen modeli obchislen algoritm skladnosti O n log n displaystyle O n log n ye optimalnim V obchislyuvalnij modeli yaka peredbachaye sho funkciya znahodit rezultat za postijnij chas kazhut sho problema mozhe buti virishena za O n log log n displaystyle O n log log n chasu Yaksho dopuskayetsya randomizaciya z vikoristannya funkciyi pidlogi to problema mozhe buti virishena za O n displaystyle O n chasu Algoritm pereboruNajblizhcha para tochok mozhe buti znajdena za chas O n2 z dopomogoyu poshuku gruboyu siloyu Shob zrobiti ce mozhna obchisliti vidstani mizh usima C n 2 n n 1 2 displaystyle C n 2 n n 1 2 parami tochok potim vibrati paru z najmenshoyu vidstannyu yak pokazano nizhche minDist infinity for i 1 to length P 1 for j i 1 to length P let p P i q P j if dist p q lt minDist minDist dist p q closestPair p q return closestPairPlanarnij vipadokRozdilyaj ta volodaryuj usichena smuga dlya perevirki Problema mozhe buti virishena za O n log n displaystyle O n log n chasu vikoristovuyuchi rekursivnij pidhid rozdilyaj i volodaryuj napriklad nastupnim chinom Sortuvannya tochok vidpovidno do yih x koordinat Podil mnozhini tochok na dva rivni za rozmirom pidmnozhini po vertikalnij liniyi x x m i d displaystyle x x mid Virishiti cyu problemu rekursivno v livij i pravij pidmnozhini Znajti minimalnu vidstan d L R m i n displaystyle d LR min sered mnozhini par tochok v yakih odna tochka lezhit livoruch vid dilennya po vertikali a insha tochka pravoruch Vidpovid ye minimalnim sered d L m i n displaystyle d L min d R m i n displaystyle d R min ta d L R m i n displaystyle d LR min Viyavlyayetsya sho 4 ij krok mozhe buti vikonanij za linijnij chas Znovu zh nayivnij pidhid vimagaye rozrahunok vidstanej dlya vsih par zliva na pravo tobto za kvadratichnij chas Klyuchove sposterezhennya zasnovane na vlastivosti rozridzhenosti mnozhini tochok Mi vzhe znayemo sho najblizhcha para tochok ne dali nizh d i s t min d L m i n d R m i n displaystyle dist min d L min d R min Takim chinom dlya kozhnoyi tochki p livoruch vid rozdilovoyi liniyi neobhidno porivnyati vidstan do tochki yaki lezhat u pryamokutniku rozmiriv d i s t 2 d i s t displaystyle dist 2 dist pravoruch vid rozdilovoyi liniyi yak pokazano na malyunku Bilsh togo cej pryamokutnik mozhe mistiti ne bilshe shesti tochok z poparnih vidstanej prinajmni d R m i n displaystyle d R min Takim chinom dosit obchisliti maksimalno 6n zliva napravo vidstanej na 4 mu kroci Rekurentne spivvidnoshennya dlya chisla krokiv mozhe buti zapisane u viglyadi T n 2 T n 2 O n displaystyle T n 2 T left frac n 2 right O n yake mozhna virishiti vikoristovuyuchi majster metod shob otrimati O n log n displaystyle O n log n Oskilki najblizhcha para tochok viznachaye kraj u triangulyaciyi Delone i vidpovidaye dvom susidnim komirkam na diagrami Voronogo to najblizhcha para tochok mozhe buti viznachena za linijnij chas u razi vikoristannya odniyeyi z cih struktur Obchislennya chi to triangulyaciyi Delone chi diagrami Voronogo zajmaye O n log n displaystyle O n log n chasu Ci pidhodi ne ye efektivnimi dlya rozmirnosti d gt 2 displaystyle d gt 2 todi yak algoritm rozdilyaj i volodaryuj mozhna uzagalniti i vin bude vikonuvatis za chas O n log n displaystyle O n log n dlya bud yakogo stalogo znachennya d dzherelo Dinamichna zadacha znahodzhennya pari najblizhchih tochokDinamichna zadacha znahodzhennya pari najblizhchih tochok formulyuyetsya tak Dlya dinamichnoyi mnozhini ob yektiv znajti algoritmi i strukturi danih dlya efektivnogo pererahunku najblizhchoyi pari ob yektiv shorazu koli ob yekti dodayutsya abo vidalyayutsya Div takozhGeoinformacijna sistema Poshuk najblizhchogo susida Zadacha pro pokrittya mnozhiniPosilannyaT Kormen Ch Lejzerson R Rivest K Stajn 2009 1990 33 4 Poshuk najblizhchoyi pari tochok Vstup do algoritmiv vid 3rd MIT Press i McGraw Hill ISBN 0 262 03384 4 Jon Kleinberg Eva Tardos 2006 Algorithm Design Addison Wesley UCSB Lecture Notes rosettacode org Closest pair of points implemented in multiple programming languages Line sweep algorithm for the closest pair problemPrimitkiShejmos Majkl Hoj Den 1975 16 j richnij simpozium u Fondi komp yuternih nauk IEEE s 151 162 doi 10 1109 SFCS 1975 8 Arhiv originalu za 18 travnya 2015 Procitovano 30 travnya 2017 Klarkson K L 1983 Fast algorithms for the all nearest neighbors problem FOCS Fortuna S Gopkroft Dzh Ye 1979 A note on Rabin s nearest neighbor algorithm Information Processing Letters 8 1 20 23 Huller S Matias I 1995 A simple randomized sieve algorithm for the closest pair problem Inf Comput 118 1 34 37 Lipton Richard 24 veresnya 2011 Arhiv originalu za 16 lyutogo 2019 Procitovano 30 travnya 2017