A legközelebbi pont pár problémája

A legközelebbi pár probléma egy számítási geometriai  probléma . Adott n pont egy metrikus térben , meg kell találnia egy olyan pontpárt , amelyek között a legkisebb távolság van.

Az euklideszi sík legközelebbi pontproblémája [1] volt az egyik első olyan geometriai probléma, amelyet szisztematikusan tanulmányoztak a geometriai algoritmusok számítási összetettsége szempontjából .

Egy naiv algoritmus a d dimenziójú tér összes párja közötti távolság megtalálására és a legkisebbik kiválasztására O ( n 2 ) időbe telik . Kiderül, hogy a probléma időben megoldható euklideszi térben vagy d rögzített méretű L p térben [2] . Az algebrai döntési fa számítási modellben az O( n log n ) idejű algoritmus optimális, ha csökkentjük az elem egyediségi problémájából . Egy olyan számítási modellben, amely feltételezi, hogy a padló függvény kiszámítása állandó időben történik, a probléma időben megoldható [3] . Ha megengedjük a véletlenszerűsítés alkalmazását a padlófüggvénnyel együtt , a probléma O( n ) [4] [5] idő alatt megoldható .

Brute force algoritmus

A legközelebbi pont párja kiszámítható O ( n2 ) időben egy teljes felsorolással . Ehhez kiszámolhatja az összes n ( n − 1) / 2 pontpár közötti távolságot, majd az alábbiak szerint kiválaszthatja a legkisebb távolságú párt.

minDist = végtelen , ha i = 1 a hosszhoz( P ) - 1 ha j = i + 1 a hosszúsághoz( P ) legyen p = P [ i ], q = P [ j ] , ha dist ( p , q ) < minDist : minDist = dist ( p , q ) closestPair = ( p , q ) return closestPair

Planar case

A probléma időben megoldható egy rekurzív oszd meg és uralkodj megközelítéssel , például [1] :

  1. Rendezd a pontokat x-koordinátáik szerint;
  2. A ponthalmazt felosztjuk a függőleges egyenes két egyenlő nagyságú részhalmazára ;
  3. A feladatot rekurzívan oldjuk meg a bal és a jobb oldalon. Ez egy bal oldali minimális távolságot és egy jobb oldali minimális távolságot eredményez;
  4. Megtaláljuk a minimális távolságot a pontpárok között, amelyek közül az egyik pont a függőleges vonaltól balra, a másik pont az egyenestől jobbra található;
  5. A végső válasz a minimális érték lesz a , és között .

Kiderült, hogy a 4. lépést lineáris idő alatt lehet végrehajtani. A naiv megközelítés ismételten megkövetelné a távolságok kiszámítását az összes bal/jobb párhoz, azaz négyzetes időt. A kulcsfontosságú megfigyelés a ponthalmaz alábbi ritkasági tulajdonságán alapul. Azt már tudjuk, hogy a legközelebbi pontpárok nincsenek távolabb egymástól, mint . Ezért minden , az osztóvonaltól balra lévő p pontban össze kell hasonlítanunk a távolságokat azokkal a pontokkal, amelyek egy (dist, 2 ⋅ dist) méretű téglalapban helyezkednek el , az ábrán látható módon. És ez a téglalap legfeljebb hat pontot tartalmazhat, amelyek páronkénti távolsága nem kisebb, mint . Így a 4. lépésnél elegendő 6 n távolságot kiszámítani [6] . A lépések számának ismétlődési relációja így írható fel , ami az oszd meg és uralkodj ismétlődés alaptételével oldható meg , ami a következőt adja .

Mivel egy Delaunay-háromszögelésben a legközelebbi pont párja határoz meg egy élt, és egy Voronoi-diagram két szomszédos cellájának felel meg , a legközelebbi pontok párja meghatározható lineáris időben, ha a két struktúra közül az egyik adott. Egy Delaunay-háromszögelés vagy egy Voronoi-diagram kiszámítása időt vesz igénybe . Ezek a megközelítések nem hatékonyak d >2 dimenziók esetén, míg az oszd meg és uralkodj algoritmus futásidejűre általánosítható a d dimenzió bármely állandó értékére .

Dinamikus legközelebbi pár probléma

A legközelebbi pontpár problémájának dinamikus változata

Ha minden pontra előre ismert a határolókeret , és rendelkezésre áll egy állandó futási idejű padlófüggvény, akkor egy O( n ) várt memóriájú adatstruktúrát javasoltak, amely támogatja a beillesztés és törlés várható idejét (átlagos idejét). az O(log n ) és egy állandó lekérdezési idő . Ha a problémát egy algebrai döntési fa modellhez módosítják, a beszúrások és törlések átlagos időt igényelnek [7] . Meg kell jegyezni, hogy a fenti dinamikus probléma összetettsége egy legközelebbi pontpárra exponenciálisan függ a d dimenziótól , így az algoritmus kevésbé alkalmas nagydimenziós feladatokra.

Szergej Bespamyatnykh 1998-ban dolgozott ki algoritmust egy d dimenziójú térben lévő legközelebbi pontpár dinamikus problémájára [8] . A pontokat O(log n ) idő alatt lehet beilleszteni és eltávolítani pontonként (legrosszabb eset).

Lásd még

Jegyzetek

  1. 1 2 Shamos, Hoey, 1975 , p. 151-162.
  2. Clarkson, 1983 .
  3. Fortune, Hopcroft, 1979 , p. 20-23.
  4. Khuller és Matias 1995 , p. 34-37.
  5. Richard Lipton. Rabin feldob egy érmét (2011. szeptember 24.). Letöltve: 2019. február 19. Az eredetiből archiválva : 2019. február 16.
  6. Cormen, Leiserson, Rivest, Stein, 2001 , p. 957-961 33.4: A legközelebbi pontpár megkeresése.
  7. Golin, Raman, Schwarz, Smid, 1998 .
  8. Bespamyatnikh, 1998 , p. 175-195.

Irodalom