diverses solutions au problème NNS ont été proposées. La qualité et l’utilité des algorithmes sont déterminées par la complexité temporelle des requêtes ainsi que par la complexité spatiale des structures de données de recherche qui doivent être maintenues. L’observation informelle généralement appelée la malédiction de la dimensionnalité indique qu’il n’y a pas de solution exacte à usage général pour NNS dans L’espace euclidien de haute dimension en utilisant le prétraitement polynomial et le temps de recherche polylogarithmique.,

méthodes Exactesmodifier

recherche Linairemodifier

la solution la plus simple au problème NNS consiste à calculer la distance entre le point de requête et tous les autres points de la base de données, en gardant une trace du « meilleur jusqu’à présent ». Cet algorithme, parfois appelé approche naïve, a un temps D’exécution de O (dN), où N est la cardinalité de S et d est la dimensionnalité de M. Il n’y a pas de structures de données de recherche à maintenir, donc la recherche linéaire n’a pas de complexité spatiale au-delà du stockage de la base de données., La recherche naïve peut, en moyenne, surpasser les approches de partitionnement d’espace sur des espaces de dimension supérieure.

space partitioningEdit

Depuis les années 1970, la méthodologie branch and bound a été appliquée au problème. Dans le cas de L’espace euclidien, cette approche englobe les méthodes d’index spatial ou d’accès spatial. Plusieurs méthodes de partitionnement d’espace ont été développées pour résoudre le problème NNS. Le plus simple est peut-être l’arbre k-d, qui divise itérativement l’espace de recherche en deux régions contenant la moitié des points de la région parente., Les requêtes sont effectuées via la traversée de l’arbre de la racine à une feuille en évaluant le point de requête à chaque division. Selon la distance spécifiée dans la requête, les branches voisines pouvant contenir des accès peuvent également devoir être évaluées. Pour un temps de requête à dimension constante, la complexité moyenne est O(log N) dans le cas de points distribués aléatoirement, la complexité du pire des cas est O(kN^(1-1/k))alternativement, la structure de données r-tree a été conçue pour prendre en charge la recherche de voisins les plus proches dans un contexte dynamique, car elle, Les arbres R peuvent donner des voisins les plus proches non seulement pour la distance euclidienne, mais peuvent également être utilisés avec d’autres distances.

dans le cas de l’espace métrique général, l’approche branche-et-liée est connue sous le nom d’approche de l’arbre métrique. Des exemples particuliers incluent les méthodes vp-tree et BK-tree.

en utilisant un ensemble de points pris dans un espace à 3 dimensions et placés dans un arbre BSP, et étant donné un point de requête pris dans le même espace, une solution possible au problème de trouver le point de nuage de points le plus proche du point de requête est donnée dans la description suivante d’un algorithme., (À proprement parler, aucun point de ce type ne peut exister, car il peut ne pas être unique. Mais en pratique, nous ne nous soucions généralement que de trouver l’un des sous-ensembles de tous les points de nuage de points qui existent à la plus courte distance d’un point de requête donné.) L’idée est, pour chaque branche de l’arbre, de deviner que le point le plus proche du nuage réside dans le demi-espace contenant le point de requête. Cela peut ne pas être le cas, mais c’est une bonne heuristique., Après avoir récursivement traversé tous les problèmes de résolution du problème pour le demi-espace deviné, Comparez maintenant la distance renvoyée par ce résultat avec la distance la plus courte entre le point de requête et le plan de partitionnement. Cette dernière distance est celle entre le point de requête et le point le plus proche possible qui pourrait exister dans le demi-espace non recherché. Si cette distance est supérieure à celle renvoyée dans le résultat précédent, il n’est clairement pas nécessaire de rechercher l’autre demi-espace., S’il y a un tel besoin, alors vous devez passer par la peine de résoudre le problème pour l’autre moitié de l’espace, puis comparer son résultat à l’ancien résultat, puis retourner le bon résultat. Les performances de cet algorithme sont plus proches du temps logarithmique que du temps linéaire lorsque le point de requête est proche du nuage, car à mesure que la distance entre le point de requête et le point de nuage le plus proche approche de zéro, l’algorithme n’a besoin que d’effectuer une recherche en utilisant le point de requête,

Approximation methodsEdit

