verschillende oplossingen voor het NNS-probleem zijn voorgesteld. De kwaliteit en bruikbaarheid van de algoritmen worden bepaald door de tijdcomplexiteit van queries en de ruimtecomplexiteit van alle zoekgegevensstructuren die moeten worden onderhouden. De informele observatie die gewoonlijk de vloek van dimensionaliteit wordt genoemd, stelt dat er geen exacte oplossing voor NNS voor algemene doeleinden bestaat in de hoogdimensionale Euclidische ruimte met behulp van polynomiale voorbewerking en polylogarithmische zoektijd.,

exacte methodenedit

Linear searchEdit

De eenvoudigste oplossing voor het NNS-probleem is om de afstand van het querypunt tot elk ander punt in de database te berekenen, waarbij het “beste tot nu toe”wordt bijgehouden. Dit algoritme, soms aangeduid als de naïeve benadering, heeft een looptijd van O(dN), waarbij N de kardinaliteit van S is en d de dimensionaliteit van M. Er zijn geen zoekgegevens structuren te onderhouden, dus lineaire zoekopdracht heeft geen ruimte complexiteit buiten de opslag van de database., Naïef zoeken kan, gemiddeld, beter presteren dan ruimte partitionering benaderingen op hogere dimensionale ruimten.

Spatiepartitiededit

sinds de jaren zeventig is de branch en bound methodologie toegepast op het probleem. In het geval van de Euclidische ruimte omvat deze benadering ruimtelijke index-of ruimtelijke toegangsmethoden. Er zijn verschillende spatiepartitioneringsmethoden ontwikkeld om het NNS-probleem op te lossen. Misschien wel de eenvoudigste is de k-d boom, die iteratief snijdt de zoekruimte in twee gebieden die de helft van de punten van het oudergebied., Queries worden uitgevoerd via de traversal van de boom van de wortel naar een blad door het evalueren van het query punt bij elke splitsing. Afhankelijk van de afstand die in de query is opgegeven, moeten naburige branches die hits kunnen bevatten mogelijk ook worden geëvalueerd. Voor constante dimensie query tijd, gemiddelde complexiteit is O (log N) in het geval van willekeurig gedistribueerde punten, worst case complexiteit is O(kN^(1-1/k)) alternatief de R-tree data structuur is ontworpen om dichtstbijzijnde buur zoeken in dynamische context te ondersteunen, omdat het efficiënte algoritmen voor inserties en verwijderingen zoals de R* boom., R-bomen kunnen niet alleen voor Euclidische afstand naaste buren opleveren, maar kunnen ook met andere afstanden worden gebruikt.

in het geval van een algemene metrische ruimte staat de branch-and-bound benadering bekend als de metrische boom benadering. Bijzondere voorbeelden zijn vp-tree en BK-tree methoden.

gebruikmakend van een verzameling punten uit een driedimensionale ruimte en in een BSP-boom gezet, en gegeven een querypunt uit dezelfde ruimte, wordt een mogelijke oplossing gegeven voor het probleem van het vinden van het dichtstbijzijnde puntwolkpunt naar het querypunt in de volgende beschrijving van een algoritme gegeven., (Strikt genomen kan een dergelijk punt niet bestaan, omdat het misschien niet uniek is. Maar in de praktijk, meestal geven we alleen om het vinden van een van de subset van alle point-cloud punten die bestaan op de Kortste Afstand tot een bepaald query punt.) Het idee is, voor elke vertakking van de boom, raden dat het dichtstbijzijnde punt in de wolk zich in de helft-ruimte met het query punt. Dit is misschien niet het geval, maar het is een goede heuristische., Na recursief alle moeite van het oplossen van het probleem voor de geraden halve spatie, vergelijk nu de afstand geretourneerd door dit resultaat met de kortste afstand van het query punt naar het partitionering vlak. Deze laatste afstand is die tussen het query point en het dichtst mogelijke punt dat zou kunnen bestaan in de halve ruimte niet gezocht. Als deze afstand groter is dan die in het eerdere resultaat, dan is er duidelijk geen noodzaak om te zoeken in de andere helft-ruimte., Als er een dergelijke behoefte is, moet u de moeite nemen om het probleem voor de andere helft van de ruimte op te lossen en vervolgens het resultaat vergelijken met het vorige resultaat en vervolgens het juiste resultaat retourneren. De prestaties van dit algoritme liggen dichter bij de logaritmische tijd dan de lineaire tijd wanneer het querypunt zich in de buurt van de cloud bevindt, omdat de afstand tussen het querypunt en het dichtstbijzijnde punt-cloud point nul nadert, het algoritme alleen een look-up hoeft uit te voeren met behulp van het querypunt als een sleutel om het juiste resultaat te krijgen.,

Approximation methodebedit

