1 / 22

ARBRES EQUILIBRES

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 gauche et droit diffèrent au plus de 1. Exemple :. Fonction DESEQUILIBRE sur les arbres binaires Déséquilibre ( Ø)= 0

job
Download Presentation

ARBRES EQUILIBRES

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. 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 gauche et droit diffèrent au plus de 1. Exemple : MIGO ET COMPLEXITE

  2. Fonction DESEQUILIBRE sur les arbres binaires Déséquilibre (Ø)= 0 Déséquilibre (<O,G,D>)= hauteur (G) – hauteur (D) Remarque : Un arbre T est H-équilibré si pour tout sous-arbre S de T on a : Déséquilibre (s)Є -1,0,1 MIGO ET COMPLEXITE

  3. Proposition Tout arbre H-équilibré ayant n nœuds a une hauteur h vérifiant : log 2 (n+1) ≤ h + 1 <1,44 log 2 (n+2) • Preuve • Arbre H-équilibré de hauteur h contenant le plus de nœuds ? • Celui dont tous les niveaux sont complètement remplis • Déséquilibre o en chaque nœud • Nmax (h) : nombre de nœuds d’un tel arbre • Nmax (h) = 1+2Nmax (h-1) • Nmax (o) = 1 MIGO ET COMPLEXITE

  4. Nmax (h) = 2h+1 – 1 Donc pour tout arbre H-équilibré ayant n nœuds et de hauteur h : n ≤ 2h+1 – 1 n+1 ≤ 2h+1 Log2 (n+1) ≤ h+1 b) Arbres H-équilibrés de hauteur h contenant le moins de nœuds ? ▪ si déséquilibre = -1 ou +1 dans tous les noeuds Nmin (h) : nombre de nœuds d’un tel arbre Nmin (o)=1, Nmin (1) = 2 Nmin (h) = 1+Nmin (h-1) + Nmin (h-2) MIGO ET COMPLEXITE

  5. Soit F(h) = Nmin (h) + 1 On a : F(h) = F(h-1) + F (h-2) F(o)є = 2 ; F(1) = 3 Equation de récurrence de Fibonacci F (h) = rh F (h-1) = rh-1 ; F(h-2) = r h-2 rh = rh-1 + rh-2 rh-2 (-r2 + r + 1) = 0 ≠ 0 r2-r-1=0 ∆ = 1 + 4 = 5 r1 = 1+√5 = Ø, r2 = 1- √5 =Ø 2 2 MIGO ET COMPLEXITE

  6. La solution est de la forme • F(h) = λ1Øh + λ 2 (Ø)h • F(o) = 2 • 2 = λ1 + λ2(1) • F (1) = 3 • 3 = λ1 Ø+ ג2 Ø • 3 = λ1 (1+√5) + λ2(1-√5) • 2 2 • 6 = λ1 (1+√5) + λ2(1-√5) • 6 =λ1 + ג2 + √5 (λ1 - ג2) • 6 = 2 + √5 (ג1 - ג2) • 4 = ג1 - ג2 (2) • + (2) : • 2 + 4 = 2 ג1 • √5 • λ1 = 1 + 2 = √5 + 2 • √5 √5 MIGO ET COMPLEXITE

  7. Ø= 1 + √5 2 Ø-1 = √5 2 λ1 = 2Ø-1+2 = 2Ø+1 2Ø-1 2Ø-1 λ2 = 2- ג1 = 2-(√5 + 2) Øh + (√5 – 2) √5 √5 F(h)= 1 (√5 + 2) Øh + (√5 – 2) Øh √5 MIGO ET COMPLEXITE

  8. F (h) = 1 (Øh+3 – Øh+3) √5 Nmin (h)+1 = 1 (Øh+3 – Øh+3) √5 Donc pour tout arbre H-équilibré à n noeuds et de hauteur h N+1 >1 (Øh+3 – Øh+3) √5 Or : -1 <Øh+3 = (1- √5 )h+3 <1 2 n+1>1 (Øh+3 – 1) √5 1+ √5(n+1) ≥ Øh+3 Log Ø 1+√5(n+1) ≥ h+3 Log Ø √5(n+2) ≥ h+3 MIGO ET COMPLEXITE

  9. Log Ø (x) = (log2 (Ø))-1 log2 (Ø) h+3 < logØ ( √5) + logØ (n+2) < 2 + 1 log2 (n+2) log2(Ø) Remarque : √5 < Ø2 = (1+√5)2 2 logØ (√5) < logØ (Ø2) < 2 1 ~1,44 Log2 Ø h+1 < 1,44 log2 (n+2) MIGO ET COMPLEXITE

  10. Arbres AVL • Adelson – Velskii – Landis • Définition • Un AVL est un arbre binaire de recherche H-équilibré • Equilibrage ? • Rotations • Rotation droite, rotation gauche A = p q rd (A) q p w u rz (A) v u v w A, u, v, w : arbres binaires de recherche MIGO ET COMPLEXITE

  11.  Rotation gauche-droite A = r rgd (A) q p w r p q T w T u y u v A, T, u, v, w : arbres binaires de recherche Remarque : rotation gauche-droite = la composée d’une rotation gauche sur le sous-arbre gauche de A suivie d’une rotation droite sur A MIGO ET COMPLEXITE

  12. Function RD (A : ARBRE) : ARBRE ; Var Aux : ARBRE ; Begin Aux : = A .g ; A .g : = Aux .d ; Aux .d = A ; RD : = Aux end RD ; Function RGD (A : ARBRE) : ARBRE ; Begin A .g : = RG (A .g) ; RGD : = RD (A) end RGD ; MIGO ET COMPLEXITE

  13. Adjonction dans un AVL et rééquilibrages Exemple : 12, 3, 2, 5, 4, 7, 9, 11, 14, 10 12 E1 : 12 E2 : 3 12 3 rd E3 : 3 2 12 3 2 E4 : 2 12 5 3 3 E5 : rd 2 2 12 2 5 0 1 5 4 12 0 4 MIGO ET COMPLEXITE

  14. E6 : -2 3 5 rg 2 5 3 12 4 12 2 4 7 7 E7 : 5 5 rgd 3 2 12 3 9 7 4 2 2 4 7 12 9 E8 et E9 : 5 3 9 2 4 7 12 11 14 MIGO ET COMPLEXITE

  15. 5 5 rgd 3 3 -2 9 11 2 4 7 12 2 4 9 12 11 14 7 10 14 10 • Principe général • Soit T= <r, G, D> un AVL • Supposons que l’adjonction de l’élément x ait lieu sur une feuille de G et qu’elle fasse augmenter de 1 la hauteur de G et que G reste un AVL • Si le déséquilibrage de T valait 0 avant l’adjonction, il vaut 1 après. • T reste un AVL et sa hauteur a augmenté de 1 MIGO ET COMPLEXITE

  16. 2) Si le déséquilibrage de T valait -1 avant l’adjonction, il vaut 0 après. T reste un AVL et sa hauteur n’est pas modifiée 3) Si le déséquilibre de T valait +1 avant l’adjonction, il vaut +2 après. T n’est plus H-équilibré il faut le restructurer en AVL adj dans sous-arbre 2 cas possibles gauche de G adj dans sous-arbre droit de G MIGO ET COMPLEXITE

  17. b a a rd b .. ... .. .. .. ... c a b rgd .. b c a .. ... . . . .. ... . . . MIGO ET COMPLEXITE

  18. ALGORITHME D’ADJONCTION DANS UN AVL Ajoutavl : Arbre x Valeur Arbre ajoutavl (Ø,x) = x x ≤ r ajoutavl (<r, G, D>, x) = rééquilibrage (<r, ajoutavl (G, x), D>) x>r ajoutavl (<r, G, D>, x) = rééquilibrage (<r, G, ajoutavl (D, x)>) Rééquilibrage : Arbre Arbre Déséquilibre : Arbre {-2,-1,0,1,2} MIGO ET COMPLEXITE

  19. Déséquilibre (T)=0 (ou 1 ou -1) rééquilibrage (T) = T Déséquilibre (T)=+2 et Déséquilibre (g (T))=+1 rééquilibrage (T) = rd (T) Déséquilibre (T)=-2 et Déséquilibre (d (T))=-1 rééquilibrage (T)=rg (T) Déséquilibre (T)=+2 et Déséquilibre (g(T))=-1 rééquilibrage (T)=rgd (T) Déséquilibre (T)=-2 et Déséquilibre (d(T))=+1 rééquilibrage (T)= rdg (T) Implémentation type AVL = NŒUD ; NŒUD = record deseq : -2..+2 ; val : VALEUR ; g, d : AVL end ; MIGO ET COMPLEXITE

  20. Procédure AJOUTAVL (var T : AVL ; x : VALEUR) ; Var Y, A, AA, PP : AVL ;{ AA est le père de A ; PP père de P } begin{ création du noeud à ajouter } new (Y) : Y .val : = x ; Y .deseq :=0 ; y .g=nil ; y .d : = nil ; if T = nil then T:=Y Else Begin { descente à la recherche de la feuille, en mémorisant le dernier noeud pointé par A dont le déséquilibre est + 1 } A : = T ; AA : = nil ; P : =T ; PP:= nil; while P <> nil do begin if P . deseq <> 0 then begin A : = P ; AA : = PP : P ; If x ≤P .val then P : = P .g else P:z P .d PP; end { adjonction } If x ≤ PP .val then PP .g : = Y else PP .d : = Y ; {modification du déséquilibre sur le chemin de A à Y} MIGO ET COMPLEXITE

  21. P = A; while P <> Y do if x ≤ P .val then begin P .deseq : = P .deseq + 1 ; P : = P .g end else begin P .deseq : = P .deseq - 1 ; P : = P .d end ; { rééquilibrage } Case A .deseq of O, +1,-1 : return ; +2: Case A .g deseq of +1:begin A:=RD(A) ; A deseq :=0 ; A .d .deseq:=0 ; End ; -1:begin A:=RDG (A); Case A .deseq oF +1:begin A .g .deseq :=O ; A .d .deseq :=-1 end ; -1:begin A .g .deseq :=-1 ; A .d .deseq :=0 end ; 0:begin A .g .deseq :=O ; A .d .deseq :=0 end ; End ; A .deseq :=0; End ; End ; MIGO ET COMPLEXITE

  22. -2:{ cas symétrique du cas +2 }... End { fin du cas } If AA = mil then T:=A Else if A .val ≤AA .val then AA .g : = A else AA .d:=A End ; +2: Case A .g deseq of +1:begin A:=RD(A) ; A deseq :=0 ; A .d .deseq:=0 ; End ; { descente } End AJOUT VAL ; MIGO ET COMPLEXITE

More Related