un algorithme de recherche de voisin le plus proche approximatif est autorisé à renvoyer des points dont la distance de la requête est au plus c {\displaystyle c} fois la distance de la requête à ses points les plus proches. L’attrait de cette approche est que, dans de nombreux cas, un voisin le plus proche approximatif est presque aussi bon que l’exact. En particulier, si la mesure de distance capture avec précision la notion de qualité de l’utilisateur, les petites différences de distance ne devraient pas avoir d’importance.,

Greedy search in proximity neighborhood graphsEdit

Les méthodes sont basées sur la traversée gourmande dans les graphes de voisinage de proximité G ( V , E ) {\displaystyle G(V,E)} dans lesquels chaque point x i ∈ s {\displaystyle x_{i}\in s} est associé de manière unique au sommet v i ∈ v {\displaystyle V_{i}\in V} . La recherche des voisins les plus proches d’une requête q dans L’ensemble S prend la forme de la recherche du sommet dans le graphe G ( V , E ) {\displaystyle G(V,E)} .,L’algorithme de base – greedy search-fonctionne comme suit: la recherche commence à partir d’un sommet enter-point v i ∈ v {\displaystyle V_{i}\in V} en calculant les distances de la requête q à chaque sommet de son voisinage { v j : ( v i , v j ) ∈ E } {\displaystyle \{V_{j}:(v_{i},v_{j})\in E\}} , puis trouve un sommet avec la valeur de distance minimale. Si la valeur de distance entre la requête et le sommet sélectionné est inférieure à celle entre la requête et l’élément courant, l’algorithme se déplace vers le sommet sélectionné et devient un nouveau point d’entrée., L’algorithme s’arrête lorsqu’il atteint un minimum local: un sommet dont le voisinage ne contient pas de sommet plus proche de la requête que le sommet lui-même.

l’idée de graphes de voisinage de proximité a été exploitée dans plusieurs publications, y compris L’article fondateur D’Arya et Mount, dans le système VoroNet pour le plan, dans le système RayNet pour le E n {\displaystyle \mathbb {E} ^{n}} , et dans les algorithmes Metrized Small World et HNSW pour le cas général des espaces avec une fonction de distance., Ces travaux ont été précédés par un article pionnier de Toussaint, dans lequel il a introduit le concept de graphe de voisinage relatif.

locality sensitive hashingEdit

Locality sensitive hashing (LSH) est une technique de regroupement de points dans l’espace en « seaux » basés sur une métrique de distance opérant sur les points. Les Points qui sont proches les uns des autres sous la métrique choisie sont mappés au même compartiment avec une forte probabilité.,

recherche du voisin le plus proche dans les espaces de petite dimension intrinsèquedit

L’arbre de couverture a une limite théorique basée sur la constante de doublement de l’ensemble de données. La limite sur le temps de recherche est O (C12 log n) où c est la constante d’expansion de l’ensemble de données.

Projected radial searchEdit

dans le cas particulier où les données sont une carte 3D dense de points géométriques, la géométrie de projection de la technique de détection peut être utilisée pour simplifier considérablement le problème de recherche.,Cette approche nécessite que les données 3D soient organisées par une projection sur une grille bidimensionnelle et suppose que les données sont spatialement lisses à travers les cellules de grille voisines à l’exception des limites d’objets.Ces hypothèses sont valables lorsqu’il s’agit de données de capteurs 3D dans des applications telles que l’arpentage, la robotique et la vision stéréo, mais peuvent ne pas tenir pour des données non organisées dans general.In pratique cette technique a un temps de recherche moyen de O (1) ou O(K) pour le problème k-le plus proche voisin lorsqu’elle est appliquée aux données de vision stéréo du monde réel.,

Vector approximation filesEdit

dans les espaces de grande dimension, les structures d’indexation des arbres deviennent inutiles car un pourcentage croissant des nœuds doit être examiné de toute façon. Pour accélérer la recherche linéaire, une version compressée des vecteurs d’entités stockés dans la RAM est utilisée pour préfilter les ensembles de données lors d’une première exécution. Les candidats finaux sont déterminés dans une deuxième étape en utilisant les données non compressées du disque pour le calcul de la distance.,

Compression/clustering based searchEdit

L’approche va-file est un cas particulier d’une recherche basée sur la compression, où chaque composant d’entité est compressé uniformément et indépendamment. La technique de compression optimale dans les espaces multidimensionnels est la quantification vectorielle (VQ), implémentée par clustering. La base de données est regroupée et les clusters les plus » prometteurs  » sont récupérés. Des gains énormes sur les fichiers VA, les index arborescents et l’analyse séquentielle ont été observés. Notez également les parallèles entre le clustering et LSH.