Znajdź najkrótszą parą odległość punktów w o (n log n)?


11

Studenci, których nadzoruję, otrzymali następujące ćwiczenie:

Biorąc pod uwagę punktów na płaszczyźnie, opracuj algorytm, który znajdzie parę punktów, których odległość jest minimalna wśród wszystkich par punktów. Algorytm powinien działać w czasie .o ( N 2 )no(n2)

Istnieje (stosunkowo) prosty algorytm dzielenia i zdobywania, który rozwiązuje zadanie w czasie .Θ(nlogn)

Pytanie 1 : Czy istnieje algorytm, który rozwiązuje dany problem dokładnie w najgorszym przypadku ?o(nlogn)

Podejrzewałem, że może to być możliwe, wynik, który pamiętam z niektórych wystąpień (docenienie). Stwierdzono, że coś wzdłuż linii tego nie więcej niż stała liczba punktów może być ułożona w płaszczyźnie wokół jakiegoś punktu wewnątrz okręgu o promieniu , z minimalna odległość między dowolnymi dwoma zaangażowanymi punktami. Myślę , punkty tworzących sześciokąt równoboczny o w środku (w przypadku ekstremalnych). p r R r c = 7 pcNprRrc=7p

W takim przypadku następujący algorytm powinien rozwiązać problem w krokach.n

fun mindist [] | p::[] = INFINITY
|   mindist p1::p1::[] = dist(P[0], P[1])
|   mindist p::r = let m = mindist(r) in
                     min(m, nextNeighbour(p, r, m))
                   end

Zauważ, że jest (osiągając) w czasie liniowym, ponieważ tylko liczba stała punktów rmoże być farer z dala od mz p(zakładając, że powyższe oświadczenie); tylko te punkty muszą zostać zbadane w celu znalezienia nowego minimum. Oczywiście jest pewien haczyk; jak wdrażasz nextNeighbour(być może z przetwarzaniem wstępnym w czasie liniowym)?

Pytanie 2 : Niech zbiór punktów i punkt . Niech przy pomocyp R m RRpRmR

mmin{dist(p1,p2)p1,p2R}

i

Rp,m:={ppRdist(p,p)m} .

Załóżmy, że jest skończony. Czy można znaleźć przy minimalnej odległości od w (zamortyzowanym) czasie ? (Możesz założyć, że jest konstruowane przez dodawanie badanych punktów jeden po drugim.)Rp,mpRp,mpO(1)Rp


2
Proponuję wyszukać jako „słowo kluczowe najbliższą parę”.
Yoshio Okamoto,

To wszystko jest teraz standardowe, patrz dwa pierwsze rozdziały tutaj: goo.gl/pLiEO
Sariel Har-Peled

Ps. Jeśli chcesz spodziewanego czasu, możesz nawet obliczyć triangulację Delaunaya, która zawiera minimalną odległość.
domotorp

Po pytaniu 1 piszesz „nie więcej niż stała liczba punktów może być ułożona w płaszczyźnie wokół jakiegoś punktu p wewnątrz okręgu o promieniu r, przy r minimalnej odległości między p a dowolnym innym punktem”. Z pewnością nie jest to prawdą: możesz wziąć dowolną liczbę punktów na okręgu o promieniu r. Twoje stwierdzenie jest prawdziwe, jeśli r jest minimalną odległością między dowolnymi dwoma punktami, w którym to przypadku dowód jest dość prosty.
domotorp

pierwsze pytanie to podręczniki, jak już wspomniano: zdecydowanie nie poziom badań. Nie rozumiem pytanie drugie: dla każdego The prosicie albo nie istnieje lub jest najbliższy sąsiad w . więc czym to się różni od pytania 1? nad czym amortyzujesz (tj. jeśli jest to pytanie dotyczące struktury danych, jakie są aktualizacje i zapytania)? mppR
Sasho Nikolov

Odpowiedzi:


12

