Cours 8 Arbres équilibrés

Slides:



Advertisements
Présentations similaires
Structures de données avancées : Principales structures de fichiers
Advertisements

Structures de données avancées : B arbres
Structures de données avancées : Principales structures de données
Structures de données avancées : MTH ( Multidimensional trie hashing )
Chapitre 3 Les arbres binaires
Introduction à l’Algorithmique
Chapitre 3 (fin). Les arbres AVL
Chapitre VI. Arbres (définition, parcours, représentation)
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Utilisation des tableaux
CHAPITRE 10 Fonctions affines – Fonctions linéaires
LOGO Responsable du cours Mlle Amina GHRAB : 1 ère année IAG Institut Supérieur de Gestion de Tunis.
OCaml – Les arbres L3 MI.
Les structures de données arborescentes
Les algorithmes: complexité et notation asymptotique
IFT-2000: Structures de Données
RECURSIVITE ARBRES BINAIRES
Arbre Rouge Noir.
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
B-Arbre +.
Gestion de Fichiers Arbres B.
Les fichiers indexés (Les B-arbres)
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
LES ARBRES IUP 2 Génie Informatique
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes
Structures de données IFT-2000
Structures de données IFT-2000
Présentation Structures de Données et TDA
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
Indexes à Arbres et Indexes à Hachage
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Gestion de Fichiers Hachage Extensible.
Indexes à Arbres et Indexes à Hachage
Les arbres binaires.
Les arbres et tas binomiaux
Arbres équilibrés Les transformation restructurantes dans leur ordre de définition: LL RR LR RL Facteur d’équilibre de noeud = (hauteur de s-arbre a gauche)
Gestion de Fichiers GF-12: Comment Gerer les Indexes qui ne tiennent pas en Memoire de Maniere Efficace?: I. Indexes Bases sur les Structures dArbres Binaires.
Les Algorithmes de Tri Introduction Tri par Sélection
Exposé en structures de données
IFT-2000: Structures de données Piles et files Dominic Genest, 2009.
IV. Arbres  Arbre binaire (AB) Représentation SDD d’un AB
Les rotations Voici un autre exemple dajout. Celui-ci engendre un cas simple de déséquilibre, car larbre.
Structures de données IFT-2000
LES ARBRES Un arbre est une structure homogène dont chaque élément,
Structures de données IFT Abder Alikacem Semaine 10 Les arbres SPLAY Département dinformatique et de génie logiciel Édition septembre
Structures de données IFT-2000 Abder Alikacem Semaine 11 Gestion des arbres binaires de tri et de recherche. Les arbres cousus. Les arbres n-aires Département.
Question 1-b (10 pts) 55, 5, 40, 80, 65, 30, 60, 20, 15, 85, Ajout de 55 Ajout de Ajout de 40.
Structures de données IFT-2000
Un exemple détaillé Pour chaque noeud on mettra 0 si ses deux sous-arbres ont la même hauteur +n si le sous-arbre gauche est plus profond avec une différence.
Structures de données avancées : Arbres Red-Black
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
MIGO ET COMPLEXITE1 ARBRES EQUILIBRES Définition : On dit qu’un arbre binaire est H équilibré si en tout nœud de l’arbre, les hauteurs des sous-arbres.
Arbres binaires et tables de hachage
ETNA – 1ème année Guillaume Belmas –
Structures de données avancées : Arbres ‘Left Leaning Red-Black’
Exploration systématique de graphes
Structures de données avancées : Arbres AA
Structures de données avancées : B arbres
Structures de données avancées : Variantes des B arbres
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : Principales structures de données
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 10 Les algorithmes de recherche Les structures arborescentes Département d’informatique et de génie.
Files de priorité (Priority Queue)
Les monceaux (Heap) Monceaux Propriétés des Monceaux
Arbres AVL - Hauteur d’un arbre AVL - Insertion et restructuration
4/25/2017 4:30 PM Arbres (2,4) CSI2510 CSI2510.
Transcription de la présentation:

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

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

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 INF1101

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 INF1101

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 INF1101

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

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

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

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 INF1101

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

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

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

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

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; } INF1101

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

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

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

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

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

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 INF1101

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 INF1101

