diverse soluții la problema NNS au fost propuse. Calitatea și utilitatea algoritmilor sunt determinate de complexitatea în timp a interogărilor, precum și de complexitatea spațială a oricăror structuri de date de căutare care trebuie menținute. Observația informală denumită de obicei blestemul dimensionalității afirmă că nu există o soluție exactă cu scop general pentru NNS în spațiul Euclidian de înaltă dimensiune folosind preprocesarea polinomială și timpul de căutare polilogaritmică.,

Exact methodsEdit

Liniare searchEdit

Cea mai simplă soluție pentru NNS problema este de a calcula distanța de interogare punct pentru fiecare punct din baza de date, urmărirea de „cel mai bun până în prezent”. Acest algoritm, denumit uneori abordarea naivă, are un timp de funcționare de O (dN), unde N este cardinalitatea lui S și d este dimensionalitatea lui M. nu există structuri de date de căutare pentru a menține, deci căutarea liniară nu are complexitate spațială dincolo de stocarea bazei de date., Căutarea naivă poate, în medie, să depășească abordările de partiționare a spațiului pe spații dimensionale superioare.

partiționare Spațialăedit

începând cu anii 1970, metodologia ramificată și legată a fost aplicată problemei. În cazul spațiului euclidian, această abordare cuprinde indexul spațial sau metodele de acces spațial. Au fost dezvoltate mai multe metode de partiționare a spațiului pentru rezolvarea problemei NNS. Poate cel mai simplu este arborele k-d, care intersectează iterativ spațiul de căutare în două regiuni care conțin jumătate din punctele regiunii părinte., Interogările sunt efectuate prin traversarea arborelui de la rădăcină la o frunză prin evaluarea punctului de interogare la fiecare divizare. În funcție de distanța specificată în interogare, ar putea fi necesară evaluarea ramurilor vecine care ar putea conține accesări. Pentru dimensiune constantă timp de interogare, mediu de complexitate este O(log N) în cazul distribuite aleatoriu de puncte, în cel mai rău caz, complexitatea este O(kN^(1-1/k))Alternativ, R-arbore de structură de date a fost conceput pentru a sprijini cel mai apropiat vecin de căutare în context dinamic, deoarece are algoritmi eficienți pentru inserări și ștergeri, cum ar fi R* copac., Arborii R pot produce cei mai apropiați vecini nu numai pentru distanța euclidiană, dar pot fi utilizați și cu alte distanțe.

în cazul spațiului metric general, abordarea ramificată și legată este cunoscută sub numele de abordarea arborelui metric. Exemple particulare includ metodele vp-tree și BK-tree.folosind un set de puncte preluate dintr-un spațiu 3-dimensional și puse într-un arbore BSP și având în vedere un punct de interogare preluat din același spațiu, o posibilă soluție la problema găsirii celui mai apropiat punct-punct nor la punctul de interogare este dată în următoarea descriere a unui algoritm., (Strict vorbind, nu poate exista un astfel de punct, deoarece este posibil să nu fie unic. Dar, în practică, de obicei, ne pasă doar de găsirea unuia dintre subsetul tuturor punctelor de nor de puncte care există la cea mai scurtă distanță până la un punct de interogare dat.) Ideea este că, pentru fiecare ramificare a copacului, ghiciți că cel mai apropiat punct din nor se află în jumătatea spațiului care conține punctul de interogare. Acest lucru nu poate fi cazul, dar este un euristic bun., După ce ați trecut recursiv prin toate problemele de rezolvare a problemei pentru jumătatea spațiului ghicit, comparați Acum distanța returnată de acest rezultat cu cea mai scurtă distanță de la punctul de interogare la planul de partiționare. Această din urmă distanță este cea dintre punctul de interogare și cel mai apropiat punct posibil care ar putea exista în jumătatea spațiului care nu a fost căutat. Dacă această distanță este mai mare decât cea returnată în rezultatul anterior, atunci în mod clar nu este nevoie să căutați cealaltă jumătate de spațiu., Dacă există o astfel de nevoie, atunci trebuie să treceți prin problema rezolvării problemei pentru cealaltă jumătate a spațiului, apoi să comparați rezultatul cu rezultatul anterior și apoi să returnați rezultatul potrivit. Performanța acestui algoritm este mai aproape de timpul logaritmic decât timpul liniar atunci când punctul de interogare se află în apropierea norului, deoarece pe măsură ce distanța dintre punctul de interogare și cel mai apropiat punct de nor se apropie de zero, algoritmul trebuie doar să efectueze o căutare folosind punctul de interogare ca cheie pentru a obține rezultatul corect.,

Aproximare methodsEdit

