| Liste Articles: [0-A] [A-C] [C-F] [F-J] [J-M] [M-P] [P-S] [S-Z] | Liste Catégories | Une page au hasard | Pages liées | ||||||
| Sommaire |
L'arbre d'axes principaux, aussi appelé Principal Axis Tree ou encore PAT, permet de diviser un espace de points de manière efficiente en vue de solutionner rapidement le problème des plus proches voisins. Cette méthode de recherche des plus proches voisins a été développée par James McNames (J. McNames, « A Fast Nearest Neighbor Algorithm Based on a Principal Axis Tree, » IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 23, No. 9, pp. 964-976, September 2001.)
L'algorithme obtenu permet d'effectuer des recherches de voisinage d'un point donnée en un temps
et ce même dans des dimensions élevées.
Cet algorithme de recherche se base sur un élagage très rapide de l'arbre, grâce à la puissance de son critère d'élimination,
tout en limitant l'espace de stockage nécessaire en mémoire. Enfin, à l'intérieur d'une feuille donnée, l'algorithme utilise la
recherche de distance partielle pour encore accélérer les calculs. L'algorithme présente
les caractéristiques suivantes, N étant le nombre de points présents dans l'espace:
;
;
Schématiquement, la construction de l'arbre d'axe principal se déroule 6 étapes:
On obtient ainsi un arbre pour lequel l'ensemble des points est attribué à la racine. Ces points sont ensuite séparés en différentes régions, chacune correspondant à un fils de la racine. On peut, via l'axe principal qui a été sauvé à chaque étape, déterminer dans quelle région doit se situer un point de coordonnée donnée et donc savoir à quel nœud fils il est associé. À partir de là, on peut déterminer dans quelle sous-région il se trouve et ainsi de suite jusqu'à atteindre une région terminale. Cette région terminale est caractérisée par la présence de peu de points (moins de qui est généralement de l'ordre de 2 à une dizaine). À noter que cet arbre présente au premier abord 2 avantages:
En résumé, on part de la racine, on descend vers le nœud terminal correspondant au point dont on cherche le voisinage et on tente d'éliminer des sections entières de l'arbre via le critère délimination.
La puissance du critère d'élimination régit la puissance de tout algorithme de recherche. L'algorithme utilisé dans l'arbre des axes principaux tire sa puissance de deux points:
Pour comprendre le fonctionnement du critère d'élimination, le lecteur est invité à se référer à la figure ci-contre. Chaque nœud de l'arbre correspond à une région de l'espace. À partir d'informations fournies lors de la construction de l'arbre, le critère d'élimination est capable d'évaluer une distance minimum au-delà de laquelle se trouve n'importe quel point de la région. Si cette distance minimale est trop grande par rapport au proches voisins déjà trouvé, la région entière peut être éliminée. Les nœuds voisins sont encore plus loin, par construction de l'arbre, et sont eux aussi éliminés.
Dans la figure, la distance entre le point q, point situé dans la région 1 dont on cherche le voisinage, et x
un point quelconque situé dans la région 2 est supérieure à la distance entre le point q et l'hyperplan séparant la
région 1 de la région 2. Cet hyperplan étant, par construction, perpendiculaire à l'axe principal, la distance peut être calculée
rapidement le long de cet axe, soit en dimension 1. La distance est
donc le minimum entre le point q et tout point de la région grisée. Si ce minima est supérieur à l'ensemble des point
voisin de q déjà trouvée, la région grisée ainsi que la région 5 et au-delà peuvent être éliminés sans avoir à regarder
les points présents dans ces régions.
Si le test échoue, il faut regarder de plus prêt ce qui se passe dans la région grisée (c'est-à-dire descendre dans le nœud correspondant). Soit le triangle formé par (). Nous savons que l'angle est compris entre 90 et 180. Son cosinus est donc négatif et un minima de peut être calculé par pythagore généralisé:
Le même raisonnement appliqué à une autre sous région donne
Les points frontières b et les minimums des distances sont ainsi calculés récursivement par l'algorithme de recherche.
Ces calculs de distances de points frontière se font extrèmement rapidement car ils peuvent être fait directement a partir de
projections sur l'axe principal, et donc en dimension 1!