AVL – exemple détaillé 2 10 12 4 16 8 6 14 2 INF1101

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

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

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

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

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

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

AVL – exemple détaillé 2 10 12 4 16 8 6 14 10 4 12 -1 2 8 16 Rotation simple INF1101

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

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

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

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

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

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 INF1101

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

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

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

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 INF1101

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

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

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

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

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

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

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

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

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

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

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

Si le frère du parent est rouge Noeud inséré G P X G P S B S C D E A C X D E B A Ceci cause un problème. Lequel? INF1101

Si le frère du parent est rouge Noeud inséré G P X G P S B S C D E A C X D E B A Ceci cause un problème. Lequel? Si le parent de P est rouge, il faudra propager vers le haut les ajustements, ce qui nous fait perdre l’avantage sur AVL INF1101

Arbres Rouge-Noir – top-down Pour éviter de devoir propager vers le haut l’algorithme de rotation, on peut utiliser une approche top-down Idée: garantir que, lorsqu’on arrive au point d’insertion, qu’il ne s’agisse pas d’un noeud rouge On pourra donc ajouter tout simplement un noeud rouge, sans risque de violer la propriété 3 INF1101

Arbres Rouge-Noir – top-down (suite) En descendant dans l’arbre, lorsqu’on rencontre un noeud qui a deux fils rouges, on colore ce noeud rouge et noir ses deux fils: Ainsi, le nombre de noeuds noirs dans un chemin demeure inchangé Par contre, on peut se retrouver avec deux noeuds rouges consécutifs, si le parent de X est rouge. Dans ce cas, il faudra appliquer une rotation Ceci fonctionnera parce qu’on est sur que le noeud frère du parent de X ne peut être que noir. Attention: la racine doit toujours demeurer noire X X FG FD FG FD INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 10 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 10 85 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 10 85 15 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 15 85 10 Rotation double INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 Attention: la racine ne change pas de couleur 15 85 10 Ajustement durant le parcours INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 15 85 10 70 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 15 85 10 70 20 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 15 70 10 20 85 Rotation simple INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 15 70 10 20 85 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 15 70 10 20 85 Ajustement durant le parcours INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 15 70 10 20 85 60 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 15 70 10 20 85 60 30 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 15 70 10 30 85 20 60 Rotation double INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 15 70 10 30 85 20 60 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 15 70 10 30 85 20 60 Ajustement durant le parcours INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 15 70 10 30 85 20 60 50 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 30 70 15 10 20 60 85 50 Rotation double INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 30 70 15 10 20 60 85 50 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 30 70 15 10 20 60 85 50 Ajustement durant le parcours INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 30 70 15 10 20 60 85 50 65 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 30 70 15 10 20 60 85 50 65 80 Remarque: ces noeuds n’ont pas été modifiés parce qu’il ne sont pas dans le chemin parcouru INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 30 70 15 10 20 60 85 50 65 80 90 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 30 70 15 10 20 60 85 50 65 80 90 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 30 70 15 10 20 60 85 50 65 80 90 Ajustement durant le parcours INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 30 70 15 10 20 60 85 50 65 80 90 40 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 30 70 15 10 20 60 85 5 50 65 80 90 40 INF1101

Arbres Rouge-Noir – Exemple détaillé 10 85 15 70 20 60 30 50 65 80 90 40 5 55 30 70 15 10 20 60 85 5 50 65 80 90 40 55 INF1101

Arbres AA Implémentation plus simple que les autres Une condition supplémentaire: le fils de gauche ne peut pas être rouge Soit le niveau d’un noeud défini ainsi: 1 si c’est une feuille niveau du parent si le noeud est rouge (1 – niveau du parent) si le noeud est noir On construit un arbre équivalent avec cette définition de niveau et on obtient un algorithme plus simple à implémenter (voir livre) INF1101

Question Pourquoi les arbres de recherche binaire sont-ils en général plus efficace qu’une recherche dichotomique dans un tableau trié? Peut-on imaginer des situations où il serait préférable d’utiliser une recherche binaire dans un tableau ordonné? INF1101