Arbre kd

Arbre kd

Un arbre kd (ou kd-tree, pour k-dimensional tree) est une structure de données de partition de l'espace permettant de stocker des points, et de faire des recherches (recherche par plage, plus proche voisin, etc.) plus rapidement qu'en parcourant linéairement le tableau de points. Les arbres kd sont des cas particuliers d'arbres BSP (Binary Space Partition Trees).

Description

Les arbres kd sont des arbres binaires, dans lesquels chaque nœud contient un point en dimension k. Chaque nœud non terminal divise l'espace en deux demi-espaces. Les points situés dans chacun des deux demi-espaces sont stockés dans les branches gauche et droite du nœud courant. Par exemple, si un nœud donné divise l'espace selon un plan normal à la direction (Ox), tous les points de coordonnée x inférieure à la coordonnée du point associé au nœud seront stockés dans la branche gauche du nœud. De manière similaire, les points de coordonnée x supérieure à celle du point considéré seront stockés dans la branche droite du nœud.

Construction

Il y a plusieurs possibilités de construction d'arbres kd. La construction standard se fait en suivant ces deux conditions :

  • La direction de l'hyperplan est choisie en fonction de la hauteur du point dans l'arbre. Pour un kd-tree en dimension 3, le plan de la racine sera par exemple normal au vecteur (1,0,0), le plan des deux enfants sera normal au vecteur (0,1,0), celui des petits-enfants sera normal au vecteur (0,0,1), puis à nouveau normal au vecteur (1,0,0), et ainsi de suite…
  • Afin d'avoir un arbre équilibré, le point inséré dans l'arbre à chaque étape est celui qui a la coordonnée médiane dans la direction considérée.

La contrainte sur la sélection du point médian n'est pas une obligation, mais permet de s'assurer que l'arbre sera équilibré. Le tri des points à chaque étape a un coût en temps, ce qui peut amener à un temps de création de l'arbre assez long. Il est possible de sélectionner aléatoirement le prochain point à insérer, ce qui donne en général un arbre globalement équilibré.

À partir d'une liste de n points, l'algorithme suivant construit un arbre kd équilibré:

function kdtree (liste de points pointList, int depth)
{
    if pointList is empty
        return nil;
    else
    {
        // Sélectionne l'axe de comparaison en fonction de la profondeur du nœud
        var int axis := depth mod k;

        // trie la liste de points et sélectionne le point médian
        select median by axis from pointList;

        // Crée le noeud courant, et construit récursivement les deux fils
        var tree_node node;
        node.location := median;
        node.leftChild := kdtree(points in pointList before median, depth+1);
        node.rightChild := kdtree(points in pointList after median, depth+1);
        return node;
    }
}

La complexité algorithmique de construction d'un arbre kd est de O(n log^2 n) si un algorithme médian de complexité O(n log n) est utilisé. Si on utilise un algorithme de calcul de la médiane de complexité linéaire (en O(n)), alors la construction de l'arbre a une complexité en O(n log n).

Voir aussi


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Arbre kd de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • ARBRE — La distinction entre arbre et herbe remonte à une antiquité éloignée. Théophraste (vers 300 av. J. C.) en avait déjà fait la base de sa classification des végétaux, non sans quelque raison à en croire d’actuels botanistes. On sait que Hutchinson… …   Encyclopédie Universelle

  • arbre — ARBRE. s. m. Plante boiseuse, qui croît en grosseur et en hauteur plus que toutes les autres plantes, et qui pousse différentes branches. Grand arbre. Gros arbre. Arbre haut et droit. Arbre tortu, branchu, touffu. Arbre sec. Arbre mort. Arbre… …   Dictionnaire de l'Académie Française 1798

  • arbre — ARBRE. s. m. La premiere r se prononce aussi bien que la seconde, la plus grande des plantes qui est de substance boiseuse, qui croist en grosseur & en hauteur & pousse ordinairement plusieurs branches. Grand arbre. gros arbre. arbre haut & droit …   Dictionnaire de l'Académie française

  • arbre — Arbre, m. penac. Signifie en general toute plante de grosses racines, gros tronc escorçu, eslevée en fueillu et escorçu branchage, Arbor, dont il est fait par Methatese. Arbre franc, est le contraire de sauvage, comme si l on disoit apprivoisé,… …   Thresor de la langue françoyse

  • arbre — marbre …   Dictionnaire des rimes

  • arbre — obs. form of arbor …   Useful english dictionary

  • Arbre — Pour les articles homonymes, voir Arbre (homonymie). Les arbres actuels sont principalement représentés par des espèces du groupe des p …   Wikipédia en Français

  • arbre — (ar br ) s. m. 1°   Grand végétal ligneux, et, dans le langage spécial de la botanique, végétal dont le tronc ligneux s élève à plus de six mètres. •   Le troisième tomba d un arbre Que lui même il voulut enter, LA FONT. Fabl. XI, 8. •   On peut… …   Dictionnaire de la Langue Française d'Émile Littré

  • ARBRE — s. m. Végétal ligneux dont la tige, plus ou moins élevée, ne se garnit ordinairement de branches et de feuilles qu à une certaine hauteur. Grand arbre. Gros arbre. Arbre haut et droit. Arbre tortu, branchu, touffu. Arbre sec. Arbre mort. Arbre… …   Dictionnaire de l'Academie Francaise, 7eme edition (1835)

  • Arbre B — Schéma définissant un arbre B. En informatique un arbre B (appelé aussi B arbre par analogie au terme anglais « B tree ») est une structure de données en arbre équilibré. Les arbres B sont principalement mis en œuvre dans les mécanismes …   Wikipédia en Français

  • ARBRE — n. m. Végétal ligneux dont la tige, plus ou moins élevée, ne se garnit ordinairement de branches et de feuilles qu’à une certaine hauteur. Grand arbre. Bel arbre. Arbre haut et droit. Arbre branchu, touffu. Arbre mort. Arbre qui se dépouille.… …   Dictionnaire de l'Academie Francaise, 8eme edition (1935)

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”