retour

Arbres k-d

Questions explications rapides et une démonstration des arbres k-d, structure de données permettant notamment une recherche rapide du plus proche voisin d'un point parmi un ensemble de points donnés. Cette page ne traite que du cas bidimensionnel, mais les différentes idées peuvent être appliquées à des espaces de plus grande dimension.
   
Points visités :

Définition et calcul de l'arbre k-d

L'algortithme ci-dessous calcule (et décrit) l'arbre k-d d'un ensemble P de points du plan, étant donnée une direction (horizontale et verticale).
ArbreKD(P, direction)
Si l'étape $(1)$ est effectuée en complexité linéaire en la taille de l'ensemble de points (ce qui est possible en utilisant par exemple l'algorithme de sélection de Hoare), on montre que l'abre k-d d'un ensemble de $n$ points est construit en temps $O(n\log(n))$.

Recherche de plus proche voisin

Une fois l'arbre k-d d'un ensemble de points calculé, on cherche à trouver le (un) plus proche voisin d'un nouveau point $p$. On peut observer l'exécution de l'ensemble de l'algorithme en cliquant sur un point de la première figure ci-dessus. Une étude non-triviale montre que l'on obtient une recherche de plus proche voisin de complexité moyenne $O(\log(n))$ une fois l'arbre k-d calculé (avec cependant une constante importante, qui rend cet algorithme peu efficace face à des méthodes plus naïves sur de «petits» ensembles de moins de quelques milliers points).

Références