Verschiedene Lösungen für das NNS-Problem wurden vorgeschlagen. Die Qualität und Nützlichkeit der Algorithmen wird durch die zeitliche Komplexität von Abfragen sowie die räumliche Komplexität von Suchdatenstrukturen bestimmt, die beibehalten werden müssen. Die informelle Beobachtung, die üblicherweise als Fluch der Dimensionalität bezeichnet wird, besagt, dass es keine universelle exakte Lösung für NNS im hochdimensionalen euklidischen Raum unter Verwendung von Polynomvorverarbeitung und polylogarithmischer Suchzeit gibt.,

Exact methodsEdit

Linear searchEdit

Die einfachste Lösung für das NNS-Problem besteht darin, den Abstand vom Abfragepunkt zu jedem anderen Punkt in der Datenbank zu berechnen und den „bisher besten“zu verfolgen. Dieser Algorithmus, der manchmal als naiver Ansatz bezeichnet wird, hat eine Laufzeit von O(dN), wobei N die Kardinalität von S und d die Dimensionalität von M.Es sind keine Suchdatenstrukturen aufrechtzuerhalten, so dass die lineare Suche keine Raumkomplexität über die Speicherung der Datenbank hinaus aufweist., Naive Suche kann im Durchschnitt Raumaufteilungsansätze in höherdimensionalen Räumen übertreffen.

Space partitioningEdit

Seit den 1970er Jahren wurde die Branch-und Bound-Methode auf das Problem angewendet. Im Falle des euklidischen Raums umfasst dieser Ansatz räumliche Index-oder räumliche Zugriffsmethoden. Zur Lösung des NNS-Problems wurden mehrere Methoden zur Raumaufteilung entwickelt. Am einfachsten ist vielleicht der K-d-Baum, der den Suchraum iterativ in zwei Bereiche halbiert, die die Hälfte der Punkte des übergeordneten Bereichs enthalten., Abfragen werden über das Durchlaufen des Baums von der Wurzel zu einem Blatt durchgeführt, indem der Abfragepunkt bei jedem Split ausgewertet wird. Abhängig von der in der Abfrage angegebenen Entfernung müssen möglicherweise auch benachbarte Zweige, die Treffer enthalten, ausgewertet werden. Für eine konstante Dimensionsabfragezeit beträgt die durchschnittliche Komplexität O(log N) im Fall von zufällig verteilten Punkten ist die Worst-Case-Komplexität O(kN^(1-1/k))Alternativ wurde die R-Tree-Datenstruktur entwickelt, um die Suche nach dem nächsten Nachbarn im dynamischen Kontext zu unterstützen, da sie über effiziente Algorithmen für Einfügungen und Löschungen wie den R* – Baum verfügt., R-Bäume können die nächsten Nachbarn nicht nur für die euklidische Entfernung ergeben, sondern können auch mit anderen Entfernungen verwendet werden.

Im Falle des allgemeinen Metrikraums wird der Zweig-und-gebundene Ansatz als Metrikbaumansatz bezeichnet. Besondere Beispiele sind vp-tree und BK-tree Methoden.

Unter Verwendung einer Menge von Punkten, die aus einem dreidimensionalen Raum entnommen und in einen BSP-Baum eingefügt wurden, und angesichts eines Abfragepunkts, der aus demselben Raum stammt, ist eine mögliche Lösung für das Problem des Findens des nächsten Punktwolkenpunkts zum Abfragepunkt in der folgenden Beschreibung eines Algorithmus angegeben., (Streng genommen kann kein solcher Punkt existieren, da er möglicherweise nicht eindeutig ist. In der Praxis ist es uns jedoch normalerweise nur wichtig, einen der Teilmengen aller Punktwolkenpunkte zu finden, die in kürzester Entfernung zu einem bestimmten Abfragepunkt vorhanden sind.) Die Idee ist, für jede Verzweigung des Baums zu vermuten, dass sich der nächste Punkt in der Wolke im Halbraum befindet, der den Abfragepunkt enthält. Dies mag nicht der Fall sein, ist aber eine gute Heuristik., Nachdem Sie sich rekursiv die Mühe gemacht haben, das Problem für den vermuteten Halbraum zu lösen, vergleichen Sie nun die von diesem Ergebnis zurückgegebene Entfernung mit der kürzesten Entfernung vom Abfragepunkt zur Partitionierungsebene. Dieser letztere Abstand ist der zwischen dem Abfragepunkt und dem nächstmöglichen Punkt, der im nicht durchsuchten Halbraum vorhanden sein könnte. Wenn dieser Abstand größer ist als der im früheren Ergebnis zurückgegebene, ist es offensichtlich nicht erforderlich, den anderen Halbraum zu durchsuchen., Wenn es ein solches Bedürfnis gibt, müssen Sie sich die Mühe machen, das Problem für den anderen Halbraum zu lösen, und dann sein Ergebnis mit dem früheren Ergebnis vergleichen und dann das richtige Ergebnis zurückgeben. Die Leistung dieses Algorithmus ist der logarithmischen Zeit näher als der linearen Zeit, wenn sich der Abfragepunkt in der Nähe der Wolke befindet, da der Abstand zwischen dem Abfragepunkt und dem nächstgelegenen Punktwolkenpunkt nahe Null liegt, Der Algorithmus muss nur eine Suche durchführen mit dem Abfragepunkt als Schlüssel, um das richtige Ergebnis zu erhalten.,

Näherungsmethodenedit

