The original description of the k-d tree recognized that rebalancing techniques, such as are used to build an AVL tree or a red-black tree, are not applicable to a k-d tree. Hence, in order to build a balanced k-d tree, it is necessary to find the median of the data for each recursive subdivision of those data. The sort or selection that is used to find the median for each subdivision strongly influences the computational complexity of building a k-d tree. This paper discusses an alternative algorithm that builds a balanced k-d tree by presorting the data in each of k dimensions prior to building the tree. It then preserves the order of these k sorts during tree construction and thereby avoids the requirement for any further sorting. Moreover, this algorithm is amenable to parallel execution via multiple threads. Compared to an algorithm that finds the median for each recursive subdivision, this presorting algorithm has equivalent performance for four dimensions and better performance for three or fewer dimensions.
academic
Construction d'un Arbre k-d Équilibré en Temps O(kn log n)
La description originale de l'arbre k-d reconnaît que les techniques de rééquilibrage utilisées pour construire les arbres AVL ou les arbres rouge-noir ne s'appliquent pas aux arbres k-d. Par conséquent, pour construire un arbre k-d équilibré, il est nécessaire de trouver la médiane pour chaque subdivision récursive des données. Le tri ou la sélection utilisés pour trouver la médiane à chaque subdivision influencent fortement la complexité de calcul de la construction de l'arbre k-d. Cet article traite d'un algorithme alternatif qui construit un arbre k-d équilibré en pré-triant les données sur chacune des k dimensions avant la construction de l'arbre. Les k ordres triés sont ensuite maintenus pendant la construction de l'arbre, évitant ainsi le besoin de tris supplémentaires. De plus, cet algorithme se prête à l'exécution parallèle par multithreading. Comparé aux algorithmes qui trouvent la médiane pour chaque subdivision récursive, cet algorithme de pré-tri offre des performances équivalentes en quatre dimensions et de meilleures performances en trois dimensions ou moins.
Importance de l'arbre k-d: L'arbre k-d est une structure de données importante introduite par Bentley en 1975 pour stocker des données k-dimensionnelles, largement utilisée dans la recherche multidimensionnelle, la recherche du plus proche voisin, les requêtes de plage et autres scénarios.
Défis du problème d'équilibrage: Contrairement aux arbres binaires standard, les arbres k-d utilisent différentes clés à différents niveaux pour la partition, ce qui rend les techniques de rééquilibrage traditionnelles (comme les rotations dans les arbres AVL ou rouge-noir) inapplicables aux arbres k-d.
Limitations des méthodes existantes:
Les méthodes traditionnelles nécessitent de trouver la médiane à chaque subdivision récursive
Utiliser Quicksort pour trouver la médiane: O(n) dans le meilleur cas, O(n²) dans le pire cas
Utiliser Merge sort ou Heap sort: garantit O(n log n), mais entraîne une complexité globale de O(n log² n)
L'algorithme de médiane O(n) de Blum et al., bien que théoriquement excellent, est complexe à implémenter
Proposition d'un algorithme de construction d'arbre k-d avec complexité O(kn log n): Évite les tris répétés pendant le processus récursif grâce au pré-tri
Conception d'une stratégie de partition maintenant l'ordre de tri: Maintient l'ordre des k tableaux pré-triés pendant la construction de l'arbre
Implémentation d'un schéma de parallélisation efficace: L'algorithme se prête naturellement à l'exécution multithreading
Fourniture d'une analyse de performance complète: Incluant l'analyse de complexité théorique et les tests de performance pratiques
Développement de plusieurs techniques d'optimisation: Incluant six stratégies d'optimisation telles que l'optimisation de comparaison de surclés et le partitionnement de tri différé
Entrée: Un ensemble de n points de données k-dimensionnels
Sortie: Un arbre k-d équilibré supportant des opérations de recherche multidimensionnelle efficace
Contraintes: Maintenir l'équilibre de l'arbre, éviter les points de données dupliqués
Flux d'algorithme:
1. Sélectionner l'élément médian du tableau d'index de la dimension actuelle comme point de partition
2. Partitionner les tableaux d'index des autres dimensions selon ce point de partition
3. Le processus de partition maintient l'ordre de tri dans chaque tableau
4. Traiter récursivement les sous-tableaux gauche et droit, en utilisant cycliquement différentes dimensions
k=4 est le point critique de performance entre les deux algorithmes, fournissant des conseils pour la sélection d'algorithme dans les applications pratiques.
Cet article cite 21 références importantes, couvrant:
L'article original de Bentley sur les arbres k-d 4
L'algorithme de médiane de temps linéaire de Blum et al. 6
Les littératures classiques sur divers algorithmes de tri 8,12,20
Les travaux connexes en calcul parallèle et modélisation de performance 2,10
Les applications de recherche du plus proche voisin et du plus proche voisin inverse 7,13
Évaluation Globale: Ceci est un article d'algorithme de haute qualité qui propose une méthode de pré-tri innovante dans le domaine de la construction d'arbre k-d. L'article offre une analyse théorique rigoureuse, une conception expérimentale complète et une valeur pratique considérable. Bien qu'il présente des limitations dans les cas de haute dimensionnalité, il fournit une solution efficace pour le traitement de données spatiales basse dimensionnalité, offrant une valeur de référence importante pour les domaines connexes.