• Aucun résultat trouvé

Structures de données avancées :

N/A
N/A
Protected

Academic year: 2022

Partager "Structures de données avancées :"

Copied!
44
0
0

Texte intégral

(1)

Structures de données avancées :

Arbres AVL & Arbres Rouge et Noir

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

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

(2)

Les arbres AVL

Arbres AVL

Un arbre AVL est un arbre de recherche binaire équilibré

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

8 0 7

0 0 +1

3 2

7 3 4

5

8 6

1 0

8 2

9 4

0 0

0 0 +1

-1

9 0 0

0

| Profondeur(fg(n) )–

Profondeur(fd(n)) | <= 1

(3)

8 0 7

0 0 +1

3 2

7 3 4

5

8 6

1 0

8 2

9 4

0 0

0 0 +1

-1

9 0 0

0

5 +1

+1

+2

Les arbres AVL

Arbres AVL (Cas de déséquilibre)

0

(4)

8 0 7

0 0 +1

3 2

7 3 4

5

8 6

1 0

8 2

9 4

0 0

0 0 +1

-1

9 0 0

0

5 5 -1 -1

+2

Les arbres AVL

Arbres AVL (Cas de déséquilibre)

0

(5)

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

Les arbres AVL

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

(6)

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) devient -1 et f(A) devient 2.

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

(7)

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

l'inordre soit préservé l'arbre transformé soit équilibré

Les arbres AVL

(8)

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

(9)

Arbres AVL (Techniques d'équilibrage ) (b) rotation

gauche du nœud B suivie par une rotation droite du nœud A

Les arbres AVL

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

T1 T4

0

0

C

T2

-1

h=n h=n-1 h=n

B

T3

(10)

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

(11)

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)

Les arbres AVL

(12)

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

(13)

Arbres AVL (Exemples)

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

Insertion A, B, X

Les arbres AVL

A

B

X

A

B

X

(14)

Arbres AVL (Exemples)

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

Insertion L, M

Les arbres AVL

A

B

X

L

M

A

B

M

L X

(15)

Arbres AVL (Exemples)

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

Insertion C

Les arbres AVL

A

B

M

L X

C

B

L

M

C X

A

(16)

Arbres AVL (Exemples)

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

Insertion D, E

Les arbres AVL

B

L

M

C X

A

D

E

B

L

M

D X

A

C E

(17)

Arbres AVL (Exemples)

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

Insertion H, R, F

Les arbres AVL

D

L

R

F X

B

E H A C

M

(18)

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 Traitement peut continuer en cascade

Les arbres AVL

(19)

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

Les arbres AVL

(20)

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

(21)

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

Les arbres AVL

(22)

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

(23)

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

Les arbres AVL

(24)

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

(25)

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

Les arbres AVL

(26)

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

(27)

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 AVL

(28)

Les arbres Rouge et Noir

Arbre 2-4

37

50 30

35

39 70

10

20 33

34

36 38 40 60

80 10

0 90

32

Arbre rouge et noir

(29)

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

Les arbres Rouge et Noir

La racine est noire // Les nœuds Nils sont considérés noirs

(30)

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

(31)

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

Les arbres Rouge et Noir

(32)

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.

Le processus se termine

Les arbres Rouge et Noir

(33)

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

Les arbres Rouge et Noir

(34)

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.

Le processus se termine

Les arbres Rouge et Noir

(35)

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

Les arbres Rouge et Noir

(36)

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

(37)

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

Les arbres Rouge et Noir

(38)

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

(39)

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

PP

Transformer F en un noeud rouge

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

Arbres Red Black (Suppression)

Les arbres Rouge et Noir

(40)

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.

Le processus se termine

Arbres Red Black (Suppression)

Les arbres Rouge et Noir

(41)

P

P

F F

G X

A B

F G

F P

X A B

CAS 3: 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)

Les arbres Rouge et Noir

(42)

P

P

S X

A B

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

S

B P

PX A

Rotation gauche (P)

Le processus continue selon le cas 1, 2 ou 3

Arbres Red Black (Suppression)

Les arbres Rouge et Noir

(43)

PX

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)

Les arbres Rouge et Noir

(44)

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

Comme pour l'insertion d'une valeur, la suppression d'une valeur dans un arbre rouge et noir commence par supprimer un nœud comme dans un arbre binaire de recherche.. Si le nœud

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

[r]

Complexit´ e des op´ erations pr´ ec´ edentes Pour un arbre binaire de taille n,. la complexit´ e dans le pire des

d- En supposant qu’il existe une fonction point/2 qui permette de dessiner un point de coordonn´ ees (x, y), d´ efinir une fonction qui dessine la repr´ esentation graphique

2. Parmi les éléments de numéro atomique Z 18, quel est l’élément qui a la même structure électronique externe que l’oxygène ? Donner la répartition électronique de

L’opération estVide teste si la file avec priorité est vide ou pas, l’opération ajouter insère dans la file un nouvel élément avec sa priorité, l’opération premier

Écrivez maintenant la méthode de tri fusion, qui divise la liste en deux listes de taille égale, trie les sous-listes récursivement puis les fusionnent avec la méthode