Ein ungefährer Suchalgorithmus für den nächsten Nachbarn darf Punkte zurückgeben, deren Abstand von der Abfrage höchstens das c {\displaystyle c} – fache des Abstands von der Abfrage zu den nächsten Punkten beträgt. Der Reiz dieses Ansatzes besteht darin, dass in vielen Fällen ein ungefährer nächster Nachbar fast so gut ist wie der genaue. Insbesondere wenn das Entfernungsmaß den Begriff der Benutzerqualität genau erfasst, sollten kleine Unterschiede in der Entfernung keine Rolle spielen.,

Gierigen Suche nach in der Nähe von Nachbarschaft graphsEdit

Die Methoden basieren auf gierig durchqueren in der Nähe der Nachbarschaft Graphen G ( V , E ) {\displaystyle G(V,E)}, in denen jeder Punkt x i ∈ S {\displaystyle x_{i}\in S} ist eindeutig im Zusammenhang mit vertex v i ∈ V {\displaystyle v_{i}\in V} . Die Suche nach den nächsten Nachbarn einer Abfrage q in der Menge S erfolgt in Form der Suche nach dem Scheitelpunkt im Graphen G ( V , E ) {\displaystyle G(V,E)} .,Der grundlegende Algorithmus-greedy search-funktioniert wie folgt: Die Suche beginnt mit einem eingegebenen Punktscheitelpunkt v i ∈ V {\displaystyle v_{i}\in V}, indem die Abstände von der Abfrage q zu jedem Scheitelpunkt seiner Nachbarschaft berechnet werden { v j: (v i,v j ) ∈ E } {\displaystyle \{v_{j}: (v_{i}, v_{j})\in E\}} und findet dann einen Scheitelpunkt mit dem minimalen Entfernungswert. Wenn der Abstandswert zwischen der Abfrage und dem ausgewählten Scheitelpunkt kleiner ist als der zwischen der Abfrage und dem aktuellen Element, wird der Algorithmus zum ausgewählten Scheitelpunkt verschoben und es wird ein neuer Eingabepunkt., Der Algorithmus stoppt, wenn er ein lokales Minimum erreicht: einen Scheitelpunkt, dessen Nachbarschaft keinen Scheitelpunkt enthält, der näher an der Abfrage als der Scheitelpunkt selbst liegt.

Die Idee der Nähe Nachbarschaftsgraphen wurde in mehreren Publikationen ausgenutzt, einschließlich der wegweisenden Papier von Arya und Mount, in der VoroNet-System für die Ebene , in der RayNet-System für die E n {\displaystyle \mathbb {E} ^{n}}, und in der metrisierten Kleinen Welt und HNSW Algorithmen für den allgemeinen Fall von Räumen mit einer Distanzfunktion., Diesen Arbeiten ging ein wegweisendes Papier von Toussaint voraus, in dem er das Konzept eines relativen Nachbarschaftsgraphen einführte.

Lokalitätssensitives Hashing

lokalitätssensitives Hashing (LSH) ist eine Technik zum Gruppieren von Punkten im Raum in „Buckets“ basierend auf einer Entfernungsmetrik, die an den Punkten arbeitet. Punkte, die unter der gewählten Metrik nahe beieinander liegen, werden mit hoher Wahrscheinlichkeit demselben Bucket zugeordnet.,

Suche nach dem nächsten Nachbarn in Räumen mit kleiner intrinsischer dimensionEdit

Der Deckungsbaum hat eine theoretische Grenze, die auf der Verdopplungskonstante des Datensatzes basiert. Die Grenze für die Suchzeit ist O (c12 log n), wobei c die Expansionskonstante des Datensatzes ist.

Projizierte radiale Suchfunktion

In dem speziellen Fall, in dem es sich bei den Daten um eine dichte 3D-Karte geometrischer Punkte handelt, kann die Projektionsgeometrie der Sensorik verwendet werden, um das Suchproblem dramatisch zu vereinfachen.,Dieser Ansatz setzt voraus, dass die 3D-Daten durch eine Projektion auf ein zweidimensionales Gitter organisiert werden und setzt voraus, dass die Daten räumlich glatt über benachbarte Gitterzellen mit Ausnahme von Objektgrenzen sind.Diese Annahmen sind gültig, wenn es um 3D-Sensordaten in Anwendungen wie Vermessung, Robotik und Stereovision geht, gelten jedoch möglicherweise nicht für unorganisierte Daten in general.In praxis Diese Technik hat eine durchschnittliche Suchzeit von O(1) oder O (K) für das k-nächste Nachbarproblem, wenn es auf reale Stereovisionsdaten angewendet wird.,

Vector Approximation filesEdit

In hochdimensionalen Räumen werden Baumindexierungsstrukturen unbrauchbar, da ohnehin ein zunehmender Prozentsatz der Knoten untersucht werden muss. Um die lineare Suche zu beschleunigen, wird eine komprimierte Version der im RAM gespeicherten Merkmalsvektoren zum Vorfiltern der Datensätze in einem ersten Durchlauf verwendet. Die endgültigen Kandidaten werden in einer zweiten Stufe unter Verwendung der unkomprimierten Daten von der Festplatte zur Entfernungsberechnung ermittelt.,

Komprimierung / clusterbasierte Suche

Der VA-File-Ansatz ist ein Sonderfall einer komprimierungsbasierten Suche, bei der jede Feature-Komponente einheitlich und unabhängig komprimiert wird. Die optimale Komprimierungstechnik in mehrdimensionalen Räumen ist die Vektorquantisierung (VQ), die durch Clustering implementiert wird. Die Datenbank wird gruppiert und die“ vielversprechendsten “ Cluster werden abgerufen. Es wurden enorme Gewinne gegenüber VA-Dateien, baumbasierten Indizes und sequentiellem Scan beobachtet. Beachten Sie auch die parallelen zwischen clustering und LSH.