1 / 83

Cours 8 Arbres équilibrés

Cours 8 Arbres équilibrés. INF1101 – Algorithmes et structures de données. Cours 7 – Arbres équilibrés. Analyse des arbres binaires de recherche Arbres AVL Arbres rouge-noir Arbres AA. Arbres binaires - analyse.

trent
Télécharger la présentation

Cours 8 Arbres équilibrés

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cours 8 Arbres équilibrés INF1101 – Algorithmes et structures de données

  2. Cours 7 – Arbres équilibrés • Analyse des arbres binaires de recherche • Arbres AVL • Arbres rouge-noir • Arbres AA

  3. Arbres binaires - analyse • Le prix d’une opération (recherche, insertion, retrait) est proportionnel au nombre de noeuds visités • Donc, coût proportionnel à 1+profondeur • Meilleur cas: arbre équilibré (les feuilles à peu près toutes à la même profondeur) • insertion et retrait aléatoire tendent à créer un arbre équilibré • profondeur = lg n • Pire cas: liste chaînée • par exemple lors de l’insertion d’éléments ordonnés • profondeur = n • Donc, le coût est O(lg n) dans le meilleur cas et O(n) dans le pire cas

  4. Arbres équilibrés – concepts de base • Situation idéale visée: s’assurer que le sous-arbre de gauche et le sous-arbre de droite sont de même hauteur • Ce principe s’appliquerait à tous les noeuds de manière récursive • Si on appliquait ceci à chaque insertion ou retrait, ce serait très coûteux • Il faut donc établir des conditions plus faibles, mais qui nous assurent des gains en performance

  5. Arbres AVL • Définition: arbre de recherche binaire tel que pour chaque noeud, les hauteurs des ses sous-arbres gauche et droite sont différentes d’au plus 1 (on attribue la valeur -1 pour un sous-arbre vide) • Avec cette condition, on est assuré de toujours avoir un arbre dont la profondeur est proportionnelle à lg N

  6. 12 10 16 14 8 4 2 6 Arbres AVL - exemple Cet arbre est un arbre AVL

  7. 12 10 16 14 8 4 2 6 1 Arbres AVL – exemple Ces noeuds violent la condition Après l’ajout de 1 ce n’est plus un arbre AVL

  8. 12 10 16 14 13 8 4 2 6 Arbres AVL - exemple Après l’ajout de 13 ce n’est plus un arbre AVL

  9. Arbres AVL • Il faut, après chaque insertion ou retrait, rétablir l’équilibre s’il a été rompu par l’opération • Observation importante: après une insertion, seuls les noeuds qui sont sur le chemin du point d’insertion à la racine sont susceptibles d’être déséquilibrés • Deux cas: • insertion dans le sous-arbre de gauche du fils gauche ou dans le sous-arbre de droite du fils droit:  Simple rotation • insertion dans le sous-arbre de droite du fils gauche ou dans le sous-arbre de gauche du fils droit:  Double rotation

  10. 12 10 16 14 8 4 2 6 1 AVL – exemle de simple rotation Hauteur = 2 Hauteur = 0

  11. 12 16 14 10 8 4 2 6 1 AVL – exemple de simple rotation

  12. 12 16 14 10 8 4 2 6 1 AVL – exemple de simple rotation

  13. 12 16 14 10 8 4 2 6 1 AVL – exemple de simple rotation

  14. Arbres AVL – simple rotation (fils gauche) template <class T> void BST<T>::rotateWithLeftChild(Node * & k2) const { Node *k1 = k2->left; k2->left = k1->right; k1->right = k2; k2 = k1; }

  15. 10 8 AVL – exemple de double rotation 12 16 4 14 2 6 Noeud inséré 7

  16. 10 8 AVL – exemple de double rotation 12 16 4 14 2 6 7

  17. 10 8 AVL – exemple de double rotation 12 16 6 14 4 7 2

  18. 10 8 AVL – exemple de double rotation 12 16 6 14 4 7 2

  19. 10 8 AVL – exemple de double rotation 12 16 6 14 4 7 2

  20. AVL – implémentation • Algorithme récursif • Une fois le noeud inséré, en revenant sur notre chemin, il faut vérifier, pour chaque noeud parcouru, les différences de profondeur des sous-arbres gauche et droite • La rotation peut être requise à n’importe quel noeud qui se trouve dans le chemin de la racine au point d’insertion • Le retrait est passablement plus compliqué que l’insertion (mais demeure O(lg N)) • Il y a d’autres types d’arbres équilibrés plus facile à implémenter et plus efficaces

  21. AVL – exemple détaillé Pour chaque noeud on mettra 0 si ses deux sous-arbres ont la même profondeur +n si le sous-arbre gauche est plus profond avec une différence = n -n si le sous-arbre droit est plus profond avec une différence = n Séquence d’insertion: 2 10 12 4 16 8 6 14

  22. 2 AVL – exemple détaillé 2 10 12 4 16 8 6 14 0

  23. 10 2 AVL – exemple détaillé 210 12 4 16 8 6 14 -1 0

  24. 10 12 AVL – exemple détaillé 2 10 12 4 16 8 6 14 -2 2 -1 0

  25. 10 12 2 AVL – exemple détaillé 2 10 12 4 16 8 6 14 0 0 0 Rotation simple

  26. 10 12 2 4 AVL – exemple détaillé 2 10 12 4 16 8 6 14 1 0 -1 0

  27. 10 12 16 2 4 AVL – exemple détaillé 2 10 12 4 16 8 6 14 0 -1 -1 0 0

  28. 10 12 16 4 8 AVL – exemple détaillé 2 10 12 4 168 6 14 1 -1 2 -2 -1 0 0

  29. 10 12 16 4 8 2 AVL – exemple détaillé 2 10 12 4 168 6 14 0 0 -1 0 0 0 Rotation simple

  30. 10 12 16 4 8 2 6 AVL – exemple détaillé 2 10 12 4 16 8 6 14 1 -1 -1 0 1 0 0

  31. 14 10 16 6 2 4 8 AVL – exemple détaillé 2 10 12 4 16 8 6 14 0 -2 12 -1 1 0 1 0 0

  32. 12 10 14 16 6 4 8 2 AVL – exemple détaillé 2 10 12 4 16 8 6 14 1 0 -1 0 1 0 0 0 Rotation double

  33. 16 12 14 6 1 9 4 8 2 AVL – autre exemple Voici un exemple où la rotation se fait loin du point d’insertion 2 10 0 -1 1 1 0 0 0 -1 0 7 0 Noeud inséré

  34. 16 12 14 6 9 4 8 2 1 AVL – autre exemple Voici un exemple où la rotation se fait loin du point d’insertion 0 0 -1 10 0 1 0 -1 0 0 0 7 0 Après rotation double

  35. Arbres Rouge-Noir • L’arbre a les propriétés suivantes: • Chaque noeud est soit rouge soit noir • La racine est noire • Si un noeud est rouge, tous ses enfants doivent être noirs • À partir de n’importe quel noeud, tous les chemins de la racine jusqu’à un pointeur NULL doivent avoir le même nombre de noeuds noirs • Comme la racine est noire et il ne peut y avoir plus de deux noeuds rouges consécutifs, la longueur de tout chemin de la racine à une feuille ne peut être supérieure à 2 fois le nombre de noeuds noirs dans ce chemin

  36. Arbres Rouge-Noir - Exemple 30 70 15 20 10 85 60 90 65 80 5 50 40 55

  37. Arbres Rouge-Noir - Exemple 30 70 15 20 10 85 60 90 65 80 5 50 40 55

  38. Arbres Rouge-Noir – Contre-exemple 30 70 15 10 85 60 2 noeuds noirs 90 65 80 5 50 83 95 40 55 4 noeuds noirs

  39. Arbres Rouge-Noir - insertion • Un noeud inséré est toujours une feuille • On peut pas le colorier en noir, puisque cela violerait la condition 4 • On colore le noeud en rouge • Si le père est noir, pas de problème • Si le père est rouge, on viole la condition 3. Dans ce cas, on ajuste l’arbre, par le biais de changements de couleurs et de rotations

  40. Premier cas: le frère du noeud parent est noir (on utilise la convention qu’un noeud NULL est noir) Noeud inséré P G G X S P B S E C D A C X E D B A Rotation simple

  41. Premier cas: le frère du noeud parent est noir (on utilise la convention qu’un noeud NULL est noir) X G G P S P B S E C D A X A E D C B Noeud inséré Rotation double

  42. 10 (NOIR) 5 3 Exemple 30 70 15 20 85 60 90 65 80 50 (NOIR) 40 55 Noeud inséré Rotation simple

  43. 10 (NOIR) 5 3 30 70 15 20 85 60 90 65 80 50 (NOIR) 40 55 Rotation simple

  44. 10 (NOIR) 5 3 30 70 15 20 85 60 90 65 80 50 (NOIR) 40 55 Rotation simple

  45. 10 (NOIR) 5 3 30 70 15 20 85 60 90 65 80 50 (NOIR) 40 55 Rotation simple

  46. 30 70 15 20 85 5 60 90 10 65 80 3 50 (NOIR) (NOIR) 40 55 Rotation simple

  47. 10 (NOIR) 30 70 15 20 85 60 90 65 80 5 50 8 (NOIR) 40 55 Noeud inséré Rotation double

  48. 10 (NOIR) 30 70 15 20 85 60 90 65 80 5 50 8 (NOIR) 40 55 Rotation double

  49. 10 (NOIR) 30 70 15 20 8 85 60 90 65 80 5 50 (NOIR) 40 55

  50. 30 70 15 20 8 85 60 90 10 65 80 5 50 (NOIR) (NOIR) 40 55

More Related