Arbres Rouges-Noirs Correspondance entre les arbres (2,4) et les

publicité
Correspondance entre les arbres (2,4) et les arbres
rouges-noirs
Arbres Rouges-Noirs
On peut voir un arbre rouge-noir comme étant la représentation d’un
arbre (2,4) par un arbre binaire de recherche dont les noeuds sont
colorés rouge ou noir
En comparaison avec les arbres (2,4), les arbres rouges-noirs ont
La même complexité logarithmique
Plus simple à implémenter car on a une seule sorte de noeud
3
4
5
5
4
3
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres rouges-noirs
2 6 7
3
ou
6
5
2
7
Arbres Rouges-Noirs
1
Hauteur d’un arbre rouge-noir
Un arbre rouge-noir peut aussi être défini comme étant un arbre
binaire de recherche qui satisfait les propriétés suivantes:
La hauteur d’un arbre rouge-noir gardant en mémoire n éléments est
en O(log n)
Propriété de racine: La racine est noir
Preuve: La hauteur d’un arbre rouge-noir est au plus le double de la hauteur
de l’arbre (2,4) lui correspondant, qui est de O(log n)
Propriété externe: Les noeuds externes sont noirs
Propriété interne: Les enfants d’un noeud rouge sont noirs
L’algorithme de recherche dans un arbre rouge-noir est exactement le
même algorithme que pour la recherche dans un arbre binaire de
recherche
Propriété de profondeur: Tous les noeuds externes ont la même profondeur
noir, qui est définie comme!étant le nombre d’ancêtre interne noir
9
4
2
15
6
12
On a donc que la complexité en temps de la recherche dans un arbre
rouge-noir est en O(log n)
21
7
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres Rouges-Noirs
2
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres Rouges-Noirs
3
Insertion dans un arbre rouge-noir
Remédier à un double rouge
Considérons un double rouge: v, le parent rouge, z, le fils rouge
et considérons w, le frère de v.
Pour insérer un élément (k,v) dans un arbre rouge-noir, on exécute
l’algorithme d’insertion d’un arbre binaire de recherche et on colore
rouge le nouveau noeud z, sauf si z est la racine
Exemple: Insérer un élément de clé 4
Cas 1: w est noir
Cas 2: w est rouge
Les propriétés de racine et de profondeur, de même que la propriété
externe sont préservées
on peut voir le double rouge comme
un remplacement incorrect d’un
4-noeud
on peut voir le double rouge comme
un débordement dans un arbre (2,4)
Si le parent n de z est noir, on préserve aussi la propriété interne et on a
terminé l’algorithme d’insertion
Restructuration: On exécute le bon
remplacement du 4-noeud
Recoloration: On performe
l’équivalent d’un fractionnement
Sinon, on a un double rouge et on doit modifier l’arbre pour rétablir la
propriété interne.
n
6
3
n
8
4
2
z
6
8
3
z
4
IFT2015, A2009, Sylvie Hamel
Université de Montréal
w
4
Arbres Rouges-Noirs
7
6
z
v
7
6
2 4 6 7
IFT2015, A2009, Sylvie Hamel
Université de Montréal
5
Arbres Rouges-Noirs
Il y a 4 configurations possibles demandant une restructuration,
dépendant de l’emplacement des deux noeuds rouges formant le
double rouge
2
La propriété interne est restorée et les autres propriétés sont
préservées
z
6
4
2
Cas 1: Restructuration (suite)
Cela revient à exécuter le remplacement correct du 4-noeud
2
w
.. 2 ..
Considérons un double rouge: v, le parent rouge, z, le fils rouge
et considérer w, le frère de v. Lorsque w est noir, on exécute une
restructuration
4
v
4 6 7
z
Cas 1: Restructuration
w
7
x
z
6
v
4
x
v
2
4
6
4
z
2
x
v
6
z
2
x
4
v
6
z
z
v
6
w
4
7
v
b
2
a
4
2
6
c
4 6 7
.. 2 ..
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres Rouges-Noirs
6
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres Rouges-Noirs
7
Cas 2: Recoloration
Complexité en temps d’une insertion
Considérons un double rouge: v, le parent rouge, z, le fils rouge
et considéroms w, le frère de v. Lorsque w est rouge, on exécute une
recoloration
Cela correspond à exécuter le fractionnement d’un 5-noeud
Il est possible que le double rouge se propage chez le grand-parent
4
2
z
7
v
w
4
2
z
6
7
La hauteur d’un arbre rouge-noir gardant
en mémoire n éléments est en O(log n)
1.
L’étape 1 prend un temps O(log n), étant
donné qu’on doit visiter O(log n) noeuds
lors de la recherche
On exécute chercher(k) pour
trouver le noeud d’insertion z
2. On insère le nouvel élément
(k, vo) dans le noeud z et on
colore z rouge
3. Tant que doubleRouge(z)
si estNoir(frère(parent(z)))
z ! restructure(z)
On recolore le parent v et son frère w en noir et le grand-parent (le
parent de v) devient rouge, sauf si c’est la racine
w
Algorithme insérer(k, vo)
v
6
sinon
z ! recolore(z)
… 4 …
2 4 6 7
IFT2015, A2009, Sylvie Hamel
Université de Montréal
2
L’étape 3 prend un temps O(log n), étant
donné qu’on exécute au plus
O(log n) recolaration, chacune
prenant un temps O(1)
Au plus une restructuration prenant
un temps O(1)
L’insertion d’un élément dans un arbre
rouge-noir prend donc un temps O(log n)
6 7
Arbres Rouges-Noirs
L’étape 2 prend un temps O(1)
8
Suppression dans un arbre rouge-noir
IFT2015, A2009, Sylvie Hamel
Université de Montréal
9
Arbres Rouges-Noirs
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).
Pour supprimer un élément de clé k dans un arbre rouge-noir, on
exécute l’algorithme de suppression d’un arbre binaire de recherche
<
Exemple 1: Enlever(4)
Si k est dans l’arbre l’algorithme
chercher(k) se terminera dans un
noeud interne w
22
9
>
51
6
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
Arbres Rouges-Noirs
10
IFT2015, A2009, Sylvie Hamel
Université de Montréal
8
Arbres Rouges-Noirs
9
5
8
11
Suppression dans un arbre rouge-noir
Supprimer dans un arbre binaire de recherche (suite)
Si k est 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
Soit v, le noeud interne et w, le noeud externe enlever lors de la
suppression. Soit r, le frère de w.
88
6
Si soit v ou r était rouge, on colore r noir et on a terminé
9
y 5
On enlève l’entrée dans w et on la
remplace par l’entrée dans y
Sinon (v et r était noir), enlever v va causer une violation de la propriété de
profondeur et demander une restructuration de l’arbre. On appelera cette
situation double noir au noeud r.
x
On enlève les noeuds y et x
1
5
w
6
2
8
9
12
IFT2015, A2009, Sylvie Hamel
Université de Montréal
x
x
30
z
40
20
y
ou
40
10
10
20
r
y
20
10
x
20
10
…
40
r
40
r
x
30
30
30
20 30
40
40
IFT2015, A2009, Sylvie Hamel
Université de Montréal
10
40
20
10
13
Arbres Rouges-Noirs
30
z
… 20 …
10
4
10 30 …
30
40
w
Cas 2: Si y est noir et les deux fils de y sont noirs, on performe une recoloration
qui équivaut à une fusion dans l’arbre (2,4) correspondant. La recolaration peut
causer un problème de double noir chez le parent de r.
Cas 1: Si y est noir et a un fils z rouge, on performe une restructuration qui
équivaut à un transfert dans l’arbre (2,4) correspondant. À la suite de cette
restructuration, toutes les propriétés des arbres rouges-noirs sont rétablies.
10 20
r
3
Soit r le noeud double noir. Soit y, le frère de r.
Soit r le noeud double noir. Soit y, le frère de r.
r
6
v
Remédier à un double noir
Remédier à un double noir
y
r
4
Arbres Rouges-Noirs
… 30 …
8
3
6
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Pour supprimer un élément de clé k d’un un arbre rouge-noir, on
exécute l’algorithme de suppression d’un arbre binaire de recherche
y
20
40
Arbres Rouges-Noirs
14
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Arbres Rouges-Noirs
15
Remédier à un double noir
Insertion:
Soit r le noeud double noir. Soit y, le frère de r.
Cas 3: y est rouge, on performe un ajustement qui équivaut à choisir une
représentation différente d’un 3-noeud dans l’arbre (2,4) correspondant.
L’ajustement va nous ramener soit dans le cas 1, soit dans le cas 2
Restructuration
Recoloration
20
30
30
y
z
40
20
40
Le double rouge est
enlevé
Fractionnement
Le double rouge est
enlevé ou il se propage
vers le haut
Opérations arbres rouge-noir
10
Restructuration
Remédier à un double noir
Opérations arbres (2,4)
Transfert
Fusion
y
30
z
… 10 …
...
...
20
10
40
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Résultats
Changement de
représentation d’un 4-noeud
Suppression:
r
Recoloration
20
Opérations arbres (2,4)
x
Text
… 10 …
...
...
Remédier à un double rouge
Opérations arbres rouge-noir
x
Ajustement
30
40
Arbres Rouges-Noirs
r
16
IFT2015, A2009, Sylvie Hamel
Université de Montréal
Changement de
représentation d’un 3-noeud
Arbres Rouges-Noirs
Résultats
Le double noir est enlevé
Le double noir est enlevé
ou il se propage vers le
haut
Suivi d’une
restructuration ou d’une
recoloration
17
Téléchargement