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ó .
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 closestPairA probléma időben megoldható egy rekurzív oszd meg és uralkodj megközelítéssel , például [1] :
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 .
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).