• Aucun résultat trouvé

Les arbres AVL

N/A
N/A
Protected

Academic year: 2022

Partager "Les arbres AVL"

Copied!
22
0
0

Texte intégral

(1)

Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)

http://zegour.esi.dz email: d_zegour@esi.dz

Les arbres AVL

Arbres AVL

Un arbre AVLest un arbre de recherche binaire équilibré

Ajouter un champ balance (facteur d'équilibrage ) au niveau de chaque noeud

80

70 0 +1

32 73

45

86

10

82 94

0 0

0 0 +1

-1

90 0

0

| Profondeur(fg(n) )– Profondeur(fd(n)) | <= 1

(2)

80

70 0

+1

32 73

45

86

10

82 94

0 0

0 0 +1

-1

90 0

0

5 +1

+1 +2

Arbres AVL (Cas de déséquilibre)

0

80

70 0 +1

32 73

45

86

10

82 94

0 0

0 0 +1

-1

90 0

0

55 -1 -1

+2

Les arbres AVL

Arbres AVL (Cas de déséquilibre)

0

(3)

Arbres AVL (Techniques d'équilibrage ) Examinons un sous

arbre de racine le plus jeune antécédent qui devient non

équilibré suite à une insertion

Cas où le facteur d'équilibrage est +1

A

B T3

T1 T2

+1

0

h=n h=n

h=n

B

Le nouveau nœud est inséré dans le sous arbre gauche de B.

Donc f(B) devient 1 et f(A) devient 2

Arbres AVL (Techniques d'équilibrage ) Examinons un sous

arbre de racine le plus jeune antécédent qui devient non

équilibré suite à une insertion

Les arbres AVL

A

B T4

T1

+1

0

C

T2 T3

0

h=n

h=n

h=n-1 h=n-1

B

Le nouveau nœud est inséré dans le sous arbre droit de B. f(B) Cas où le facteur

d'équilibrage est +1

(4)

Arbres AVL (Techniques d'équilibrage ) Transformer l'arbre de telle sorte que

l'inordre soit préservé

l'arbre transformé soit équilibré

Arbres AVL (Techniques d'équilibrage )

(a) rotation droite du nœud A

Les arbres AVL

A

B T3

T1 T2

+2 +1

h=n h=n

h=n

B

A B

T3 T1

T2 0 0

h=n

h=n h=n

B

(5)

Arbres AVL (Techniques d'équilibrage ) (b) rotation gauche du nœud B suivie par une rotation droite du nœud A

A

B T4

T1

+2

-1

C

T2 T3

0

h=n

h=n

h=n-1 h=n-1

B

h=n-1

B A

T4 T1

0

0

C

T2

-1

h=n h=n-1 h=n

B

T3

Arbres AVL (Algorithme d'insertion)

La première partie de l'algorithme consiste à insérer la clé dans l'arbre sans tenir compte du facteur d'équilibrage Elle garde aussi la trace du plus jeune antécédent, soit Y qui devient non équilibré

La deuxième partie fait la transformation à partir de Y

Les arbres AVL

(6)

Arbres AVL (Rotation gauche)

N

D D

G D

D G

P

D

D G

N D

D

G

P

AFF_FD(N, DG) AFF_FG(D, N)) AFF_FG(Parent, D) Rotation gauche(N)

Arbres AVL (Rotation droite)

N

G D

G D

G G

P

G

D G

G N

G D

P

AFF_FG(N, GD) AFF_FD(G, N)) AFF_FD(Parent, G) Rotation droite (N)

Les arbres AVL

(7)

Arbres AVL (Exemples)

Insérons la séquence : A, B, X, L, M, C, D, E, H, R, Fdans un arbre AVL.

Insertion A, B, X

A

B

X

A B

X

Arbres AVL (Exemples)

Insérons la séquence : A, B, X, L, M, C, D, E, H, R, Fdans un arbre AVL.

Insertion L, M

Les arbres AVL

A B

X

L

M

A B

M

L X

(8)

Arbres AVL (Exemples)

Insérons la séquence : A, B, X, L, M, C, D, E, H, R, Fdans un arbre AVL.

Insertion C

A B

M

L X

X

B L

M

C X

A

Arbres AVL (Exemples)

Insérons la séquence : A, B, X, L, M, C, D, E, H, R, Fdans un arbre AVL.

Insertion D, E

Les arbres AVL

B L

M

C X

A

D

B L

M

D X

A

C E

(9)

Arbres AVL (Exemples)

Insérons la séquence : A, B, X, L, M, C, D, E, H, R, Fdans un arbre AVL.

Insertion H, R, F

D

L

R

D X

B

E H C A

M

Arbres AVL (Suppression)

Étape 1 : comme dans un arbre de recherche binaire ordinaire

Étape 2 : mettre à jour les balances Cas où la balance d’un nœud A devient +2

Le fils gauche B de A doit exister Les cas suivants peuvent se présenter a) B a une balance égale à + 1

b) B a une balance égale à – 1 c) B a une balance égale à 0

Même traitement symétrique dans le cas où la balance d’un nœud A devient -2

Les arbres AVL

(10)

Arbres AVL (Suppression) B a une balance égale à + 1

A

B n-1

n n-1

+2

+1

A B

n-1 n

n-1 0

0

Arbres AVL (Suppression) B a une balance égale à -1

B a donc un fils à sa droite, soit C.

Cas Balance (C)= 0

A

B n-1

n-1 n

+2

-1

A

B n-1

n-1 +2

-1

C

n-1 n-1

0

Les arbres AVL

(11)

Arbres AVL (Suppression)

B a une balance égale à -1 , C son fils droit avec Balance(C)=0

A C

n-1 n-1

0

0 B

n-1 n-1

0 A

B n-1

n-1 +2

-1

C

n-1 n-1

0

Arbres AVL (Suppression) B a une balance égale à -1

B a donc un fils à sa droite, soit C.

Balance (C)= +1

A

B n-1

n-1 n

+2

-1

A

B n-1

n-1 +2

-1

C

n-1 n-2

+1

Les arbres AVL

(12)

Arbres AVL (Suppression)

A C

n-1 n-2

0

-1 B

n-1 n-1

0 A

B n-1

n-1 +2

-1

C

n-1 n-2

+1

B a une balance égale à -1 , C son fils droit avec Balance(C)=+1

Arbres AVL (Suppression) B a une balance égale à -1

B a donc un fils à sa droite, soit C.

Balance (C)= -1

A

B n-1

n-1 n

+2

-1

A

B n-1

n-1 +2

-1

C

n-2 n-1

-1

Les arbres AVL

(13)

Arbres AVL (Suppression)

A C

n-1 n-1

0

0 B

n-2 n-1

+1 A

B n-1

n-1 +2

-1

C

n-2 n-1

-1

B a une balance égale à -1 , C son fils droit avec Balance(C)=-1

Arbres AVL (Suppression) B a une balance égale à 0

A

B n-1

n n

+2

0

A B

n-1 n

n -1

+1

Les arbres AVL

(14)

Arbres AVL (Analyse théorique)

la profondeur maximale d'un arbre binaire équilibré est 1.44*Log2n La recherche dans un tel arbre n'exige jamais plus de 44% de plus de comparaisons que pour un arbre binaire complet

Operations de maintenance :

- Restructuration = 1 rotation ou double rotation -Insertion : au plus 1 restructuration

-suppression : au plus Log2 (N) restructurations

Les arbres Rouge et Noir

Arbre 2-4

37

50 30

35

39 70

10

20 33

34

36 38 40 60

80 100

90

32

Arbre rouge et noir

(15)

Arbres Red Black

Un arbre rouge et noir (RB-tree) est un arbre binaire de recherche où chaque nœud est de couleur rouge ou noire .

- Nœuds noirs : équilibrage parfait

- Nœuds rouges : tolérer légèrement le déséquilibre Pire des cas:

Alternance entre les nœuds rouges et noirs.

De plus, toutes les branches issues de tout nœud : 1. Ne possèdent pas deux nœuds rouges consécutifs.

2. Possèdent le même nombre de nœuds noirs La racine est noir

Arbres Red Black (Insertion)

Insertion comme dans un arbre de recherche binaire.

Si son père est aussi rouge, un algorithme de maintenance est appliqué Le nœud inséré est toujours une feuille

On lui attribue la couleur rouge

Les arbres Rouge et Noir

(16)

Arbres Red Black(Insertion) CAS 1: le frère F de P est rouge

P P

F P

X

P P

F P

X

Les nœuds P et F deviennent noirs et leur père PP devient rouge.

Le processus continue en cascade X : nœud introduit

Arbres Red Black(Insertion)

CAS 2: le frère F de P est noir et X est le fils gauche de P.

P P

F P

X D

P

P P X P

D F P

Rotation droite du nœud PP.

P devient noir et PP rouge.

Les arbres Rouge et Noir

(17)

Arbres Red Black(Insertion)

CAS 3: le frère F de P est noir et X est le fils droit de P.

P P

F P

X

B A

X P P P

B F A

Rotation gauche du nœud P + rotation droite du nœud PP.X devient noir et PP rouge.

Le processus se termine

Arbres Red Black(Insertion)

CAS 4: le nœud père P est la racine de l'arbre

P

X

P

X

Le nœud père devient noir

C'est le seul cas où la hauteur noire de l'arbre augmente.

Les arbres Rouge et Noir

(18)

Arbres Red Black (Exemple)

13

10 13

10 13

5

5 10

Rotation 13

Couleur du frère de P= noir Et X = fg(P)

X P

Insérer 13 Insérer 10

Insérer 5

Arbres Red Black(exemple)

5 10

13

Coloration Couleur du frère de P= rouge Insérer 2

2 X

P PP

5 10

13

2 X

P PP

5 10

13

2 X

P Coloration PP

Les arbres Rouge et Noir

(19)

Arbres Red Black (exemple)

Double rotation Insérer 4

5 10

13

2

X P PP

4

Couleur du frère de P= noir ET X = fd(P) ET P=FG(PP) 4

10

13

2 5

Suppression comme dans un arbre de recherche binaire.

On considère que le nœud qui remplace le nœud 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 déjà noir.

L’algorithme de maintenance a donc pour rôle de supprimer ce nœud doublement noir.

Si le nœud physiquement supprimé est noir, un algorithme de maintenance est appliqué.

Arbres Red Black (Suppression)

Les arbres Rouge et Noir

(20)

P P

F X

P

F X

Soit X le noeud doublement noir (Supposé ici comme un fils gauche) et P son père CAS 1: Le frere F de X est noir et a deux fils noirs

P P

F X

F X

P P

Transformer F en un noeud rouge

Si le parent P est noir, le processus continue en remontant dans l’arbre. X devient le nouveau noeud doublement noir.

Arbres Red Black (Suppression)

P P

F

A X

F D

B C

F

F P D

X A B C

CAS 2: Le frère F du noeud X est noir et a un fils droit rouge (FD)

Rotation gauche de P

Recolorer : P et FD deviennent noirs et la couleur de F est celle de P avant la transformation.

Arbres Red Black (Suppression)

Les arbres Rouge et Noir

(21)

P P

F F G X

A B

F G

F P

X A B

CAS 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 termine Arbres Red Black (Suppression)

P P

S X

A B

CAS 4: Le frère F de X est rouge

S B P

P A X

Rotation droite(P)

Arbres Red Black (Suppression)

Les arbres Rouge et Noir

(22)

P X

Soit X le noeud doublement noir

CAS 0: X est la racine de l’arbre

X

X devient simplement un noeud noir.

C’est le seul cas ou la hauteur de l’arbre diminue. Le processus se termine.

Arbres Red Black (Suppression)

Arbres Red-Black (Analyse théorique)

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 d’élements insérés.

Les arbres Rouge et Noir

Références

Documents relatifs

Chercher sur Internet l‘algorithme DSW (c’est un algorithme qui prend en entrée un arbre de recherche binaire afin de réaliser son équilibrage) et l’algorithme de

Les AVL sont d’abord des arbres de recherche, ils sont donc tels que tout nœud a une clé supérieure à celles des nœuds de son sous arbre gauche et inférieure à celles des nœuds

Les AVL sont d’abord des arbres de recherche, ils sont donc tels que tout nœud a une clé supérieure à celles des nœuds de son sous arbre gauche et inférieure à celles des nœuds

L'insertion d'un élément peut produire un nœud ayant plus de b fils.. Amphi

On peut modifier la visibilité des variables et des méthodes. Modificateur Visibilité private

L’algorithme proposé procède en deux temps : il commence par construire une corde de coût minimal ayant les mêmes feuilles que c mais pas nécessairement dans le même ordre ; puis

Soient A et B deux ´ ev´ enements disjoints, ` a quelle condition sont-ils ind´ ependants?. Exercice 2 On a r´ epertori´ e dans une usine le nombre d’accidents mineurs subis par

Ces deux quantités sont liées respectivement au coût de la recherche avec succès et sans succès d'un nœud dans un arbre binaire.. Le cheminement interne divisé par n (le nombre