Un aproximativă cel mai apropiat vecin algoritmul de căutare este permis să se întoarcă de puncte, a căror distanță de interogare este de cel mult c {\displaystyle c} ori distanța de la interogarea sale mai apropiate puncte. Apelul acestei abordări este că, în multe cazuri, un vecin apropiat este aproape la fel de bun ca cel exact. În special, dacă măsura distanței captează cu exactitate noțiunea de calitate a utilizatorului, atunci diferențele mici în distanță nu ar trebui să conteze.,

Lacom de căutare în imediata vecinătate graphsEdit

metode se bazează pe lacomi traversează în apropierea cartierului grafice G ( V , E ) {\displaystyle G(V,E)}, în care fiecare punct x i ∈ S {\displaystyle x_{i}\in S} este unic asociat cu nod v ∈ V {\displaystyle v_{i}\în V} . Căutarea celor mai apropiați vecini la o interogare q din setul S ia forma căutării vertexului din graficul G ( V , E ) {\displaystyle G(V,E)} .,Algoritmul de bază – lacom de căutare – funcționează după cum urmează: căutare pornește de la o intra-punct vertex v i ∈ V {\displaystyle v_{i}\în V} de calcul distanțele de interogare q pentru fiecare nod al său cartier { v j : ( v i , v j ) ∈ E } {\displaystyle \{v_{j}:(v_{i},v_{j})\în E\}} , și apoi găsește un nod cu distanța minimă de valoare. Dacă valoarea distanței dintre interogare și nodul selectat este mai mică decât cea dintre interogare și elementul curent, atunci algoritmul se mută la nodul selectat și devine un nou punct de intrare., Algoritmul se oprește atunci când atinge un minim local: un vertex al cărui cartier nu conține un vertex care este mai aproape de interogare decât vertexul în sine.

ideea de proximitate cartier grafice fost exploatat în mai multe publicații, inclusiv lucrare de Arya și Muntele, în VoroNet sistem de avion, în RayNet sistem de E n {\displaystyle \mathbb {E} ^{n}} , și în Metrized Lume Mică și HNSW algoritmi pentru cazul general de spații cu funcții de distanță., Aceste lucrări au fost precedate de o lucrare de pionierat a lui Toussaint, în care a introdus conceptul de grafic relativ de vecinătate.hashing-ul Locality sensitive (LSH) este o tehnică de grupare a punctelor în spațiu în „găleți” pe baza unei metrici de distanță care funcționează pe puncte. Punctele care sunt aproape una de cealaltă sub metrica aleasă sunt mapate în aceeași găleată cu probabilitate mare.,

căutarea celui mai apropiat vecin în spații cu dimensiuni intrinseci micimodificare

arborele de acoperire are o legătură teoretică care se bazează pe constanta de dublare a setului de date. Limita la timpul de căutare este O (C12 log n) unde c este constanta de expansiune a setului de date.în cazul special în care datele sunt o hartă 3D densă a punctelor geometrice, geometria de proiecție a tehnicii de detectare poate fi utilizată pentru a simplifica dramatic problema căutării.,Această abordare necesită ca datele 3D să fie organizate printr-o proiecție către o grilă bidimensională și presupune că datele sunt netede spațial în celulele de rețea vecine, cu excepția limitelor obiectului.Aceste ipoteze sunt valabile atunci când se ocupă cu senzor 3D de date în aplicații cum ar fi topografie, robotică și stereo viziune, dar nu poate deține pentru neorganizat de date în general.În practică această tehnică are o medie de căutare timp de O(1) sau O(K) pentru k-cel mai apropiat vecin problemă atunci când sunt aplicate la lumea reală stereo viziune de date.,

Vector apropierea filesEdit

În high-spații dimensionale, copac indexare structuri devenit inutil, deoarece un procentaj ridicat de noduri trebuie să fie examinate oricum. Pentru a accelera căutarea liniară, o versiune comprimată a vectorilor de caracteristici stocate în memoria RAM este utilizată pentru a prefiltra seturile de date într-o primă rulare. Candidații finali sunt determinați într-o a doua etapă folosind datele necomprimate de pe disc pentru calculul distanței.,

Compresie/clustering bazat searchEdit

VA-fișier abordare este un caz special de compresie bazate pe căutare, în care fiecare componentă caracteristică este comprimat uniform și independent. Tehnica optimă de compresie în spații multidimensionale este cuantizarea vectorială (VQ), implementată prin clustering. Baza de date este grupată și cele mai „promițătoare” clustere sunt preluate. Au fost observate câștiguri uriașe peste va-File, indexuri bazate pe arbori și scanare secvențială. De asemenea, rețineți paralelele dintre clustering și LSH.