Benjamin Monmege
Interface :
recherche dichotomique en \(O(\log(n))\)
recherche puis décalage en \(O(n)\)
recherche puis décalage en \(O(n)\)
test de longueur en \(O(1)\)
Arbre binaire étiqueté par les éléments tel que pour tout nœud \(p\) d’étiquette \(x\):
Quels algorithmes pour travailler avec ces ABR ?
Complexité : \(O(\mathit{hauteur})\)
Complexité : \(O(\mathit{hauteur})\)
Complexité : dans tous les cas, \(O(\mathit{hauteur})\)
Complexité : \(O(1)\)
On a déjà vu que \(\lceil \log_2(n+1)\rceil \leq \mathit{hauteur} \leq n\)
Dans le meilleur des cas, complexités des opérations dans les ABR : \(O(\log(n))\)
Dans le pire des cas, complexités des opérations dans les ABR : \(O(n)\), pire que l’utilisation de tableaux triés
La hauteur d’un arbre AVL à \(n\) nœuds est inférieure ou égale à \(1,45 \log_2 n\).
Preuve : Minorer le nombre \(n_h\) de nœud d’un arbre AVL de hauteur \(h\)…
\(n_h = 1 + n_{h-2} + n_{h-1}\) avec \(n_0 = 1\), \(n_1 = 2\)
Résolution…
\(n_h = \left(1+\frac{2}{\sqrt{5}}\right) \cdot \left(\frac{1+\sqrt{5}}{2}\right)^h + \left(1-\frac{2}{\sqrt{5}}\right) \cdot \left(\frac{1-\sqrt{5}}{2}\right)^h - 1 \geq \left(1+\frac{2}{\sqrt{5}}\right) \cdot \left(\frac{1+\sqrt{5}}{2}\right)^h\)
d’où \(\log_2 n_h \geq h \log_2 \left(\frac{1+\sqrt{5}}{2}\right)\)
Complexité dans le pire des cas : \(O(\log(n))\)
Pour un AVL à \(n\) nœuds :
On ne peut pas faire mieux… si la seule opération autorisée sur les clés est la comparaison de deux clés (pour faire mieux, il faut savoir hacher par exemple)
Comment maîtriser la hauteur d’un ABR ?
De nombreuses méthodes existent : arbres rouge-noir, arbres fortement équilibrés, arbres AVL, arbres 2-3, arbres 2-3-4, arbres B…