Arbres AVL AV - Université de Montréal

publicité
Arbres AVL
AV - L
Adel’son - Vel’skii
Landis
(1962)
Arbres AVL
Un arbre AVL est un arbre binaire de recherche balancé i.e un arbre
binaire ayant les propriétés suivantes:









arbres 


binaires 

de
recherche












Soient u , v et w trois noeuds tels que u est dans le
sous-arbre gauche de v et w dans son sous-arbre droit.
Alors, on a
cl é(u) < cl é(v) ≤ cl é(w)
Les éléments sont gardés en mémoire
dans les noeuds internes
Un parcours symétrique de l’arbre
visite les clés en ordre croissant
44
17
2
32
Propriété de balance: Pour chaque
noeud interne v , la hauteur des
enfants de v diffère d’au plus 1
4
3
78
1
50
48
1
2
62
88
1
1
La hauteur d’un arbre AVL est en O(log n)
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres AVL
1
Chercher dans les arbres AVL
Pour chercher un élément de clé k dans un arbre AVL, on procède
exactement de la même façon que pour la recherche dans les arbres
binaires de recherche:
Exemple 1: Chercher(4)
Le prochain noeud visité dépend du résultat de la comparaison de k
avec la clé du noeud dans lequel on se trouve.
Si on trouve un noeud interne de clé
k, on retourne la valeur correspondant
à cette entrée de clé k
Sinon, on retourne NULL
2
1
Exemple 1: Chercher(3)
IFT2015, A2009, Sylvie Hamel
Université de Montréal
6
<
Arbres AVL
9
>
<
4
=
8
2
Insérer dans les arbres AVL
Pour insérer un élément (k,v) dans un arbre AVL, on commence par
exécuter l’algorithme d’insertion d’un arbre binaire de recherche.
44
Exemple 1: Insérer(54,v)
17
On commence par exécuter chercher(k)
50
50
Arbres AVL
88
62
62
<
w
44
2
17
78
32
Après l’insertion de (54,v), certains noeuds ne sont
plus balancés!!
IFT2015, A2009, Sylvie Hamel
Université de Montréal
>
48
On insère k dans w et on change w en un
noeud interne
Si k est dans l’arbre l’algorithme chercher(k)
se terminera dans un noeud interne w. On
applique alors récursivement l’algorithme
chercher(k) sur le filsDroit de w, jusqu’à ce
qu’on trouve une feuille.
78
<
32
Si k n’est pas dans l’arbre l’algorithme
chercher(k) se terminera dans une feuille w
>
3
50
48
4
88
1
62
54
w
3
Restructuration de l’arbre après une insertion
Après l’insertion d’une entrée dans un arbre AVL, il est possible que
certains noeuds internes soient débalancés.
Pour retrouver la propriété de balance, on va
devoir restructurer l’arbre comme suit:
Les noeuds débalancés sont situés sur le
chemin du noeud w à la racine (pourquoi?)
On va nommer z le premier noeud débalancé
qu’on trouve sur ce chemin.
On va nommer y le fils de
hauteur
z
de plus grande
44
z
2
17
32
y
50
4
78
3
48
88
62
54
x
w
On va nommer x le fils de y de plus grande
hauteur (si égalité, on choisit le fils qui est un
ancêtre de w )
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres AVL
4
1
Restructuration de l’arbre après une insertion (suite)
Étant donné les noeuds internes x, y et z, on
renomme par “a” le premier de ces sommets visités
lors d’un parcours symétrique de l’arbre, par “b”, le
deuxième et par “c”, le troisième.
Appliquer un algorithme de restructuration qui va
rebalancer le noeud interne z (rebalancement local)
Goodrich et Tamassia (tableau)
44
2
17
32
a
y
c
z
50
78
4
3
48
88
62
54
1
b
x
w
Rotations et lois associatives
À la fin de la restructuration tous les noeuds internes
seront balancés (rebalancement global)
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres AVL
5
Restructuration de l’arbre après une insertion
version Goodrich et Tamassia:
44
2
5
a
17
débalancé...
z
3
1
32
1
2
1
7
1
50
48
4
78
2y
1
c6
4
3
62
88
xb
5
T3
54
T2
T0
4
T1
44
3
2
17
62
1
a
32
...balancé
b
2
2
50
78
1
c
1
48
1
54
88
T2
T0
IFT2015, A2009, Sylvie Hamel
Université de Montréal
T1
Arbres AVL
T3
6
Rotations et lois associatives
1) Rotations simples
y
z
C
y
vers la droite
x
B
B
A
x A
T3
T2
T0
C
T2
T1
z
T3
T1
T0
(T4
B
T2)
C
IFT2015, A2009, Sylvie Hamel
Université de Montréal
T3
T4
Arbres AVL
B
(T2
C
T3)
7
Rotations et lois associatives (suite)
1) Rotations simples (suite)
y
z
A
vers la gauche
B
y
B
T0
C
T1
T2
T0
A
z
(T1
IFT2015, A2009, Sylvie Hamel
Université de Montréal
B
x
A
C
T1
T0
T2
T3
T3
T4)
(T0
Arbres AVL
A
T1)
B
x
T4
8
Rotations et lois associatives
2) Rotations doubles
vers la droite
y
z
x
C
B
y
A
T3
B
T0
x
T1
(T0
A
(T1
A
C
T1
T0
z
T2
T3
T2
B
T2))
IFT2015, A2009, Sylvie Hamel
Université de Montréal
C
(T0
T3
Arbres AVL
A
T1)
B
(T2
C
T3)
9
Rotations et lois associatives (suite)
2) Rotations doubles (suite)
vers la gauche
A
x
z
B
C
T0
xB
T1
T0
A
((T12
B
y
z
T3
C y
A
T1
T0
T2
T3
T2
T23)
IFT2015, A2009, Sylvie Hamel
Université de Montréal
C
T34)
(T0
Arbres AVL
A
T1)
B
(T2
C
T3)
10
Supprimer dans les arbres AVL
Pour supprimer un élément de clé k dans un arbre AVL, on commence par
exécuter l’algorithme de suppression d’un arbre binaire de recherche.
Après la suppression, il est possible que certains noeuds internes soient
débalancés (en fait un seul noeud sera débalancé)
On va faire une restructuration de l’arbre autour de ce noeud, ce qui
causera un rebalancement local. Il est possible que cette restructuration
cause le débalancement d’un autre noeud.
On va restucturer l’arbre tant qu’il y a un noeud débalancé sur le chemin
de p à la racine, où p est le parent du noeud enlevé
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres AVL
11
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).
<
Exemple 1: Enlever(4)
Si k n’est pas dans l’arbre l’algorithme
chercher(k) se terminera dans une
feuille
22
6
9
>
5
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
8
Arbres AVL
9
5
8
12
Supprimer dans un arbre binaire de recherche (suite)
Si k est pas 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
88
6
9
y 5
On enlève l’entrée dans w et on la
remplace par l’entrée dans y
x
On enlève les noeuds y et x
1
5
w
2
8
6
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres AVL
9
13
Supprimer dans les arbres AVL
Après la suppression d’un noeud, il est possible que son parent p cause un
débalancement
Exemple: Enlever(32)
4
4
44
44
2
17
62
32
50
48
1
3
p
17
17
62
50
78
54
IFT2015, A2009, Sylvie Hamel
Université de Montréal
48
88
Arbres AVL
3
78
54
88
14
Supprimer dans les arbres AVL (suite)
Soit z le premier noeud non balancé sur le chemin allant de ce parent p à la
racine de l’arbre. Soit y le fils de z de hauteur maximale et soit x , le fils de
y de hauteur maximale
Étant donné les noeuds internes x, y et z, on renomme par a le premier de ces
sommets visités lors d’un parcours symétrique de l’arbre, par b , le deuxième et
par c, le troisième.
za
44
p
17
62
50
T0
48
a
yb
T0
88
54
44
78
50
17
xc
78
62
b
48
c
88
54
T2
T1
T2
T1
T0
a
(T1
b
T2)
IFT2015, A2009, Sylvie Hamel
Université de Montréal
(T0
Arbres AVL
a
T1)
b
T2
15
Supprimer dans les arbres AVL (suite)
Attention!! Il est possible qu’après le rebalancement
d’un noeud, un autre noeud (sur le chemin
allant vers la racine) se retrouve débalancé
On continue donc à balancer l’arbre
jusqu’à ce qu’on atteingne la racine
Exemple au tableau!!
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres AVL
16
Performances pour les arbres AVL
Rebalancer un noeud prend un temps O(1), si on implémente l’arbre AVL
à l’aide d’une structure chaînée
L’algorithme de recherche prend un temps O(log n)
La hauteur de l’arbre est O(log n) et aucune restructuration est
nécessaire
L’algorithme d’insertion prend un temps O(log n)
Chercher l’endroit où insérer prend un temps O(log n)
Trouver un noeud non balancé (si il y en a un) prend un
temps O(log n)
Restructurer l’arbre prend un temps O(1)
L’algorithme de suppression prend un temps O(log n)
Chercher le noeud à enlever prend un temps O(log n)
On devra faire, au plus, O(log n) restructuration
Chaque restructuration prend un temps O(1)
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres AVL
17
Téléchargement