Correspondance entre les arbres (2,4) et les arbres rouges-noirs Arbres Rouges-Noirs On peut voir un arbre rouge-noir comme étant la représentation d’un arbre (2,4) par un arbre binaire de recherche dont les noeuds sont colorés rouge ou noir En comparaison avec les arbres (2,4), les arbres rouges-noirs ont La même complexité logarithmique Plus simple à implémenter car on a une seule sorte de noeud 3 4 5 5 4 3 IFT2015, A2009, Sylvie Hamel Université de Montréal Arbres rouges-noirs 2 6 7 3 ou 6 5 2 7 Arbres Rouges-Noirs 1 Hauteur d’un arbre rouge-noir Un arbre rouge-noir peut aussi être défini comme étant un arbre binaire de recherche qui satisfait les propriétés suivantes: La hauteur d’un arbre rouge-noir gardant en mémoire n éléments est en O(log n) Propriété de racine: La racine est noir Preuve: La hauteur d’un arbre rouge-noir est au plus le double de la hauteur de l’arbre (2,4) lui correspondant, qui est de O(log n) Propriété externe: Les noeuds externes sont noirs Propriété interne: Les enfants d’un noeud rouge sont noirs L’algorithme de recherche dans un arbre rouge-noir est exactement le même algorithme que pour la recherche dans un arbre binaire de recherche Propriété de profondeur: Tous les noeuds externes ont la même profondeur noir, qui est définie comme!étant le nombre d’ancêtre interne noir 9 4 2 15 6 12 On a donc que la complexité en temps de la recherche dans un arbre rouge-noir est en O(log n) 21 7 IFT2015, A2009, Sylvie Hamel Université de Montréal Arbres Rouges-Noirs 2 IFT2015, A2009, Sylvie Hamel Université de Montréal Arbres Rouges-Noirs 3 Insertion dans un arbre rouge-noir Remédier à un double rouge Considérons un double rouge: v, le parent rouge, z, le fils rouge et considérons w, le frère de v. Pour insérer un élément (k,v) dans un arbre rouge-noir, on exécute l’algorithme d’insertion d’un arbre binaire de recherche et on colore rouge le nouveau noeud z, sauf si z est la racine Exemple: Insérer un élément de clé 4 Cas 1: w est noir Cas 2: w est rouge Les propriétés de racine et de profondeur, de même que la propriété externe sont préservées on peut voir le double rouge comme un remplacement incorrect d’un 4-noeud on peut voir le double rouge comme un débordement dans un arbre (2,4) Si le parent n de z est noir, on préserve aussi la propriété interne et on a terminé l’algorithme d’insertion Restructuration: On exécute le bon remplacement du 4-noeud Recoloration: On performe l’équivalent d’un fractionnement Sinon, on a un double rouge et on doit modifier l’arbre pour rétablir la propriété interne. n 6 3 n 8 4 2 z 6 8 3 z 4 IFT2015, A2009, Sylvie Hamel Université de Montréal w 4 Arbres Rouges-Noirs 7 6 z v 7 6 2 4 6 7 IFT2015, A2009, Sylvie Hamel Université de Montréal 5 Arbres Rouges-Noirs Il y a 4 configurations possibles demandant une restructuration, dépendant de l’emplacement des deux noeuds rouges formant le double rouge 2 La propriété interne est restorée et les autres propriétés sont préservées z 6 4 2 Cas 1: Restructuration (suite) Cela revient à exécuter le remplacement correct du 4-noeud 2 w .. 2 .. Considérons un double rouge: v, le parent rouge, z, le fils rouge et considérer w, le frère de v. Lorsque w est noir, on exécute une restructuration 4 v 4 6 7 z Cas 1: Restructuration w 7 x z 6 v 4 x v 2 4 6 4 z 2 x v 6 z 2 x 4 v 6 z z v 6 w 4 7 v b 2 a 4 2 6 c 4 6 7 .. 2 .. IFT2015, A2009, Sylvie Hamel Université de Montréal Arbres Rouges-Noirs 6 IFT2015, A2009, Sylvie Hamel Université de Montréal Arbres Rouges-Noirs 7 Cas 2: Recoloration Complexité en temps d’une insertion Considérons un double rouge: v, le parent rouge, z, le fils rouge et considéroms w, le frère de v. Lorsque w est rouge, on exécute une recoloration Cela correspond à exécuter le fractionnement d’un 5-noeud Il est possible que le double rouge se propage chez le grand-parent 4 2 z 7 v w 4 2 z 6 7 La hauteur d’un arbre rouge-noir gardant en mémoire n éléments est en O(log n) 1. L’étape 1 prend un temps O(log n), étant donné qu’on doit visiter O(log n) noeuds lors de la recherche On exécute chercher(k) pour trouver le noeud d’insertion z 2. On insère le nouvel élément (k, vo) dans le noeud z et on colore z rouge 3. Tant que doubleRouge(z) si estNoir(frère(parent(z))) z ! restructure(z) On recolore le parent v et son frère w en noir et le grand-parent (le parent de v) devient rouge, sauf si c’est la racine w Algorithme insérer(k, vo) v 6 sinon z ! recolore(z) … 4 … 2 4 6 7 IFT2015, A2009, Sylvie Hamel Université de Montréal 2 L’étape 3 prend un temps O(log n), étant donné qu’on exécute au plus O(log n) recolaration, chacune prenant un temps O(1) Au plus une restructuration prenant un temps O(1) L’insertion d’un élément dans un arbre rouge-noir prend donc un temps O(log n) 6 7 Arbres Rouges-Noirs L’étape 2 prend un temps O(1) 8 Suppression dans un arbre rouge-noir IFT2015, A2009, Sylvie Hamel Université de Montréal 9 Arbres Rouges-Noirs Supprimer dans un arbre binaire de recherche (rappel) Pour enlever un élément de clé k dans un arbre binaire de recherche, on commence par exécuter l’algorithme chercher(k). Pour supprimer un élément de clé k dans un arbre rouge-noir, on exécute l’algorithme de suppression d’un arbre binaire de recherche < Exemple 1: Enlever(4) Si k est dans l’arbre l’algorithme chercher(k) se terminera dans un noeud interne w 22 9 > 51 6 44 w 5 Si l’un des enfant de w est une feuille, on enlève cette feuille et w 6 2 Sinon... 1 IFT2015, A2009, Sylvie Hamel Université de Montréal Arbres Rouges-Noirs 10 IFT2015, A2009, Sylvie Hamel Université de Montréal 8 Arbres Rouges-Noirs 9 5 8 11 Suppression dans un arbre rouge-noir Supprimer dans un arbre binaire de recherche (suite) Si k est dans l’arbre, l’algorithme chercher(k) se terminera dans un noeud interne w. Si les fils de w sont tous les deux des noeuds internes alors Exemple 2: Enlever(3) > 1 On trouve le noeud interne y qui suit w lors d’un parcours symétrique de l’arbre et son fils gauche x 33 w 2 Soit v, le noeud interne et w, le noeud externe enlever lors de la suppression. Soit r, le frère de w. 88 6 Si soit v ou r était rouge, on colore r noir et on a terminé 9 y 5 On enlève l’entrée dans w et on la remplace par l’entrée dans y Sinon (v et r était noir), enlever v va causer une violation de la propriété de profondeur et demander une restructuration de l’arbre. On appelera cette situation double noir au noeud r. x On enlève les noeuds y et x 1 5 w 6 2 8 9 12 IFT2015, A2009, Sylvie Hamel Université de Montréal x x 30 z 40 20 y ou 40 10 10 20 r y 20 10 x 20 10 … 40 r 40 r x 30 30 30 20 30 40 40 IFT2015, A2009, Sylvie Hamel Université de Montréal 10 40 20 10 13 Arbres Rouges-Noirs 30 z … 20 … 10 4 10 30 … 30 40 w Cas 2: Si y est noir et les deux fils de y sont noirs, on performe une recoloration qui équivaut à une fusion dans l’arbre (2,4) correspondant. La recolaration peut causer un problème de double noir chez le parent de r. Cas 1: Si y est noir et a un fils z rouge, on performe une restructuration qui équivaut à un transfert dans l’arbre (2,4) correspondant. À la suite de cette restructuration, toutes les propriétés des arbres rouges-noirs sont rétablies. 10 20 r 3 Soit r le noeud double noir. Soit y, le frère de r. Soit r le noeud double noir. Soit y, le frère de r. r 6 v Remédier à un double noir Remédier à un double noir y r 4 Arbres Rouges-Noirs … 30 … 8 3 6 IFT2015, A2009, Sylvie Hamel Université de Montréal Pour supprimer un élément de clé k d’un un arbre rouge-noir, on exécute l’algorithme de suppression d’un arbre binaire de recherche y 20 40 Arbres Rouges-Noirs 14 IFT2015, A2009, Sylvie Hamel Université de Montréal Arbres Rouges-Noirs 15 Remédier à un double noir Insertion: Soit r le noeud double noir. Soit y, le frère de r. Cas 3: y est rouge, on performe un ajustement qui équivaut à choisir une représentation différente d’un 3-noeud dans l’arbre (2,4) correspondant. L’ajustement va nous ramener soit dans le cas 1, soit dans le cas 2 Restructuration Recoloration 20 30 30 y z 40 20 40 Le double rouge est enlevé Fractionnement Le double rouge est enlevé ou il se propage vers le haut Opérations arbres rouge-noir 10 Restructuration Remédier à un double noir Opérations arbres (2,4) Transfert Fusion y 30 z … 10 … ... ... 20 10 40 IFT2015, A2009, Sylvie Hamel Université de Montréal Résultats Changement de représentation d’un 4-noeud Suppression: r Recoloration 20 Opérations arbres (2,4) x Text … 10 … ... ... Remédier à un double rouge Opérations arbres rouge-noir x Ajustement 30 40 Arbres Rouges-Noirs r 16 IFT2015, A2009, Sylvie Hamel Université de Montréal Changement de représentation d’un 3-noeud Arbres Rouges-Noirs Résultats Le double noir est enlevé Le double noir est enlevé ou il se propage vers le haut Suivi d’une restructuration ou d’une recoloration 17