93
Structures de données avancées : Arbres de recherche binaire équilibrés Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) www.zegour.uuuq.com email: [email protected]

Structures de données avancées : Arbres de recherche binaire équilibrés

Embed Size (px)

DESCRIPTION

Structures de données avancées : Arbres de recherche binaire équilibrés. Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) www.zegour.uuuq.com email: [email protected]. Les arbres AVL. Arbres AVL. - PowerPoint PPT Presentation

Citation preview

Diapositive 1

Structures de donnes avances : Arbres de recherche binaire quilibrsPr ZEGOUR DJAMEL EDDINEEcole Suprieure dInformatique (ESI)www.zegour.uuuq.com email: [email protected] arbres AVLArbres AVLUn arbre AVL est un arbre binaire quilibr dans lequel les profondeurs des deux sous arbres de chaque nud ne diffrent pas plus d'un.A chaque nud est associ un facteur d'quilibrage gal la diffrence entre la profondeur du sous arbre gauche et celle du sous arbre droit.

2Arbres AVLQuand on insre un lment, l'arbre peut devenir non quilibr

La figure illustre tous les cas possibles d'insertionsLes ui dsignent les cas o l'arbre se dsquilibre.L'arbre devient non quilibr quand le nouveau nud insr est un descendant gauche d'un nud qui avait un facteur d'quilibrage gal 1 (u1 u8)L'arbre devient non quilibr quand le nouveau nud insr est un descendant droit d'un nud qui avait un facteur d'quilibrage gal -1(u9 u12).Le plus jeune antcdent qui devient non quilibr Les arbres AVLArbres AVL (Techniques d'quilibrage )Examinons un sous arbre de racine le plus jeune antcdent qui devient non quilibr suite une insertionPrenons le cas o le facteur d'quilibrage est 1 pour ce jeune antcdent

Les arbres AVLArbres AVL (Techniques d'quilibrage )

A dsigne le plus jeune antcdent devenu non quilibrPuisque f(A) = 1, son sous arbre gauche est non NILSoit donc B le fils gauchef(B) doit donc avoir la valeur 0Deux cas sont considrer : (a) et (b) (a)le nouveau nud est insr dans le sous arbre gauche de B. Donc f(B) devient 1 et f(A) devient 2(b) le nouveau nud est insr dans le sous arbre droit de B. f(B) devient -1 et f(A) devient 2.Les arbres AVLArbres AVL (Techniques d'quilibrage )

Transformer l'arbre de telle sorte quel'inordre soit prservl'arbre transform soit quilibrLes arbres AVLArbres AVL (Techniques d'quilibrage )

(a) rotation droite du nud A(b) rotation gauche du nud B suivie par une rotation droite du nud ALes arbres AVLArbres AVL (Algorithme d'insertion)La premire partie de l'algorithme consiste insrer la cl dans l'arbre sans tenir compte du facteur d'quilibrageElle garde aussi la trace du plus jeune antcdent, soit Y qui devient non quilibrLa deuxime partie fait la transformation partir de YLes arbres AVLArbres AVL (Rotation gauche)NDDGDDGPDDGNDDGPAFF_FD(N, DG)AFF_FG(D, N))AFF_FG(Parent, D)Rotation gauche(N)Les arbres AVLArbres AVL (Rotation droite)NGDGDGGPGDGGNGDPAFF_FG(N, GD)AFF_FD(G, N))AFF_FD(Parent, G)Rotation droite (N)Les arbres AVLArbres AVL (Exemples)Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL. Insertion A, B, X

Les arbres AVLArbres AVL (Exemples)Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL. Insertion L, M

Les arbres AVLArbres AVL (Exemples)Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL. Insertion C

Les arbres AVLArbres AVL (Exemples)Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL. Insertion D, E

Les arbres AVLArbres AVL (Exemples)Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL. Insertion H

Les arbres AVLArbres AVL (Exemples)Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL. Insertion R

Les arbres AVLArbres AVL (Exemples)Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL. Insertion F

Les arbres AVLArbres AVL (Suppression)tape 1 : comme dans un arbre de recherche binaire ordinairetape 2 : mettre jour les balancesCas o la balance dun nud A devient +2 Le fils gauche B de A doit existerLes cas suivants peuvent se prsenterB a une balance gale + 1B a une balance gale 1B a une balance gale 0Mme traitement symtrique dans le cas o la balance dun nud A devient -2 Traitement peut continuer en cascadeLes arbres AVLArbres AVL (Suppression)B a une balance gale + 1ABn-1nn-1+2+1ABn-1nn-100Les arbres AVLArbres AVL (Suppression)B a une balance gale -1B a donc un fils sa droite, soit C.Cas Balance (C)= 0ABn-1n-1n+2-1ABn-1n-1+2-1Cn-1n-10Les arbres AVLArbres AVL (Suppression)B a une balance gale -1 , C son fils droit avec Balance(C)=0ACn-1n-100Bn-1n-10ABn-1n-1+2-1Cn-1n-10Les arbres AVLArbres AVL (Suppression)B a une balance gale -1B a donc un fils sa droite, soit C.Balance (C)= +1ABn-1n-1n+2-1ABn-1n-1+2-1Cn-1n-2+1Les arbres AVLArbres AVL (Suppression)ACn-1n-20-1Bn-1n-10ABn-1n-1+2-1Cn-1n-2+1B a une balance gale -1 , C son fils droit avec Balance(C)=+1Les arbres AVLArbres AVL (Suppression)B a une balance gale -1B a donc un fils sa droite, soit C.Balance (C)= -1ABn-1n-1n+2-1ABn-1n-1+2-1Cn-2n-1-1Les arbres AVLArbres AVL (Suppression)ACn-1n-100Bn-2n-1+1ABn-1n-1+2-1Cn-2n-1-1B a une balance gale -1 , C son fils droit avec Balance(C)=-1Les arbres AVLArbres AVL (Suppression)B a une balance gale 0ABn-1nn+20ABn-1nn-1+1Les arbres AVLArbres AVL (Analyse thorique)la profondeur maximale d'un arbre binaire quilibr est 1.44*Log2nLa recherche dans un tel arbre n'exige jamais plus de 44% de plus de comparaisons que pour un arbre binaire completPour n grand, l'arbre de recherche binaire quilibr se comporte bien avec un temps de recherche gal Log2(n) + 0.25En moyenne une rotation est faite pour 46.5% des insertionsOperations de maintenance :- Restructuration = 1 rotation ou double rotation Insertion : au plus 1 restructuration suppression : au plus Log2 (N) restructurationsLes arbres AVLArbres 2-3Les arbres 2-3Cest un arbre quilibr (B-arbre) dordre 3Equilibre garanti par construction Arbres 2-3(Types de noeud dans un arbre 2-3)Les arbres 2-3

2-noeud3-noeudArbres 2-3(Exemple dun arbre 2-3)Les arbres 2-3

Arbres 2-3(Insertion)Les arbres 2-3L insertion est ascendante (Bottom up)Processus continue en cascade : quand un noeud interne contient 3 lments, il est clat.Si la racine contient 3 lments, elle est clate. Cration dune nouvelle racineSi llment insrer nexiste pas, il est toujours insr dans une feuilleSi la feuille contient aprs seulement 2 lments, fin de linsertion Si la feuille contient aprs 3 lment, clater le noeud feuille en deux noeuds n1 et n2 et llment du milieu monte vers le preArbres 2-3(Insertion/ Eclatement dun nud interne)Les arbres 2-3

Arbres 2-3(Suppression)Les arbres 2-3La suppression est ascendante (Bottom up)Quand un noeud devient vide et a un frre qui peut donner (3-noeud) , on fait une redistributionLlment est toujours supprim dune feuilleQuand un noeud devient vide et a un frre qui ne peut pas donner (2-noeud) , on fait une fusionSi la feuille ne devient pas vide, fin de linsertion Si la feuille devient vide, un processus en cascade est dclenchArbres 2-3(Suppression)Les arbres 2-3Cas des noeuds externes

Redistribuer

FusionnerArbres 2-3(Suppression)Les arbres 2-3Cas des noeuds internes

RedistribuerFusionner

Arbres 2-3(Suppression)Les arbres 2-3Cas de la racine

EliminationArbres 2-3 (Mesures)Les arbres 2-3Nombre dlments dans un 2-3 tree de hauteur h est entre 2h - 1 et 3h - 1. Donc, la hauteur dun 2-3 tree avec n lments est entre ENT(log3 ( N+1 )) et ENT(log2 ( N+1))Arbres 2-3 (Variantes)Les arbres 2-3BB (Binary B-tree ) : cest la reprsentation dun B-arbre en un arbre de recherche binaire. Les noeuds des arbres internes sont lis horizontalement . Les racines des arbres internes sont lis horizontalement.Arbres AA (Arne Anderson) : cest un BB dordre 3 dans lequel on attribue le meme niveau aux noeuds lies horizontalement. Arbres Red-Black : cest un BB dordre 3 dans lequel les racines des arbres internes portent la couleur Noir et les noeuds lis horizontalement portent la couleur rougeArbres 2-3(Variantes)Des arbres 2-3 vers BB

509020701201501030406080100110130140160Lien verticalLien horizontalArbres 2-3(Variantes)Des arbres 2-3 vers BB50902070120150103040608010011013014016045Lien verticalLien horizontal509020701201501030406080100110130140160Arbres 2-3(Variantes)Des arbres 2-3 vers AA5090207012015010304060801001101301401601111111111232223509020701201501030406080100110130140160Arbres 2-3(Variantes)Des arbres 2-3 vers RB509020701201501030406080100110130140160509020701201501030406080100110130140160Arbres AAUn arbre AA (Arne Anderson) est un arbre binaire de recherche o chaque nud a un champ Niveau.Le niveau dune feuille est gal 1.

Le niveau dun fils gauche est strictement infrieur au niveau de son pere.

Le niveau dun fils droit est infrieur ou gale au niveau de son pere.

Le niveau dun fils droit doit etre strictement infrieur celui de son sont grand pre.

Chaque noeud du niveau suprieur 1 doit avoir deux fils.Les arbres de AndersonArbres AA ( Proprits)Un arbre AA satisfait les proprits dun RB avec une restriction :Les fils gauche ne doivent pas etre rouges ( un noeud et son fils gauche ne doivent pas avoir le meme niveauLes algorithmes dun arbre AA sont trs simplifis par rapport ceux dun arbre RB

Les arbres de AndersonArbres AA (Operations de maintenance)Les arbres de Anderson

Skew(P) : limine un lien gauche par une rotation droiteSplit(P) : divise un pseudo nud large par une rotation gaucheSi Niveau (Fg(P)) = Niveau(P)Rotation_Droite(P)Si Niveau (Fd(Fd(P)) = Niveau(P)Rotation_Gauche(P)Inc(Niveau)// Ancien Fd(P)

Arbres AA (Insertion)Ajouter un nouveau nud au niveau 1Suivre la branche du nouveau nud vers la racine. Pour chaque nud P rencontr faire :Skew(P)Split(P) Les arbres de AndersonArbres AA (Insertion/ Exemple)Les arbres de Anderson6916686686891611111111268916112271689161122718616886611227191168912786SPLIT(6)SKEW(91)Arbres AA (Insertion/ Exemple)Les arbres de Anderson6886611227191190901688661122719116886611227190191168906212271861911SKEW(91)SPLIT(86)44, 45, 85, 82, 26, 50, 39Arbres AA(Insertion/ Exemple)Les arbres de Anderson68852722345282190261261501861911391441Arbres AA (Suppression)Supprimer le nud de la feuilleSuivre la branche du nud supprim vers la racine. Pour chaque nud P rencontr faire :

Si la diffrence de niveau entre P et lun de ses fils devient gale 2, dcrmenter le niveau de P par une unit. Si , aprs, le niveau de P est gal au niveau de son fils doit, dcrmenter le niveau de ce dernier.

Skew(P)

Split(P) Les arbres de AndersonArbres AA(Suppression/ Exemple)Les arbres de Anderson688527223452821902612615018619113914416Arbres AA(Suppression/ Exemple)Les arbres de Anderson68852722345282190226150186191139144168Remplacer 68 par 82Niv(85) 1; Niv(90)1Skew(90); Split(85)Arbres AA(Suppression/ Exemple)Les arbres de Anderson82862722345285190126150191139144191, 27Arbres AA(Suppression/ Exemple)Les arbres de Anderson82863922345285190126150144186Remplacer 86 par 90Niv(90) 1; Skew(90)Arbres AA(Suppression/ Exemple)Les arbres de Anderson828539123452901261501441Niv(82)2; Skew(82)Arbres AA(Suppression/ Exemple)Les arbres de Anderson828539122452901261501441Skew(82)Arbres AA(Suppression/ Exemple)Les arbres de Anderson828539122452901261501441Split(39)Arbres AA(Suppression/ Exemple)Les arbres de Anderson82853912245326150144190901Arbres AA(Suppression/ Exemple)Les arbres de Anderson82853912245326150144144Niv(39) 1; Skew(39);Niv(45) 2Arbres AA(Suppression/ Exemple)Les arbres de Anderson82852611245250139145Remplacer 45 par 50Niv(82) 1; Arbres AA(Suppression/ Exemple)Les arbres de Anderson8582852611150239182261150239182Niv(50) 1; Skew(50);Skew(50); Split(26)502611392Arbres 2-4(Insertion)Les arbres 2-4Types de noeud dans un 2-4 tree

2-noeud3-noeud

4-noeudArbres 2-4( Exemple)Les arbres 2-4

Arbres 2-4(Insertion)Les arbres 2-4Types de noeud dans un 2-3 treeL insertion peut etre ascendante (Bottom up) ou descendante (Top Down)Le noeud clat peut etre la racine, un 2-noeud ou un 3-noeud.Insertion top down : avantageuse (vite la cascade)Pendant la recherche, clater tout 4-noeud rencontr.Linsertion se fait au niveau de la feuille et lalgorithme se termineArbres 2-4(Insertion)Les arbres 2-4Eclatement dun 4-noeud dont le parent est un 2-noeud durant linsertion

Arbres 2-4(Insertion)Les arbres 2-4Eclatement dun 4-noeud dont le parent est un 2-noeud durant linsertion

Arbres 2-4(Insertion)Les arbres 2-4Eclatement dun 4-noeud dont le parent est un 3-noeud durant linsertion

Arbres 2-4(Insertion)Les arbres 2-4Eclatement dun 4-noeud dont le parent est un 3-noeud durant linsertion

Arbres 2-4(Insertion)Les arbres 2-4Eclatement dun 4-noeud dont le parent est un 3-noeud durant linsertion

Arbres 2-4(Suppression)Les arbres 2-4Rechercher le noeud n qui contient llment supprimerPour sassurer que llment supprimer napparait pas dans un 2-noeud :Transformer chaque 2-noeud rencontr en un 3-noeud ou 4-noeud durant la phase de recherche.Le remplacer par le successeur inordreLe processus dmare toujours partir dune feuilleSi la feuille est 3-noeud ou un 4 noeud liminer tout simplement llment

Arbres 2-4Les arbres 2-4Nombre dlments dans un 2-4 tree de hauteur h est entre 2h - 1 et 4h - 1. Donc, la hauteur dun 2-4 tree avec n lments est entre ENT(log4 ( N+1 )) et ENT(log2 ( N+1))Avantage dun arbre 2-4 par rapport un arbre 2-3 : une seule passe (Top Down) pour les algorithmes dinsertion et de suppression.Les algorithmes 2-3 : exigent deux passes (Racine vers Feuille puis Feuille vers Racine)Les algorithmes 2-4 peuvent se faire aussi en deux passesLes algorithmes dans un arbre 2-4 sont plus simples par rapport ceux dun arbre 2-3.Arbres 2-4(Variantes)Les arbres 2-4SBB (Symmetric Binary B-tree ) : cest la reprsentation dun B-arbre en un arbre de recherche binaire. Les noeuds des arbres internes sont lis horizontalement . Les racines des arbres internes sont lis horizontalement.Arbres Red-Black : cest un SBB dordre 4 dans lequel les racines des arbres internes portent la couleur Noir et les noeuds lis horizontalement portent la couleur rougeArbres 2-4(Variantes)Des arbres 2-4 vers SBBLien verticalLien horizontal

3750303539701020333436384060801009032Arbres 2-4(Variantes)Des arbres 2-4 vers SBBLien verticalLien horizontal3750303539701020333436384060801009032375030353970102033343638406080100903245Arbres 2-4(Variantes)Des arbres 2-4 vers RB37503035397010203334363840608010090323750303539701020333436384060801009032RB : une structure de donnes trs populaire- Inclus dans plusieurs livres de structures de donnes- Implment et integre dans plusieurs langages de programmations (JAVA, C) Utilis pour implmenter les dictionnaires et les tableaux associatifs Utilis aussi dans diverses domaines (Voir Internet )RB : arbre de recherche binaire quilibr Recherche, insertion et suppresion : O(Log2(n)) Hauteur h dun RB tree ayant n : h 2 Log2 (n+1) ( pour AVL 1.44 Log2(n+1)Les arbres Rouge et NoirArbres Rouge et Noir (Introduction)RB : nouvelle version de SBB (Symmetric Binary B-trees) - SBB a t propose par Bayer. - SBB est simplement la representation en arbre de recherche binaire dun arbre 2-4 RB : Operations de maintenance :- Restructuration et coloration. Insertion : au plus 1 restructuration et au plus Log2 (N) colorations. suppression : au plus 2 restructurations et au plus Log2 (N) colorations.Les arbres Rouge et NoirArbres Rouge et Noir (Introduction)Arbres Red BlackUn arbre rouge et noir (RB-tree) est un arbre binaire de recherche o chaque nud est de couleur rouge ou noire .- Nuds noirs : quilibrage parfait - Nuds rouges : tolrer lgrement le dsquilibre Pire des cas:Alternance entre les nuds rouges et noirs.De plus, toutes les branches issues de tout nud :Ne possdent pas deux nuds rouges conscutifs.Possdent le mme nombre de nuds noirsLes arbres Rouge et NoirArbres Red-Black (Analyse thorique)la profondeur maximale d'un arbre binaire quilibr est 2*Log2(n)Recherche, insertion et suppression : O(Log2(n))Operations de maintenance :- Restructuration et coloration. Insertion : au plus 1 restructuration et au plus Log2 (n) colorations. suppression : au plus 2 restructurations et au plus Log2 (n) colorations.N : nombre dlements insrs.Les arbres Rouge et NoirArbres Red Black (Insertion)Insertion comme dans un arbre de recherche binaire. Si son pre est aussi rouge, un algorithme de maintenance est appliquLe nud insr est toujours une feuilleOn lui attribue la couleur rouge Les arbres Rouge et NoirArbres Red Black(Insertion)CAS 1: le frre F de P est rougePPFPXPPFPXLes nuds P et F deviennent noirs et leur pre PP devient rouge.Le processus continue en cascade X : nud introduitLes arbres Rouge et NoirArbres Red Black(Insertion)CAS 2: le frre F de P est noir et X est le fils gauche de P. PPFPXDPPPPXFDPRotation droite du nud PP.P devient noir et PP rouge.Le processus se termineLes arbres Rouge et NoirArbres Red Black(Insertion)CAS 3: le frre F de P est noir et X est le fils droit de P. PPFPXBAXPPPFBARotation gauche du nud P + rotation droite du nud PP.X devient noir et PP rouge.Le processus se termineLes arbres Rouge et NoirArbres Red Black(Insertion)CAS 4: le nud pre P est la racine de l'arbrePXPXLe nud pre devient noirC'est le seul cas o la hauteur noire de l'arbre augmente. Le processus se termineLes arbres Rouge et NoirArbres Red Black (Exemple)1310131013551013RotationCouleur du frre de P= noirEt X = fg(P)XPInsrer 13Insrer 10Insrer 5Les arbres Rouge et Noir51013ColorationCouleur du frre de P= rougeInsrer 22XPPP510132XPPP510132XPPPColorationLes arbres Rouge et NoirArbres Red Black (Exemple)Double rotationInsrer 4510132XPPP4Couleur du frre de P= noirET X = fd(P) ET P=FG(PP)4101352Les arbres Rouge et NoirArbres Red Black (Exemple)Suppression comme dans un arbre de recherche binaire. On considre que le nud qui remplace le nud supprim porte une couleur noire en plus. Ceci signifie qu'il devient noir s'il est rouge et qu'il devient doublement noir s'il est dj noir. Lalgorithme de maintenance a donc pour rle de supprimer ce nud doublement noir.Si le nud physiquement supprim est noir, un algorithme de maintenance est appliqu. Arbres Red Black (Suppression)Les arbres Rouge et NoirPXSoit X le noeud doublement noir

CAS 0: X est la racine de larbreXX devient simplement un noeud noir. Cest le seul cas ou la hauteur de larbre diminue. Le processus se termine.Arbres Red Black (Suppression)Les arbres Rouge et NoirPPFXPFXSoit X le noeud doublement noir (Suppos ici comme un fils gauche) et P son preCAS 1: Le frere F de X est noir et a deux fils noirsPPFXFXPPTransformer F en un noeud rougeSi le parent P est rouge, le processus continue en remontant dans larbre. X devient le nouveau noeud doublement noir.Arbres Red Black (Suppression)Les arbres Rouge et NoirPPFAXFDBCFFDPXABCCAS 2: Le frre F du noeud X est noir et a un fils droit rouge (FD)Rotation gauche de PRecolorer : P et FD deviennent noirs et la couleur de F est celle de P avant la transformation.Le processus se termineArbres Red Black (Suppression)Les arbres Rouge et NoirPPFFGXABFGFPBXACAS 3: si le frere F du noeud X est noir et a un fils gauche rouge(FG)Rotation droite (F) + rotation gauche (P).Recolorer : P devient noir et la couleur de FG est celle de P avant la transformation.Le processus se termineArbres Red Black (Suppression)Les arbres Rouge et NoirPPSXBACAS 4: Le frre F de X est rougeSBPAPXRotation droite(P) Le processus continue selon le cas 2 ou 3Arbres Red Black (Suppression)Les arbres Rouge et Noir