een benaderend zoekalgoritme van de naaste buren mag punten retourneren, waarvan de afstand tot de query hoogstens c {\displaystyle c} maal de afstand van de query tot de dichtstbijzijnde punten is. De aantrekkingskracht van deze benadering is dat in veel gevallen een benaderende naaste buur bijna net zo goed is als de exacte buur. In het bijzonder, als de afstand meten nauwkeurig vangt het begrip van de gebruiker kwaliteit, dan kleine verschillen in de afstand mag niet uitmaken.,

Greedy search in proximity neighborhood graphsEdit

de methoden zijn gebaseerd op greedy traversing in proximity neighborhood graphs G ( V , E ) {\displaystyle G(V,E)} waarin elk punt x i S S {\displaystyle x_{i}\in S} is uniek geassocieerd met vertex v i V v {\displaystyle v_{i}\in V} . Het zoeken naar de naaste buren van een query q in de verzameling S neemt de vorm aan van het zoeken naar het punt in de grafiek G ( V , E ) {\displaystyle G(V,E)} .,Het basisalgoritme – greedy search – werkt als volgt: zoeken begint met een Enter-punt vertex v i V v {\displaystyle v_{i}\in V} door de afstanden te berekenen van de query q tot elk vertex van zijn omgeving { v j: (v i , v j ) ∈ E } {\displaystyle \{V_{j}: (v_{i},v_{j})\in E\}}, en vindt dan een vertex met de minimale afstandwaarde. Als de afstand tussen de query en het geselecteerde punt kleiner is dan die tussen de query en het huidige element, dan verplaatst het algoritme naar het geselecteerde punt en wordt het nieuw enter-point., Het algoritme stopt wanneer het een lokaal minimum bereikt: een hoekpunt waarvan de buurt geen hoekpunt bevat dat dichter bij de query staat dan het hoekpunt zelf.

het idee van proximity neighborhood grafieken werd gebruikt in meerdere publicaties, waaronder het rudimentaire artikel van Arya en Mount, in het VoroNet systeem voor het vlak, in het RayNet systeem voor de E n {\displaystyle \mathbb {e} ^{n}} , en in de Metrized Small World en HNSW algoritmen voor het algemene geval van ruimten met een afstandsfunctie., Deze werken werden voorafgegaan door een baanbrekend artikel van Toussaint, waarin hij het concept van een relatieve buurtgrafiek introduceerde.

Locality sensitive hashingEdit

locity sensitive hashing (LSH) is een techniek voor het groeperen van punten in de ruimte in ‘emmers’ gebaseerd op een bepaalde afstand metriek die werkt op de punten. Punten die dicht bij elkaar liggen onder de gekozen metriek worden met grote waarschijnlijkheid aan dezelfde emmer toegewezen.,

dichtstbijzijnde buur zoeken in ruimten met kleine intrinsieke dimensionEdit

De omslagboom heeft een theoretische binding die is gebaseerd op de verdubbeling constante van de dataset. De binding op zoektijd is O (C12 log n) waarbij c de uitbreidingsconstante van de dataset is.

geprojecteerde radiale zoekopdracht

in het speciale geval waarin de gegevens een dichte 3D-kaart van geometrische punten zijn, kan de projectiegeometrie van de sensortechniek worden gebruikt om het zoekprobleem drastisch te vereenvoudigen.,Deze benadering vereist dat de 3D gegevens door een projectie aan een tweedimensionaal raster worden georganiseerd en veronderstelt dat de gegevens ruimtelijk glad over naburige rastercellen met uitzondering van objectgrenzen zijn.Deze aannames zijn geldig bij het omgaan met 3D-sensorgegevens in toepassingen zoals landmeetkunde, robotica en stereo vision, maar kunnen niet gelden voor ongeorganiseerde gegevens in general.In oefen deze techniek heeft een gemiddelde zoektijd van O (1) of O (K) voor het probleem van de k-dichtstbijzijnde buurman wanneer toegepast op stereo vision data in de echte wereld.,

vectoraanpassingsbestandedit

In hoogdimensionale ruimten worden boomindexeringsstructuren nutteloos omdat een toenemend percentage van de knopen toch moet worden onderzocht. Om lineair zoeken te versnellen, wordt een gecomprimeerde versie van de feature vectoren die zijn opgeslagen in RAM gebruikt om de datasets in een eerste run voor te filteren. De uiteindelijke kandidaten worden bepaald in een tweede fase met behulp van de niet-gecomprimeerde gegevens van de schijf voor afstandsberekening.,

compressie / clustering gebaseerde zoekopdracht

de VA-file benadering is een speciaal geval van een compressie gebaseerde zoekopdracht, waarbij elke feature component uniform en onafhankelijk gecomprimeerd wordt. De optimale compressietechniek in multidimensionale ruimten is Vectorkwantisatie (VQ), geïmplementeerd door clustering. De database is geclusterd en de meest” veelbelovende ” clusters worden opgehaald. Enorme winsten ten opzichte van VA-bestand, boom-gebaseerde indexen en sequentiële scan zijn waargenomen. Let ook op de parallellen tussen clustering en LSH.