Nie można rozwiązać problemu w czasie krótszym niż w standardowych modelach, np. Przy użyciu drzew decyzyjnych algebraicznych. Wynika to z pracy Yao i Ben-Or, która pokazuje, że w tym modelu nie można zdecydować, czy zbiór liczb wejściowych jest inny, czy nie (patrz http://people.bath.ac.uk/masnnv /Teaching/AAlg11_8.pdf ). W przypadku problemu wyobraź sobie, że wszystkie znajdują się na linii rzeczywistej. Jeśli dwa punkty są takie same, wynik będzie równy dwóm punktom z odległością zero, podczas gdy w przeciwnym razie nie, więc rozwiązanie problemu rozwiązałoby również problem LICZBY ODLEGŁYCH. Jeśli chcesz założyć, że wszystkie twoje punkty są różne, po prostu dodaj docnlognniϵxidane wejściowe problemu DISTINCT NUMBERS, w tym przypadku, jeśli twój wynik wynosi co najwyżej , wówczas liczby nie są różne. (Chociaż w tym przypadku musisz użyć obiecanej wersji, w której różnica dowolnych dwóch odrębnych liczb wynosi co najmniej , ale myślę, że ten sam dowód działa, aby pokazać, że potrzebujesz również w tym walizka.)nϵ2nϵΩ(nlogn)


Rzeczywiście, dzięki. To również odpowiada na pytanie 2 (negatywnie).
Raphael

Problem, o którym wspominasz, najwyraźniej znany jest również jako problem odrębności elementu .
Raphael

Odniesienie @ Sariel Har-Peled ( goo.gl/pLiEO ) przedstawia praktyczny algorytm czasu liniowego do znajdowania najbliższej pary. Ten dokument bezpośrednio odnosi się do tego argumentu i wyjaśnia, że ​​nie ma on zastosowania, ponieważ algorytm wykorzystuje mocniejszy model obliczeniowy.
kevin cline

1
Tak, ale pytanie dotyczy konkretnie najgorszego czasu działania. Ale zgadzam się, że wszystkie moje obserwacje pojawiają się już w pracy Sariela.
domotorp


0

O ile rozumiem pytanie 2, algorytm Rabina również stanowi na to odpowiedź. Na każdym etapie struktura danych jest siatką o szerokości komórki mniejszej niż najmniejsza dotychczasowa odległość między parami punktów, podzielona przez (tak, że żadna komórka nie zawiera więcej niż jednego punktu). Aby odpowiedzieć na pytanie w pytaniu 2, wystarczy zmapować do komórki w siatce i spojrzeć na stałą liczbę komórek wokół niej. Dzięki analizie algorytmu, jeśli zestaw punktów wejściowych jest badany w kolejności losowej, wówczas zamortyzowany czas aktualizacji dla siatki wynosi na oczekiwany nowy punkt.2pO(1)


BTW Nie odnoszę się do wersji algorytmu, jak to opisuje Lipton, ale jak to opisano w pierwszym komentarzu (i książce Kleinberga i Tardosa).
Sasho Nikolov

Tylko w oczekiwaniu, patrz odpowiedź domotorps.
Raphael

nigdzie nie widzę, żebyś chciał ograniczyć się do algorytmów deterministycznych. Algorytm Rabina jest interesujący właśnie dlatego, że omija dolne granice drzewa decyzyjnego (jest to podobne do dolnych granic dla algorytmu sortowania porównawczego vs. algorytmów sortowania liczb całkowitych). btw, prawdopodobnie jest więcej, niż rabin używa, aby ominąć dolną granicę, a mianowicie hashowanie używane do uzyskania dostępu do siatki
Sasho Nikolov

4
Re „więcej niż Rabin używa”: także możliwość zaokrąglania liczb rzeczywistych do liczb całkowitych. Trzeba z tym bardzo uważać: jeśli skonfigurujesz model obliczeń, w którym można wykonywać standardowe operacje arytmetyczne i zaokrąglać liczby rzeczywiste, wszystko w stałym czasie na operację, wówczas możliwe jest rozwiązanie problemów związanych z PSPACE w czasie wielomianowym w tym modelu. Ale Rabin tylko zaokrągla liczby wejściowe (do różnych poziomów precyzji w różnych iteracjach), a ta ograniczona forma zaokrąglania nie jest problematyczna.
David Eppstein,

@SashoNikolov Szukałem najgorszego przypadku w , więc także najgorszego przypadku w pytaniu 2. To nie ma nic wspólnego z tym, czy algorytm jest deterministyczny. Nie jestem pewien, co się stanie, jeśli połączysz oczekiwany i zamortyzowany czas. o(nlogn) O(1)
Raphael
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.