SlideShare a Scribd company logo
1 of 178
Download to read offline
ALGORITHMIQUE AVANCÉE
Université Blida 1
Faculté des Sciences
Département d’Informatique
Master IL (Ingénierie Logiciel) & SIR (Systèmes
Informatiques et Réseaux)
Semestre 1
Mme AROUSSI (s_aroussi@esi.dz)
2018-2019
Disponible sur https://sites.google.com/a/esi.dz/informatiqueblida/
PRÉAMBULE
Pré-requis: Cours (Algo2-S3).
Volume horaire hebdomadaire: 1.5H Cours + 1.5H TD
Évaluation: continu + Examen
2 Interrogations (I1, I2).
Note TD: I1 noté sur 7,5 points; I2 noté sur 7,5 points; 3 points
présence et 2 points assiduité
Coefficient 2, Crédit 4
2
OBJECTIFS DU COURS
Donner un panorama des structures et des méthodes
que nous retrouvons dans divers domaines
d'applications algorithmiques: réseaux, robotique,
compilation, base de données, etc...
Savoir analyser et comparer les performances de
différentes solutions algorithmiques.
3
CONTENU DU COURS
I. Arbres de Recherche
II. Problème du Plus Courts Chemins
III. NP-Complétude
IV. Heuristiques & Méta-heuristiques
4
CHAPITRE I:
ARBRES DE RECHERCHE
Université Blida 1
Faculté des Sciences
Département d’Informatique
Master IL (Ingénierie Logiciel) & SIR (Systèmes
Informatiques et Réseaux)
Semestre 1
Mme AROUSSI (s_aroussi@esi.dz)
2018-2019
Disponible sur https://sites.google.com/a/esi.dz/informatiqueblida/
Partie I: Introduction
Partie II: Arbres Binaires de Recherche (ABR)
Partie III: Arbres Binaires de Equilibrés (AVL &
TAS)
Partie IV: Arbres M-aire de Recherche (AMR)
Partie V: Arbres M-aire de Recherche Equilibrés (B-
Arbres) 6
PLAN DU CHAPITRE I
PARTIE I:
INTRODUCTION
Introduction
Définitions et Terminologies
Topologie
Parcours
8
PLAN DE LA PARTIE I
9
Les arbres sont des structures de données fondamentales
en informatique, très utilisés dans tous les domaines,
parce qu’ils sont bien adaptés à la représentation
naturelle d’informations homogènes organisées, et d’une
grande commodité et rapidité de manipulation.
I. INTRODUCTION
10
Leur usage est multiple, car il capte l’idée de hiérarchie; à
titre d’exemples, nous pouvons citer:
Découpage d’un livre en parties, chapitres, sections,
paragraphes…,
I. INTRODUCTION
Livre
C1 C2 C3
S1.1 S1.2 S2.1 S2.2 S2.3
S2.1.1 S2.1.2
11
Leur usage est multiple, car il capte l’idée de hiérarchie; à
titre d’exemples, nous pouvons citer:
Hiérarchies de fichiers,
I. INTRODUCTION
12
Leur usage est multiple, car il capte l’idée de hiérarchie; à
titre d’exemples, nous pouvons citer:
Expressions Arithmétiques
I. INTRODUCTION
-
A *
+ F
B *
C -
D E
L’expression A - (B + C * (D - E)) * F
se représente facilement par un arbre
où apparaît clairement la priorité des
opérations:
13
Un arbre est une structure de données (souvent dynamique)
représentant un ensemble de valeurs organisées
hiérarchiquement (non linéaire). Chaque valeur est stockée dans
un nœud. Les nœuds sont connectés entre eux par des arêtes
qui représentent des relations parent/fils.
A
C DB
E G HF I
LKJ
NœudsArêtes
I. DÉFINITIONS & TERMINOLOGIES
14
Racine: est le nœud qui n'a
pas de prédécesseur (parent) et
possède zéro ou plusieurs fils. La
racine constitue la caractéristique
d'un arbre.
Feuille : est un nœud qui n'a
pas de successeur (fils). Une
feuille est aussi appelée un nœud
externe.
Nœud interne : est tout nœud
qui admet au moins un
successeur (fils).
A
C DB
E G HF I
LKJ
Racine
Nœud interne
Feuilles
I. DÉFINITIONS & TERMINOLOGIES
15
Père : est un nœud qui admet
au moins un successeur (fils).
Dans l'exemple, D est le père des
nœuds F, G, H et I.
Fils d’un nœud : sont ses
successeurs. Dans l'exemple, F,
G, H, et I sont les fils du nœud D.
Frères : sont les successeurs
ou les fils issus d'un même nœud
(parent direct). Dans l'exemple,
F, G, H et I sont des frères.
A
C DB
E G HF I
LKJ
Frères ou Fils de D
I. DÉFINITIONS & TERMINOLOGIES
Père
16
Sous arbre : est une portion
de l'arbre. Dans l'exemple, le
nœud G avec ces deux fils J et K
constituent un sous arbre.
Une branche est une suite de
nœuds connectés de père en fils
(de la racine à une feuille).
A-B-E
A-C
A-D-F
A-D-G-J
…..
A
C DB
E G HF I
LKJ
I. DÉFINITIONS & TERMINOLOGIES
17
Descendants d’un nœud :
sont tous les nœuds du sous arbre
de racine nœud. Dans l'exemple,
les descendants de D sont F, G,
H, I, J, K et L.
Ascendants d’un nœud :
sont tous les nœuds se trouvant
sur la branche de la racine vers
ce nœud. Dans l'exemple, les
ascendants de J sont G, D et A.
Les ascendants de E sont B et A.
A
C DB
E G HF I
LKJ
I. DÉFINITIONS & TERMINOLOGIES
18
Taille d’un arbre: est le
nombre de nœuds qu’il possède.
Taille de l’arbre ci contre = 12
Un arbre vide est de taille
égale à 0.
Degré d’un nœud : est le
nombre de ses fils. Dans
l'exemple, le degré de B est 1, le
degré de D est 4.
Degré d’un arbre : est le
degré maximum de ses nœuds.
Degré de l’arbre ci contre = 4
A
C DB
E G HF I
LKJ
I. DÉFINITIONS & TERMINOLOGIES
19
Le niveau d'un nœud: est la distance qui le sépare de la
racine:
Le niveau de la racine = 0
Le niveau de chaque nœud est égale au niveau de son père plus 1
Le niveau du nœud contenant ‘G' est égal à 2.
Racine
…..…………..…………………………………………….......
………………..…………………………………………….......
……………………………….......
.…………………………………………….......
A
C DB
E G HF I
LKJ
Niveaux
0
1
2
3
I. DÉFINITIONS & TERMINOLOGIES
20
La profondeur (hauteur) d'un arbre : est le plus grand
niveau, c-à-d la distance entre la racine et la feuille la plus
lointaine. Dans l'exemple, la profondeur de l'arbre est égal à 3
Racine
…..…………..…………………………………………….......
………………..…………………………………………….......
……………………………….......
.…………………………………………….......
A
C DB
E G HF I
LKJ
Niveaux
0
1
2
3
I. DÉFINITIONS & TERMINOLOGIES
21
Forêt : est un ensemble d'arbres.
A
C DB
E
G
HF I
L
KJ
I. DÉFINITIONS & TERMINOLOGIES
22
I. TYPOLOGIE
Les arbres sont classifiés selon:
leur degré m≥2: On trouve les arbres binaires (m = 2), ternaires
(m=3), quaternaires (m = 4) ,…….., m-aire (m>2).
la priorité d’ordre: où chaque nœud possède au moins une clé,
les valeurs de sous arbre gauche (droit resp.) de la clé sont
strictement inférieurs (supérieure ou égale resp.) à la valeur de la
clé. On trouve ainsi, les arbres binaires de recherche (où chaque
nœud possède une clé) et les arbres m-aire de recherche (où chaque
nœud possède (m-1) clé),
La propriété d’équilibrage: où les feuilles se situent au même
niveau. On trouve les arbres binaires de recherche équilibré (e.g:
AVL, rouge et noir, 2-3-4, …..) et les arbre m-aire de recherche
équilibré (B-arbres, B-arbre*, B-Arbre+, …..)
23
I. PARCOURS
Le parcours d’un arbre consiste à passer par tous ses
nœuds.
Les parcours permettent d’effectuer tout un ensemble de
traitement sur les arbres.
On distingue deux types de parcours :
Des parcours en profondeur (depth-first) explorent
l'arbre branche par branche. Parmi lesquels: le Préordre,
l‘Inordre et le Postordre.
Des parcours en largeur (breadth-first) explorent
l'arbre niveau par niveau
24
Dans un parcours en profondeur, on descend le plus
profondément possible dans l’arbre puis, une fois qu’une
feuille a été atteinte, on remonte pour explorer les autres
branches en commençant par la branche « la plus basse »
parmi celles non encore parcourues.
Le parcours en profondeur peut se faire en :
Préordre (Préfixe) : où on affiche la racine avant ses fils,
Postordre(Postfixe) : où on affiche les fils avant leur racine.
Inordre (Infixe) : où, dans le cas d’un arbre binaire, on affiche le
fils gauche avant sa racine et son frère droit,
I. PARCOURS
PARTIE II:
ARBRES BINAIRES DE
RECHERCHE (ABR)
Définitions
Parcours
Opérations de Base: Recherche, Insertion et
Suppression
26
PLAN DE LA PARTIE II
27
II. DÉFINITION
Un Arbre Binaire est un arbre de degré 2, c’est-à-dire que
chaque nœuds a au plus deux fils. Ainsi, le premier fils d'un nœud
est appelé Fils-Gauche (FG) et le deuxième fils est appelé Fils-
Droit (FD).
28
II. DÉFINITION
Un Arbre Binaire de Recherche (ABR) est un arbre
binaire ordonné tel que pour tout nœud « i »:
Toutes les valeurs du sous arbre gauche de « i » sont strictement
inférieures à la valeur de « i », et
Toutes les valeurs du sous-arbre droit de « i » sont supérieures ou
égales à la valeur de « i ».
29
II. PARCOURS PREORDRE
Le parcours préordre d’un arbre binaire R consiste à
visiter le nœud racine (R) ensuite parcourir récursivement
en préordre les sous arbres T1 (sous arbre gauche) puis T2
(sous arbre droit) ce qui donne : [ R , T1 , T2 ou RGD]
R
T1 T2
Sous arbre gauche G Sous arbre droit D
30
II. PARCOURS PREORDRE
Le parcours préordre d’un arbre binaire R consiste à
visiter le nœud racine (R) ensuite parcourir récursivement
en préordre les sous arbres T1 (sous arbre gauche) puis T2
(sous arbre droit) ce qui donne : [ R , T1 , T2 ou RGD]
Résultat de parcours: 8, 3, 1, 6, 4, 7, 10, 14, 13
31
II. PARCOURS INORDRE
Le parcours inordre d’un arbre binaire R consiste d'abord
à parcourir récursivement en inordre le sous arbre gauche
T1, puis visiter le nœud racine (R) ensuite parcourir
récursivement en inordre le sous arbre droit T2 ce qui donne
[ T1 , R , T2 ou GRD ]
R
T1 T2
Sous arbre gauche G Sous arbre droit D
32
II. PARCOURS INORDRE
Le parcours inordre d’un arbre binaire R consiste d'abord
à parcourir récursivement en inordre le sous arbre gauche
T1, puis visiter le nœud racine (R) ensuite parcourir
récursivement en inordre le sous arbre droit T2 ce qui donne
[ T1 , R , T2 ou GRD ]
Résultat de parcours: 1, 3, 4, 6, 7, 8, 10, 13, 14
Propriété: Le parcours
infixe d’un ABR visite les
nœuds par ordre
croissant des clés.
33
II. PARCOURS POSTORDRE
Le parcours postordre d’un arbre binaire R consiste
d'abord à parcourir récursivement en postordre les sous
arbres T1 puis T2 ensuite visiter le nœud racine (R) ce qui
donne [ T1 , T2 , R ou GDR]
R
T1 T2
Sous arbre gauche G Sous arbre droit D
34
II. PARCOURS POSTORDRE
Le parcours postordre d’un arbre binaire R consiste
d'abord à parcourir récursivement en postordre les sous
arbres T1 puis T2 ensuite visiter le nœud racine (R) ce qui
donne [ T1 , T2 , R ou GDR]
Résultat de parcours: 1, 4, 7, 6, 3, 13, 14, 10, 8
35
II. PARCOURS EN LARGEUR
Dans le parcours par niveau, tous les nœuds d’un même
niveau sont traités avant de descendre au niveau suivant
Résultat de parcours: 8, 3, 10, 1, 6, 14, 4, 7, 13
II. OPÉRATION DE RECHERCHE
La recherche d'un nœud ayant une clé particulière « x » se
fait de manière récursive:
Si l’arbre est vide: échec
Recherche négative: la clé n’appartient pas à l’arbre, l’algorithme se
termine.
Sinon: comparer la clé « x » avec la clé de la racine.
S’il y a égalité alors la clé « x » est trouvée.
Recherche positive: l’algorithme se termine.
Si la clé « x » est strictement inférieure, alors la recherche est
poursuivie dans le sous arbre gauche.
Si la clé « x » est strictement supérieure, alors la recherche est
poursuivie dans le sous arbre droit.
36
37
II. OPÉRATION DE RECHERCHE
La recherche est dichotomique, à chaque étape, un sous
arbre est éliminé:
Rechercher (55)
Rechercher (FD(20))
Rechercher (FG(59))
Rechercher (FD(27))
Rechercher (FD (33))
Élément trouvé
20
15 59
5
3 10
27 71
33
8
55
52
55 ?
38
II. OPÉRATION D’INSERTION
L'insertion d'une clé « x » se fait toujours au niveau d'une
feuille. Cette insertion dans un ABR doit maintenir la
propriété d’ordre des arbres de recherche, ainsi:
1. Rechercher la position d’insertion
2. Raccorder le nouveau nœud à son parent
39
II. OPÉRATION D’INSERTION
RechercherPosition (25)
Rechercher (FD(20))
Rechercher (FG(59))
Position trouvé pour l’insertion, le père est le nœud 27
Insérer 25 au niveau de la feuille dont le père est 27
20
15 59
5
3 10
27 71
33
8
55
52
+ 25
25
40
II. OPÉRATION DE SUPPRESSION
La suppression d’une clé « x » passe par deux étapes:
1. Rechercher d’abord le nœud qui contient la clé « x »;
soit « i » ce nœud
2. Supprimer le nœud « i » tout en maintenant la
propriété de l’ordre de l’ABR. Ainsi, on peut se
trouver dans une des situations suivantes :
41
II. OPÉRATION DE SUPPRESSION
Cas 1: Suppression d'une feuille
Il suffit de l'enlever de l'arbre vu qu'elle n'a pas de fils.
Exemple: supprimer le nœud i qui contient la valeur 8
1. Rechercher(8)
2. Libérer le nœud « i »
« i »
20
15 59
5
3 10
27 71
33
8
55
52
12
42
II. OPÉRATION DE SUPPRESSION
Cas 2: Suppression d'un nœud avec un fils
Il suffit de l'enlever de l'arbre en liant son père avec son fils.
Exemple: supprimer le nœud « i » qui contient la valeur 10
1. Rechercher(10)
2. Chainer le père de i avec le FD(i)
3. Libérer le nœud « i »
« i »
20
15 59
5
3 10
27 71
33
12 55
52
43
II. OPÉRATION DE SUPPRESSION
Cas 2: Suppression d'un nœud avec un fils
Il suffit de l'enlever de l'arbre en liant son père avec son fils.
Exemple: supprimer le nœud i qui contient la valeur 27
1. Rechercher(27)
2. Chainer le père de i avec le FG(i)
3. Libérer le nœud « i »
« i »
20
15 59
5
3 10
27 71
33
55
52
8
44
II. OPÉRATION DE SUPPRESSION
Cas 3: Suppression d'un nœud avec deux fils
Etape 1: On échange le nœud à supprimer avec son successeur
le plus proche (le nœud le plus à gauche du sous-arbre droit) ou
son plus proche prédécesseur (le nœud le plus à droite du
sous-arbre gauche). Cela permet de garder la propriété d’ordre
d‘ABR. 34
66
50
56
55
71
70
69
81
22
8
17
9
29
25
23 32
Le plus proche
prédécesseur
Le plus proche
successeur
45
II. OPÉRATION DE SUPPRESSION
Cas 3: Suppression d'un nœud avec deux fils
Etape 1 Cas A: On échange le nœud à supprimer avec son
successeur le plus proche (le nœud le plus à gauche ou le plus
petit du sous arbre droit)
Racine: 71
La plus petite valeur : 69
34
66
50
56
55
71
70
69
81
22
8
17
9
29
25
23 32
46
II. OPÉRATION DE SUPPRESSION
Cas 3: Suppression d'un nœud avec deux fils
Etape 1 Cas A: On échange le nœud à supprimer avec son
plus proche prédécesseur (le nœud le plus à droite ou le plus
grand du sous-arbre gauche).
Racine: 50
La plus grande valeur : 56
34
66
50
56
55
71
70
69
81
22
8
17
9
29
25
23 32
47
II. OPÉRATION DE SUPPRESSION
Cas 3: Suppression d'un nœud avec deux fils
Etape 2: on applique à nouveau la procédure de suppression qui
est maintenant une feuille ou un nœud avec un seul fils.
Ainsi, si on choisit d’échanger le nœud « 66 » avec son plus proche
successeur « 69 », on obtient
34
66
50
56
55
71
70
69
81
22
8
17
9
29
25
23 32
69
48
Cas 3: Suppression d'un nœud avec deux fils
Puis on applique à nouveau la procédure de suppression qui est
maintenant une feuille ou un nœud avec un seul fils.
Ainsi, si on choisit d’ échanger le nœud « 66 » avec son plus proche
prédécesseur « 56 », on obtient
34
66
50 71
70
69
81
22
8
17
9
29
25
23 32
56
II. OPÉRATION DE SUPPRESSION
56
55
49
II. OPÉRATION DE SUPPRESSION
En conclusion, pour supprimer le nœud « i » d’un ARB, on
rencontre une des situations suivantes :
Cas
« i »
Action
FG FD
Feuille Nil Nil Libérer le nœud « i »
Avec un
fils
Nil ≠Nil Chaîner le père au fils de « i » (FG(i) ou
FD(i)) ensuite libérer le nœud « i »≠Nil Nil
Avec
deux
fils
≠Nil ≠Nil
1. Rechercher le plus proche
prédécesseur ou successeur de « i »,
soit « P ».
2. Remplacer Info(i) par Info(P)
3. Supprimer le nœud « P »
PARTIE III:
ARBRES BINAIRES
ÉQUILIBRÉS
AVL
Introduction
Définition
Techniques d’équilibrage
Opérations de Base: Recherche, Insertion et Suppression
TAS
Définition
Hauteur
Opérations de Base: Insertion, Recherche et Suppression
Implémentation
Exemples d’Application
51
PLAN DE LA PARTIE III
52
III. AVL: INTRODUCTION
O (n)O (h) tel que h = log2(n)
87 ?
ABR Equilibré Filiforme
Intérêt des ABR équilibrés est de diminuer la complexité
temporelle des opérations de la recherche, de l’insertion
et de la suppression dans un ABR quelconque.
53
III. AVL: DÉFINITION
Les arbres AVL ont été introduits par les finlandais Adelson-
Velskii et Landis dans les années 60.
Un arbre AVL est un ABR équilibré dont:
la différence de hauteur (ou profondeur) entre le sous-
arbre gauche et le sous-arbre droit d'un nœud « R » diffère
d'au plus 1.
|Profondeur(FG(R) ) – Profondeur(FD(R)) | ≤ 1
les arbres gauches et droits d'un nœud sont des arbres
AVL.
Un champs supplémentaire est ajouté à tous les nœuds: c’est le
facteur de déséquilibre (appelé aussi facteur de balance)
qui est calculé après chaque insertion/suppression.
54
III. AVL: DÉFINITION
100
50
30 80
200
10
150
40
Exemple: soit l’ABR suivant. Est-il un arbre AVL?
+1
+1 +1
0 0 0
0
Notons:
que l’arbre vide a la
hauteur −1,
Et qu’une feuille est un
arbre de hauteur 0.
L’arbre vide et l’arbre
réduit à une feuille,
sont des arbres AVL
Cet arbre est un arbre AVL
À vérifier pour chaque nœud R, on a:
| Profondeur(FG(R) ) – Profondeur(FD(R)) | <= 1
0
55
Exemple: Cet ABR est un arbre AVL avant insertion
Insérer la valeur 5 100
50
30 80
200
10
150
40
Cet arbre n’est pas un arbre AVL après insertion de 5
arbre déséquilibré
50
+1
+1
0
+1
0 0
+2Après insertion, recalculer le
facteur de déséquilibre de
chaque nœud.
III. AVL: DÉFINITION
56
III. AVL: TECHNIQUES D’ÉQUILIBRAGE
L’opération d’équilibrage, appelée rotation, s’applique à
tous les ABR dans le but de pouvoir les rééquilibrer:
On opère donc une rotation gauche lorsque l’arbre
est «déséquilibré à droite», i.e. son sous-arbre droit
est plus haut que son sous-arbre gauche.
On opère une rotation droite dans le cas contraire à
savoir son sous-arbre gauche est plus haut que son
sous-arbre droit.
Les rotations préservent l’ordre des données d’un ABR
(parcours inordre).
57
III. AVL: TECHNIQUES D’ÉQUILIBRAGE
Rotation simple : Rotation droite
Soit A=(B, R, Z) un ABR tel que B=(X, P, Y).
La rotation droite est l’opération:
((X, P, Y), R, Z) → (X, P, (Y, R, Z))
R
P
X
(hauteur
h+1/h)
Déséquilibre gauche
Y
(hauteur
h/h)
Z
(hauteur
h/h-1)
P
R
X
(hauteur
h+1/h)
Y
(hauteur
h/h)
Z
(hauteur
h/h-1)
+1 ou 0
+2
0 ou -1
0 ou 1
Rotation droite
58
III. AVL: TECHNIQUES D’ÉQUILIBRAGE
Rotation simple : Rotation gauche
Soit A=(X, R, B) un ABR tel que B=(Y, P, Z).
La rotation gauche est l’opération:
( X, R, (Y, P, Z)) → ((X, R, Y), P, Z)
P
R
X
(hauteur h/h-1)
Y
(hauteur h)
Z
(hauteur
h+1/h)
R
P
Déséquilibre droit
X
(hauteur
h/h-1)
Y
(hauteur
h)
Z
(hauteur
h+1/h)
-1 ou 0
-2
0 ou -1
0 ou +1Rotation gauche
59
III. AVL: TECHNIQUES D’ÉQUILIBRAGE
Rotation double : double rotation gauche-droite
C’est une rotation gauche sur le sous arbre-gauche du nœud R
suivie d’une rotation droite sur le nœud R
P
Q
R
D
(h)
CB
A
(h)
Q
P
R
D
(h)
C
BA
(h)
Rotation gauche Rotation droite
Q
P R
D
(h)
CBA
(h)
((A, P, (B, Q, C)), R, D) → (((A, P, B), Q, C), R, D) → ((A, P, B), Q, (C, R, D))
-1
+2
0+2
60
III. AVL: TECHNIQUES D’ÉQUILIBRAGE
Rotation double : double rotation droite-gauche
C’est une rotation droite sur le sous arbre-droit du nœud R suivie
d’une rotation gauche sur le nœud R
Rotation droite Rotation gauche
(A, R, ((B, Q, C), P, D)) → (A, R, (B, Q, (C, P, D))) → ((A, R, B), Q, (C, P, D))
P
Q
R
A
(h)
+1
-2
B C
D
(h)
Q
P
R
-2
A
(h)
B
C D
(h)
Q
R P
0
A
(h)
B C D
(h)
61
III. AVL: OPERATIONS DE BASE
La recherche est identique à celui des ABR car les
arbres AVL sont avant tout des ABR équilibrés.
L’insertion d’un élément dans un arbre AVL peut
provoquer un déséquilibre. Donc, pour rétablir l’équilibre
(rééquilibrer) de l’arbre après une insertion, une seule
rotation (simple ou double) suffit.
La suppression d’un élément dans un arbre AVL peut
provoquer un déséquilibre. Donc pour rétablir l’équilibre
(rééquilibrer) de l’arbre après une suppression, il faut
faire entre 1 et h rotations (h est la hauteur de l’arbre).
62
III. AVL: INSERTION
L’ajout d’un nœud se fait toujours au niveau d’une feuille,
puis on rééquilibre l’arbre AVL si l’insertion a
déséquilibré l’arbre.
Le déséquilibre est rencontré lorsque le facteur
d’équilibrage d’un nœud de l’arbre égale à ± 2.
63
III. AVL: INSERTION
Exemple: soit la série de nombres à insérer dans un
arbre AVL (2 10 12 4 16 8 6 14 9 1 7)
2 10 12 4 16 8 6 14
2
0
2 10 12 4 16 8 6 14
2
10 0
-1
2 10 12 4 16 8 6 14
2
10
12 0
-1
-2
Rotation simple
10
122 00
0
64
III. AVL: INSERTION
Exemple: soit la série de nombres à insérer dans un
arbre AVL (2 10 12 4 16 8 6 14 9 1 7)
2 10 12 4 16 8 6 14
10
122
4 0
-1 0
1
2 10 12 4 16 8 6 14
10
122
4 16 00
-1-1
0
65
III. AVL: INSERTION
Exemple: soit la série de nombres à insérer dans un
arbre AVL (2 10 12 4 16 8 6 14 9 1 7 )
2 10 12 4 16 8 6 14 9 1 7
10
122
4 16
8 0
-1
-2
0
-1
1
Rotation
simple
10
124
8 1620 0
0
-10
0
66
III. AVL: INSERTION
Exemple: soit la série de nombres à insérer dans un
arbre AVL (2 10 12 4 16 8 6 14 9 1 7)
2 10 12 4 16 8 6 14 9 1 7
10
124
8 162
6 0
10
-1
0
-1
1
67
III. AVL: INSERTION
Exemple: soit la série de nombres à insérer dans un
arbre AVL (2 10 12 4 16 8 6 14 9 1 7)
2 10 12 4 16 8 6 14 9 1 7
10
124
8 162
6 14
0
0
1
-2
10
-1
0
Rotation
double
10
144
8 162
6
12
0
1
0 0
0-1
1
0
68
III. AVL: INSERTION
Exemple: soit la série de nombres à insérer dans un
arbre AVL (2 10 12 4 16 8 6 14 9 1 7)
2 10 12 4 16 8 6 14 9 1 7
10
144
8 162
6
12
1 9
0
10
144
8 162
6
12
-1
1
0 0
0
1
-1
2
10
9 0
7
Nœud inséré
Insertion
du 7
69
III. AVL: INSERTION
Exemple: soit la série de nombres à insérer dans un
arbre AVL (2 10 12 4 16 8 6 14 9 1 7)
0
10
144
8 162
6
12
-1
1
0 0
0
1
-1
2
10
9 0
7
Nœud inséré
10
14
4
8
16
2 6
12
-1
0
0
1
-1
10
9
07 0
0
0
0
Rotation
double
2 10 12 4 16 8 6 14 9 1 7
70
III. AVL: INSERTION
R
h h
R
hh+1
R
h h+1
R
hh+2
R
hh+1
R
h+1h+1
R
h h+2
R
h+1 h+1
R
h h+1
0
+1
-1
+1
+2
0
-1
0
-2
AvantAprès insertion à gauche Après insertion à droite
Cas A
Cas B
71
III. AVL: INSERTION
Remarques:
Après une insertion, seules les nœuds qui sont sur le chemin du
point d’insertion à la racine sont susceptibles d’être déséquilibrés.
Cas A: L’arbre devient non équilibré quand le nouveau nœud
inséré est un descendant gauche d’un nœud qui avait un facteur
d’équilibrage égal à 1
Cas B: L’arbre devient non équilibré quand le nouveau nœud
inséré est un descendant droit d’un nœud qui avait un facteur
d’équilibrage égal à -1
72
III. AVL: INSERTION
R
hh+2
+2
R
h
+1
P
hh
0
Cas A
Si insertion dans le sous-arbre
gauche du fils gauche alors
Rotation Simple à droite
Si insertion dans le sous-arbre droit
du fils gauche alors Rotation
Double Gauche-Droite
R
h
+2
P
h
+1
h+1
R
h
+2
P
h
-1
h+1
Avant
73
III. AVL: INSERTIONR
h h+2
-2 Cas B
R
h
-1
P
hh
0
R
h
P
h
-2
+1
h+1
R
h
P
hh
-2
-1
Si insertion dans le sous-arbre
droit du fils droit alors Rotation
Simple à gauche
Si insertion dans le sous-arbre gauche
du fils droit alors Rotation Double
Droite-Gauche
Avant
74
III. AVL: SUPPRESSION
Le principe de la suppression d’un élément dans un arbre
AVL est le même que dans un ABR, c.à.d. recherche de
l’élément à supprimer, suppression et remplacement, le
cas échéant, par l’élément qui lui immédiatement
inférieur ou supérieur.
Après la première phase de la suppression, la hauteur de
l’arbre est diminué de 1. Le problème est que cet arbre
n’est plus forcément un arbre AVL. Il faut donc le
rééquilibrer.
75
III. AVL: SUPPRESSION
S’il y a déséquilibre, la rotation appliquée peut diminuer
à son tour la hauteur de l’arbre et générer un nouveau
déséquilibre. En fait les rotations peuvent s’enchainer en
cascade depuis l’élément supprimé jusqu’à la racine.
Ainsi, on peut faire jusqu’à h (hauteur de l’arbre initial)
rotations (simple ou double).
76
III. AVL: SUPPRESSION
Exemple: soit l’arbre suivant. Donner le résultat après la
suppression de 10:
10
14
4
8
16
2 6
12
-1
0
0
1
-1
10
9
0
7 0
0
0
0
12
14
4
8
16
2 6 -1
-1
1
-1
10
9
0
7 0
0
0
0
Remplacer par
le successeur
77
III. AVL: SUPPRESSION
Exemple: soit l’arbre suivant. Donner le résultat après la
suppression de 8:
12
14
4
8
16
2 6 -1
-1
1
-1
10
9
0
7 0
0
0
0
12
14
4
9
16
2 6 -1
-1
1
-2
10 0
7 0
0
0
Remplacer par
le successeur
78
III. AVL: SUPPRESSION
Exemple: soit l’arbre suivant. Donner le résultat après la
suppression de 8:
12
14
4
9
16
2 6 -1
-1
1
-2
10 0
7 0
0
0
14
12
4
9
162 6 -1
0
1
0
10 0
7
0
0
1
RSG
79
III. AVL: SUPPRESSION
Exemple: soit l’arbre suivant. Donner le résultat après la
suppression de 12 puis 16:
14
12
4
9
162 6 -1
0
1
0
10 0
7
0
0
1
144
9
2 6 -1
1
0
10 0
7
0
+2
80
III. AVL: SUPPRESSION
Exemple: soit l’arbre suivant. Donner le résultat après la
suppression de 12 puis 16:
144
9
2 6 -1
1
0
10 0
7
0
+2
9
4
14
2
6 -1
1 1
1 0
0
7
0
-1
RSD
81
III. AVL: SUPPRESSION
Exemple: soit l’arbre suivant. Donner le résultat après la
suppression de 30:
100
200
30
50
300
10 40
-1
-1
+1
20
80
60
0
+1
+1
-1
9070+1
0
00
0
40
50
300
10
-1
-1
+1
20
80
60
+2
+1
-1
9070
+1
100
200
0
0
0
0
Remplacer par
le successeur
82
III. AVL: SUPPRESSION
Exemple: soit l’arbre suivant. Donner le résultat après la
suppression de 30:
40
50
300
10
-1
-1
+1
20
80
60
+2
+1
-1
9070
+1
100
200
0
0
0
0
RDG-D
20
50
300
10
-1
+1
40 80
60
0
0
+1
-2
9070+1
100
200
0 0
0
0
83
III. AVL: SUPPRESSION
Exemple: soit l’arbre suivant. Donner le résultat après la
suppression de 30:
RDD-G
20
50
300
10
-1
+1
40 80
60
0
0
+1
-2
9070+1
100
200
0 0
0
0
20
80
30010
-1
-1
40
50
60
0
0
9070
+1
100
200
0
0 0 0
0
0
AVL
TAS
Définition
Hauteur
Opérations de Base: Insertion, Recherche et Suppression
Implémentation
Exemples d’Application
84
PLAN DE LA PARTIE III
85
III.TAS: DÉFINITION
Un TAS (HEAP) inventé par Williams Floyd en 1964, est
un arbre binaire qui vérifie les deux propriétés suivantes :
Propriété structurelle: arbre binaire parfait,
i.e. Tous les niveaux sont totalement remplis sauf le
dernier qui est rempli de la gauche vers la droite.
Propriété d’ordre :
TASmin: Clé (père) ≤ Clé(fils)
TASmax: Clé (père) ≥ Clé (fils)
86
III.TAS: DÉFINITION
Exemple d’un TASmin
Clé (père) ≤ Clè (fils)
Le minimum se trouve toujours à la racine
Minimum
Maximum
4
5 6
207
811
915
2516 1214
87
III.TAS: DÉFINITION
Exemple d’un TASmax
Clé (père) ≥ Clè (fils)
Le maximum se trouve toujours à la racine
Maximum
Minimum
40
35 26
2017
811
1915
131 1214
88
III.TAS: HAUTEUR
Théorème: Un TAS de n nœud a une hauteur O(log2 n)
Démonstration
Soit h, la hauteur d’un tas de n nœud
Au niveau i≠h, ni=2i
Donc n = 20 + 21 + 22 + ....+ 2h-1 + c tel que , 0≤c≤2h
n = 2h + c ≥ 2h⇒ h ≤ log2 n ⇒ O(h) = O(log2 n).
Conséquence: Les opérations proportionnelles à h sont
O (log2 n)
89
III.TAS: INSERTION
Pour insérer une valeur « v » dans un TASmin [ou
TASmax]
1. Insérer la valeur « v » à la fin du dernier niveau de
l’arbre.
2. Tant que la valeur du père de « v » est plus grande
[petite] que « v », échanger la valeur du père de v
avec « v ».
L’étape 1 permet de vérifier la propriété structurelle et
l’étape 2 permet de vérifier la propriété de l’ordre.
90
III.TAS: INSERTION
Exemple: Soit le TASmin suivant. Donner le résultat
après l’insertion 5, 17, 3, 18
4
9
6
207
811
1015
2516 1214
91
III.TAS: INSERTION
Exemple: Soit le TASmin suivant.
Insertion 5
4
9
6
207
811
1015
2516 1214 5
92
III.TAS: INSERTION
Exemple: Soit le TASmin suivant.
Insertion 17
4
9
5
67
811
1015
2516 1214 20 17
93
III.TAS: INSERTION
Exemple: Soit le TASmin suivant.
Insertion 3
4
9
5
67
811
1015
2516 1214 20 17
3
94
III.TAS: INSERTION
Exemple: Soit le TASmin suivant.
Insertion 18
3
4
5
67
811
109
2515 1214 20 17
16 18
95
III.TAS: INSERTION
Exercice: Construire un TASmin et un TASmax à partir
des valeurs suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
96
III.TAS: INSERTION
Solution: Construire un TASmin à partir des valeurs
suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
20
15
15
20 10
10
20 15
35 19
10
19 15
35 20 13
10
19 13
35 20 15 5
5
19 10
35 20 15 13
3
3
5 10
19 20 15 13
35 12
97
INSERTION
Solution: Construire un TASmin à partir des valeurs
suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
3
5 10
12 20 15 13
35 19 7
3
5 10
12 7 15 13
35 19 20 16 40 25 38
98
III.TAS: INSERTION
Solution: Construire un TASmax à partir des valeurs
suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
20
15 10
35
20 10
15 19
13
35
99
III.TAS: INSERTION
Solution: Construire un TASmax à partir des valeurs
suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
35
20 13
15 19
10 5
3 12 7 16 40
40
20 35
15 19 13 5
3 12 7 16 10
25
100
III.TAS: INSERTION
Solution: Construire un TASmax à partir des valeurs
suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
40
20 35
15 19 25 5
3 12 7 16 10
13 38
101
III.TAS: INSERTION
Solution: Construire un TASmax à partir des valeurs
suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
40
20 38
15 19 25 35
3 12 7 16 10
13 5
102
III.TAS: INSERTION
L’insertion d’une valeur « v » peut nécessiter O(h) =
O(log2(n)) opérations où h est la hauteur du TAS et n est
son nombre des nœuds.
En effet, au pire des cas, l’échange peut se remonter à la racine
dans le cas où « v » est inférieure à la valeur de la racine, ainsi, il
devient le nouveau minimum
103
III.TAS: RECHERCHE
Pour rechercher une valeur « v » dans un TASmin [ou
TASmax], on doit parcourir l’arbre en largeur (niveau par
niveau)
On passera au niveau « i » si seulement si la valeur « v
» est supérieure [inférieure] à la valeur de l’un des
nœuds de niveau « i-1 ».
104
III.TAS: RECHERCHE
Exemple: Soit le TASmin suivant.
7 ?
4
9
6
207
811
1015
2516 1214
La valeur existe, fin de recherche
105
III.TAS: RECHERCHE
Exemple: Soit le TASmin suivant.
8 ?
4
9
6
207
811
1015
2516 1214
La valeur existe, fin de recherche
106
III.TAS: RECHERCHE
Exemple: Soit le TASmin suivant.
3 ?
4
9
6
207
811
1015
2516 1214
La valeur n’existe pas , fin de recherche
107
III.TAS: RECHERCHE
Exemple: Soit le TASmin suivant.
30 ?
4
9
6
207
811
1015
2516 1214
Fin de recherche, la valeur n’existe pas
108
RECHERCHE
La recherche d'une valeur « x » dans un TAS peut
nécessiter O(n) opérations où n est le nombre des nœuds.
Pire des cas: Si « x » est supérieure à la valeur maximale du
TASmin [ou inférieure à la valeur minimale du TASmax],
alors on doit descendre jusqu’au dernier niveau en parcourant
tous les nœuds pour vérifier que la valeur recherchée n’existe pas.
La recherche étant un pré-requis à la suppression d'une
valeur « x », une suppression peut nécessiter O(n)
opérations aussi.
109
III.TAS: SUPPRESSION
Pour supprimer une valeur « v » dans un TASmin [ou
TASmax]
1. Rechercher la valeur « v », si elle existe on passe à
l’étape suivante, sinon stop.
2. Soit « P » le nœud contenant la valeur « v »,
remplacer la valeur de « P » par la valeur du dernier
nœud du dernier niveau (soit « Q » ce nœud et « x » sa
valeur). Cela permet de vérifier la propriété
structurelle.
110
III.TAS: SUPPRESSION
Pour supprimer une valeur « v » dans un TASmin [ou TASmax]
3. Vérifier la propriété d’ordre:
a. Tant que la valeur « x » est inférieure [supérieure] à
celle du père, échanger la valeur « x » avec celle du
père.
b. Tant que la valeur « x » est supérieure [inférieure] à
celle de l’un de ses fils, échanger la valeur « x » avec
celle du plus petit [grand] de ses fils.
111
III.TAS: SUPPRESSION
Exemple: Soit le TASmin suivant. Donner le résultat
après la suppression de 9, 16, 6 et 4.
4
9
6
207
811
1015
2516 1214
112
III.TAS: SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 9.
4
9
6
207
811
1015
2516 1214
113
III.TAS: SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 9, 16.
4
8
6
207
11
1015
2516 1214
114
SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 16.
4
8
6
2071015
2511 1214
115
III.TAS: SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 6.
4
8
6
2071011
2515 1214
116
III.TAS: SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 6.
4
8
12
2071011
2515 14
117
III.TAS: SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 4.
4
8
7
20121011
2515 14
118
III.TAS: SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 4.
14
8
7
20121011
2515
119
III.TAS: SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 4.
7
8
12
20141011
2515
120
III.TAS: IMPLÉMENTATION
Un TAS se représente naturellement par un tableau:
Les sommets sont numérotés par un parcours en largeur, de
gauche à droite.
Le sommet « i » est rangé dans la case d’indice i du tableau.
1 2 3 4 5 6 7 8 9 10 11 12 13
4 5 6 15 9 7 20 16 25 14 12 11 8
4
5
6
207
811
915
2516 1214
1
2 3
4 5 6 7
8 9
10 11 12 13
121
III.TAS: IMPLÉMENTATION
On parle ici de la représentation statique
séquentielle d’un arbre binaire
La case 0 est vide
Indice(racine)=1
Indice(FG)=2*Indice(Père)
Indice(FD)=2*Indice(Père)+1
Indice(Père)= [Indice (Fils)/2]
0 1 2 3 4 5 6 7 8 9 10 11 12 13
?? 4 5 6 15 9 7 20 16 25 14 12 11 8
122
III.TAS: EXEMPLES D’APPLICATION
Malgré que la recherche et la suppression dans un TAS
sont plus coûteuses que dans un ABR ou un AVL, les TAS
sont très utiles entre autre pour le tri et pour
implémenter les files de priorité.
123
Étant donné un tableau d’entiers T (n: sa taille), dire
comment peut on trier (ordre croissant) ce tableau en
utilisant un TASmin ou TAS max?
Exemple:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
EXEMPLE D’APPLICATION
TRI PAR TAS
124
1. Transformer le tableau en un TASMIN
20 15 10 35 19 13 5 3 12 7 16 40 25 38
3
5 10
12 7 15 13
35 19 20 16 40 25 38
III.TAS: EXEMPLE D’APPLICATION
TRI PAR TAS
125
2. Extraire n fois le minimum du TASMIN :
3 5
3
5 10
12 7 15 13
35 19 20 16 40 25 38
5
7 10
12 16 15 13
35 19 20 38 40 25
III.TAS: EXEMPLE D’APPLICATION
TRI PAR TAS
126
2. Extraire n fois le minimum du TASMIN :
3 5 7 10
7
12 10
19 16 15 13
35 25 20 38 40
10
12 13
19 16 15 40
35 25 20 38
III.TAS: EXEMPLE D’APPLICATION
TRI PAR TAS
127
2. Extraire n fois le minimum du TASMIN :
3 5 7 10 12 13 15
12
16 13
19 20 15 40
35 25 38
13
16 15
19 20 38 40
35 25
15
16 25
19 20 38 40
35
III.TAS: EXEMPLE D’APPLICATION
TRI PAR TAS
128
2. Extraire n fois le minimum du TASMIN :
3 5 7 10 12 13 15 16 19 20 25 35 38 40
16
19 25
35 20 38 40
19
20 25
35 40 38
20
35 25
38 40
25
35 40
38
35
38 40
38
40
40
III.TAS: EXEMPLE D’APPLICATION
TRI PAR TAS
129
III.TAS: EXEMPLE D’APPLICATION
IMPLÉMENTATION D’UNE FILE AVEC PRIORITÉ
Une file d’attente avec priorité est une collection d’éléments
dans laquelle l’ajout ne se fait pas toujours à la queue (fin).
Tout nouvel élément est ajouté dans la file, selon sa
priorité.
Le retrait se fait toujours du début.
Dans une file avec priorité, un élément prioritaire prendra la
tête de la file même s’il arrive le dernier.
L’implémentation de ces files d’attente peut être par tableau
(décalage ou circulaire) ou LLC ordonnée, mais
l’implémentation la plus efficace et la plus répandue utilise les
TAS.
PARTIE IV:
ARBRES M-AIRE DE
RECHERCHE (AMR)
Définitions
Opérations de Base: Recherche, Insertion et
Suppression
131
PLAN DE LA PARTIE IV
132
IV. DÉFINITION
Un Arbre M-aire de Recherche (AMR) peut être défini
comme une généralisation de l'arbre binaire de recherche.
Au lieu d'avoir une clé et deux pointeurs, on aura « m-1 » clés
et « m » pointeurs.
Un AMR d'ordre « m » est un arbre dans lequel chaque
nœud peut avoir « m » fils.
133
IV. DÉFINITION
Si s1, s2, ... sm sont les « m » sous arbres issus d'un nœud
donné avec les clés k1, k2, ....,km-1 dans l'ordre ascendant,
alors :
Toutes les clés dans s1 sont inférieurs à k1
Toutes les clés dans sj (j=2,3, ...m-1) sont supérieurs à kj-1 et
inférieur à kj
Toutes les clés dans sm sont supérieurs km-1.
s1 k1 s2 ….. kj-1 sj kj …... km-1 sm
ki des données tq: k1 < k2 ....< km-1
134
IV. DÉFINITION
Propriété d’ordre:
s1 k1 s2 ….. kj-1 sj kj …... km-1 sm
s11 k11 s12 k12 ....... s1(d-1) k1(m-1) s1m
sj1 kj1 sj2 kj2 ....... sj(m-1) kj(d-1) sjm
sm1 km1 sm2 km2 ....... sm(m-1) km(m-1) smm
ki des données tq: k1 < k2 ....< km-1
(Éléments du s1) < k1 (Éléments du sd) > km-1
kj-1 < (Éléments du sj) < kj
(j=2,3, ...m-1)
135
Exemple: Soit l’AMR d’ordre 4 suivant
IV. DÉFINITION
136
IV. RECHERCHE
La recherche dans un AMR ressemble beaucoup à celle
effectuée dans un ABR, excepté qu’au lieu de prendre à
chaque nœud une décision de branchement binaire (Fils
gauche ou droit), on prend une décision à options multiples,
selon le nombre de fils du nœud.
137
IV. RECHERCHE
Exemple: Rechercher l’élément 68.
Nil i.e: L’élément n’existe pas
138
IV. INSERTION
L’insertion se fait toujours au niveau des feuilles.
L’insertion se déroule comme suit:
1. Rechercher la position de la clé à insérer « x », soit P le
nœud trouvé.
2. Si le nœud (P) n’est pas plein (le nombre des clés
insérés est strictement inférieur à m-1) alors insérer
la clé à sa bonne position dans le nœud.
3. Sinon, le nœud est plein (le nombre des clés insérés
est égal à m-1, i.e. il y a un débordement) alors créer
un nouveau nœud contenant la clé « x » ensuite le
chaîner à la bonne position comme fils du « P »
139
IV. INSERTION
Exemple: Insérer les éléments suivants: 1, 40, 68, 170.
1 6 10 37 40
68
170
140
IV. SUPPRESSION
On distingue deux types de suppression:
1. Suppression logique:
Laisser la clé au niveau du nœud et le marquer comme
supprimé
Le nœud reste utilisé pour l'algorithme de recherche
L’insertion d’un nœud supprimé consiste à le marquer
comme non supprimé
2. Suppression physique: Technique similaire à celle
des ABR
141
IV. SUPPRESSION
Suppression physique:
a. Si l’élément à supprimer est le seul élément dans le
nœud alors libérer le nœud.
Exemple: supprimer 37 ou 110
142
IV. SUPPRESSION
Suppression physique:
b. Si l’élément à supprimer a un sous arbre gauche ou
droit vide alors supprimer l’élément, ensuite tasser le
nœud (décalage des clés etou déplacement des fils).
Exemple: la suppression du 120 entraîne le décalage de 150 à
la position de 120.
68
100 150
110
I
143
IV. SUPPRESSION
Suppression physique:
b. Si l’élément à supprimer a un sous arbre gauche ou
droit vide alors supprimer l’élément, ensuite tasser le
nœud (décalage des clés etou déplacement des fils).
Exemple: la suppression du 65 entraîne le décalage de 69 à la
position de 65 ainsi le déplacement du fils droit de 65.
68
62 69
68
I
144
IV. SUPPRESSION
Suppression physique:
b. Si l’élément à supprimer a un sous arbre gauche ou
droit vide alors supprimer l’élément, ensuite tasser le
nœud (décalage des clés etou déplacement des fils).
Exemple: la suppression du 62 ensuite 69 entraîne la
libération du nœud G et le chaînage du nœud I avec D.
68
62 69
68
69
68
145
IV. SUPPRESSION
Suppression physique:
b. Si l’élément à supprimer a un sous arbre gauche ou
droit vide alors supprimer l’élément, ensuite tasser le
nœud (décalage des clés etou déplacement des fils).
Exemple: la suppression du 69 entraîne la libération du
nœud G et le chaînage du nœud I avec D.
68
68
146
IV. SUPPRESSION
Suppression physique:
c. Si l’élément à supprimer a des sous arbres gauche et
droit tous les deux non vides alors remplacer l’élément
à supprimer par son successeur/prédécesseur, ensuite
supprimer ce successeur/prédécesseur
Exemple: la suppression du 85 entraîne le remplacement du
85 par 100 , ensuite la suppression du 100
120 150
110
12 50 100
PARTIE V:
B-ARBRES: AMR EQUILIBRÉS
Introduction
Définition
Opérations de Base: Insertion et Suppression
148
PLAN DE LA PARTIE V
149
V. INTRODUCTION
Les principaux problèmes avec les AMR sont
Équilibrage après MAJ
Gaspilla d’espace dû aux suppression
Bayer et McCreight (en 1970) ont fourni une solution à ces
problèmes par l'invention des B-arbres (B pour Bayer /
Boeng / Balanced).
150
V. DÉFINITION
Un B-arbre d'ordre m (tel que m= 2*d +1, d≥1) est défini
comme suit :
La racine, si elle n’est pas une feuille, a au moins 2 fils.
Chaque nœud contient k clés avec:
1≤k≤2*d (nœud racine)
d≤k≤2*d (nœud non racine)
Tous les nœuds feuilles sont au même niveau.
151
V. INTRODUCTION
Ainsi, dans un B-arbre, le taux de remplissage de chaque
nœud est maintenu entre 50% et 100%
Les insertions et les suppressions deviennent simples à
réaliser sauf dans deux cas particuliers:
Insertion dans un nœud déjà plein
Suppression dans un nœud entraînant un taux de
remplissage inférieur à 50%
152
V. INSERTION
L’insertion se fait toujours au niveau des feuilles.
Ainsi, l’insertion se déroule comme suit:
1. Rechercher la position de l’élément à insérer, soit P le
nœud trouvé.
2. Si le nœud P n’est pas plein alors insérer la clé à sa
place.
153
V. INSERTION
Exemple: Considérons le B-arbre suivant d'ordre 3,
insérer les valeurs suivantes dans l’ordre : 55, 57, 95, 85, 87.
154
V. INSERTION
3. Sinon, le nœud P est plein, l’éclatement se fait en
cascade (approche ascendante) comme suit
a. Classer les clés dans l’ordre croissant : k1, k2, …km; soit kmil la
clé du milieu
b. Laisser les d plus petites clés (k1 … kmil-1) dans le nœud P
c. Déplacer les d plus grandes clés (kmil+1 … km) dans un
nouveau nœud (Q)
d. Remonter la clé médiane (ou la valeur du milieu kmil) dans le
nœud père de telle sorte que le nœud P se trouvera à sa
gauche et Q à sa droite.
e. Soit P le nœud père, aller à 2 (application récursive de ce
principe éventuellement jusqu’à la racine)
155
V. INSERTION
Exemple: Considérons le B-arbre suivant d'ordre 3,
insérer les valeurs suivantes dans l’ordre : 55, 57, 95, 85, 87.
156
V. INSERTION
Exemple: Considérons le B-arbre suivant d'ordre 3,
insérer les valeurs suivantes dans l’ordre : 55, 57, 95, 85, 87.
157
V. SUPPRESSION
Il faut supprimer l’élément tout en préservant la qualité
de B-arbre, c'est à dire en gardant au moins d clés dans le
nœud (non racine).
C'est le cas de la suppression physique dans un Arbre de
M-aire Recherche (AMR). En plus, si le nœud feuille qui
contenait la clé à supprimer a moins de d clés, alors l'action
suivante est entreprise :
158
V. SUPPRESSION
Cas 1: Si l'un des frères (gauche ou droit) contient plus de
d clés, alors la clé, soit Ks, dans le nœud père qui sépare
entre les deux frères est ajoutée au nœud "underflow" et le
dernier (si frère gauche) ou le premier élément (si frère droit)
est ajoutée au père à la place de Ks.
Suppression de 113
B-arbre d’ordre 5
159
V. SUPPRESSION
Cas 2-a: Si les deux frères contenaient exactement d clés,
le nœud "underflow" et l'un de ses frères seront concaténés (
fusionnés ou consolidés) en un seul nœud qui contient aussi
la clé séparatrice de leur père.
Suppression de 120
B-arbre d’ordre 5
160
V. SUPPRESSION
Cas 2-b: Il est aussi possible que le père contient
seulement d clés et par conséquent il n'a pas de clé à donner.
Dans ce cas, il peut emprunter de son père et frère.
Suppression de 65
B-arbre d’ordre 5
161
V. SUPPRESSION
Cas 2-c: Dans le pire des cas, quand les frères du père
n'ont pas des clés à donner, le père et son frère peuvent aussi
être concaténés et une clé est prise du grand père.
Suppression de 173
B-arbre d’ordre 5
162
V. SUPPRESSION
Cas 2-d: Si tous les antécédents d'un nœud et leurs frères
contiennent exactement d clés, une clé sera prise de la racine
(due aux concaténations en cascades):
Si la racine avait plus d'une clé, ceci termine le
processus.
Si la racine contenait une seule clé, elle sera utilisée
dans la concaténation. Le nœud racine est libéré et la
profondeur de l'arbre est réduit d'une unité.
163
V. B-ARBRE
Exercice:
1. Construire un B-arbre d’ordre 3 et un B-arbre d’ordre 5
à partir des valeurs suivantes:
2. Supprimer du B-arbre d’ordre 5 les valeurs suivantes: 5,
15, 25, 35, 13, 10.
3. Supprimer du B-arbre d’ordre 3 les valeurs suivantes:
10, 7, 5, 13, 25, 38.
20 15 10 35 19 13 5 3 12 7 16 40 25 38
164
V. B-ARBRE
1. Construction de B-arbre d’ordre 3
20 15 10 35 19 13 5 3 12 7 16 40 25 38
20 10, 15, 2015 20 15
10 20
19, 20, 35
15
10 20 35
15 20
19 3510 13
5, 10, 13
10, 15, 20
+20
+15, +10
+35, +19
+13, +5
165
V. B-ARBRE
1. Construction de B-arbre d’ordre 3
10
19 355
20
15
13
+3, +12, +7
10
19 353 5
20
15
12 13
3, 5, 7
5 10
19 353
20
15
12 137
20 15 10 35 19 13 5 3 12 7 16 40 25 38
166
V. B-ARBRE
1. Construction de B-arbre d’ordre 3
20 15 10 35 19 13 5 3 12 7 16 40 25 38
5 10
16 19 38 403
20 35
15
12 137 25
+38
5 10
16 19 35 403
20
15
12 137
25, 35, 40
+16, +40, +25
167
V. B-ARBRE
1. Construction de B-arbre d’ordre 5
20 15 10 35 19 13 5 3 12 7 16 40 25 38
10, 15, 19, 20, 35
+20, +15,
+10, +35,
+19
+13, +5, +3
10 15 20 35 19
20 3510 15
19
20 355 10 13 15
3, 5, 10, 13, 15
168
V. B-ARBRE
1. Construction de B-arbre d’ordre 5
10 19
20 25 35 403 5 7 20, 25, 35, 38, 4012 13 15 16
10 19 35
20 253 5 7 12 13 15 16 38 40
+12, +7,
+16, +40,
+25, +38
169
V. B-ARBRE
2. Supprimer du B-arbre d’ordre 5 les valeurs
suivantes: 5, 15, 25, 35, 13, 10.
10 19 35
20 253 5 7 12 13 15 16 38 40
Emprunter une clé du frère
gauche
10 16 35
19 203 7 12 13 38 40
V. B-ARBRE
2. Supprimer du B-arbre d’ordre 5 les valeurs
suivantes: 5, 15, 25, 35, 13, 10.
10 16 35
19 203 7 12 13 38 40
1. Remplacer par le
successeur 38
2. Fusionner avec le frère
gauche
170
10 16
19 20 38 403 7 12 13
V. B-ARBRE
2. Supprimer du B-arbre d’ordre 5 les valeurs
suivantes: 5, 15, 25, 35, 13, 10.
171
10 16
19 20 38 403 7 12 13
Emprunter une clé du frère
droit
10 19
20 38 403 7 12 16
V. B-ARBRE
2. Supprimer du B-arbre d’ordre 5 les valeurs
suivantes: 5, 15, 25, 35, 13, 10.
172
10 19
20 38 403 7 12 16
1. Remplacer par le prédécesseur 7
2. Fusionner avec le frère droit
19
20 38 403 7 12 16
V. B-ARBRE
3. Supprimer du B-arbre d’ordre 3 les valeurs
suivantes: 10 (remplacer par le successeur 12), 7, 5, 13, 25, 38.
173
5 10
16 19 38 403
20 35
15
12 137 25
5 12
16 19 38 403
20 35
15
137 25
V. B-ARBRE
3. Supprimer du B-arbre d’ordre 3 les valeurs
suivantes: 10, 7(fusionner avec le frère droit), 5, 13, 25, 38.
174
5 12
16 19 38 403
20 35
15
137 25
5
16 19 38 403
20 35
15
12 13 25
V. B-ARBRE
3. Supprimer du B-arbre d’ordre 3 les valeurs
suivantes: 10, 7, 5(remplacer par le successeur 12), 13, 25,
38.
175
12
16 19 38 403
20 35
15
13 25
5
16 19 38 403
20 35
15
12 13 25
V. B-ARBRE
3. Supprimer du B-arbre d’ordre 3 les valeurs
suivantes: 10, 7, 5, 13, 25 (emprunter du frère droit), 38.
176
12
16 19 38 403
20 35
15
13 25
1. Fusionner avec le frère gauche
2. Emprunter du frère
droit
15
16 19 403 12
38
20
35
V. B-ARBRE
3. Supprimer du B-arbre d’ordre 3 les valeurs
suivantes: 10, 7, 5, 13, 25, 38.
177
2. Fusionner avec le frère gauche
1. Remplacer par 40
3. Fusionner avec le frère
gauche
15
16 19 403 12
38
20
35
15 20
16 193 12 35 40
SOURCES DE CE COURS
N. EL-ALLIA , Cours d’Algorithmique et Structures de données dynamiques, Ecole
nationale Supérieure d’Informatique (ESI), 2014.
Djamel Eddine ZEGOUR, Cours de Structures de Données, Ecole nationale
Supérieure d’Informatique (ESI), Disponible sur
http://zegour.esi.dz/Cours/Cours_sdd.htm
W. K. Hidouci, Cours Structures De Données et Fichiers, École nationale Supérieure
d’Informatique, Disponible sur hidouci.esi.dz/algo/
A. Walid, Gestion des fichiers, Disponible sur https://slideplayer.fr/slide/9332040/
A. Aroussi, Cours d’ Algorithmique Avancée, Université de Blida 1, 2016, Disponible
sur https://sites.google.com/a/esi.dz/informatiqueblida/Algorithmique/annee-
universitaire-2015-2016
178

More Related Content

What's hot

Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesAnass41
 
La complexité des algorithmes récursives Géométrie algorithmique
La complexité des algorithmes récursivesGéométrie algorithmiqueLa complexité des algorithmes récursivesGéométrie algorithmique
La complexité des algorithmes récursives Géométrie algorithmiqueHajer Trabelsi
 
Exercices sur-python-turtle-corrige
Exercices sur-python-turtle-corrigeExercices sur-python-turtle-corrige
Exercices sur-python-turtle-corrigeWajihBaghdadi1
 
Traitement des images avec matlab
Traitement des images avec matlabTraitement des images avec matlab
Traitement des images avec matlabomar bllaouhamou
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexitéSana Aroussi
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Analyse Factorielle des Correspondances
Analyse Factorielle des CorrespondancesAnalyse Factorielle des Correspondances
Analyse Factorielle des CorrespondancesJaouad Dabounou
 
Chapitre ii complexité et optimalité
Chapitre ii complexité et optimalitéChapitre ii complexité et optimalité
Chapitre ii complexité et optimalitéSana Aroussi
 
Gestion des threads
Gestion des threadsGestion des threads
Gestion des threadsSana Aroussi
 
cours de complexité algorithmique
cours de complexité algorithmiquecours de complexité algorithmique
cours de complexité algorithmiqueAtef MASMOUDI
 
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliothequeEcole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliothequeMehdi Hamime
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
Chapitre i introduction et motivations
Chapitre i introduction et motivationsChapitre i introduction et motivations
Chapitre i introduction et motivationsSana Aroussi
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: MatriceInforMatica34
 

What's hot (20)

Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de Données
 
La complexité des algorithmes récursives Géométrie algorithmique
La complexité des algorithmes récursivesGéométrie algorithmiqueLa complexité des algorithmes récursivesGéométrie algorithmique
La complexité des algorithmes récursives Géométrie algorithmique
 
Exercices sur-python-turtle-corrige
Exercices sur-python-turtle-corrigeExercices sur-python-turtle-corrige
Exercices sur-python-turtle-corrige
 
Arbre et algorithme de recherche
Arbre et algorithme de rechercheArbre et algorithme de recherche
Arbre et algorithme de recherche
 
Traitement des images avec matlab
Traitement des images avec matlabTraitement des images avec matlab
Traitement des images avec matlab
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Cours fondement du multimedia
Cours fondement du multimediaCours fondement du multimedia
Cours fondement du multimedia
 
Analyse Factorielle des Correspondances
Analyse Factorielle des CorrespondancesAnalyse Factorielle des Correspondances
Analyse Factorielle des Correspondances
 
Chapitre ii complexité et optimalité
Chapitre ii complexité et optimalitéChapitre ii complexité et optimalité
Chapitre ii complexité et optimalité
 
Gestion des threads
Gestion des threadsGestion des threads
Gestion des threads
 
cours de complexité algorithmique
cours de complexité algorithmiquecours de complexité algorithmique
cours de complexité algorithmique
 
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliothequeEcole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
 
Traitement du signal
Traitement du signalTraitement du signal
Traitement du signal
 
Knn
KnnKnn
Knn
 
Page de garde
Page de gardePage de garde
Page de garde
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Chapitre i introduction et motivations
Chapitre i introduction et motivationsChapitre i introduction et motivations
Chapitre i introduction et motivations
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: Matrice
 

More from Sana Aroussi

Chapitre 2 plus court chemin
Chapitre 2 plus court cheminChapitre 2 plus court chemin
Chapitre 2 plus court cheminSana Aroussi
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivitéSana Aroussi
 
Chapitre 4 heuristiques et méta heuristiques
Chapitre 4 heuristiques et méta heuristiquesChapitre 4 heuristiques et méta heuristiques
Chapitre 4 heuristiques et méta heuristiquesSana Aroussi
 
Chapitre 2 problème de plus court chemin
Chapitre 2 problème de plus court cheminChapitre 2 problème de plus court chemin
Chapitre 2 problème de plus court cheminSana Aroussi
 
Chapitre 6 hachage statique
Chapitre 6 hachage statiqueChapitre 6 hachage statique
Chapitre 6 hachage statiqueSana Aroussi
 
Chapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesChapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesSana Aroussi
 
Chapitre iv entrées sorties et bus
Chapitre iv entrées sorties et busChapitre iv entrées sorties et bus
Chapitre iv entrées sorties et busSana Aroussi
 
Chapitre iii interruptions
Chapitre iii interruptionsChapitre iii interruptions
Chapitre iii interruptionsSana Aroussi
 
Chapitre ii mémoires
Chapitre ii mémoiresChapitre ii mémoires
Chapitre ii mémoiresSana Aroussi
 
Chapitre i architectures des processeurs récents
Chapitre i architectures des processeurs récentsChapitre i architectures des processeurs récents
Chapitre i architectures des processeurs récentsSana Aroussi
 
Chapitre vi np complétude
Chapitre vi np complétudeChapitre vi np complétude
Chapitre vi np complétudeSana Aroussi
 
Chapitre v algorithmes gloutons
Chapitre v algorithmes gloutonsChapitre v algorithmes gloutons
Chapitre v algorithmes gloutonsSana Aroussi
 
Chapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerChapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerSana Aroussi
 
Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86Sana Aroussi
 
Chapitre ii architecture interne des processeurs
Chapitre ii architecture interne des processeursChapitre ii architecture interne des processeurs
Chapitre ii architecture interne des processeursSana Aroussi
 
Chapitre i architecture générale de l’unité centrale d’un ordinateur
Chapitre i architecture générale de l’unité centrale d’un ordinateurChapitre i architecture générale de l’unité centrale d’un ordinateur
Chapitre i architecture générale de l’unité centrale d’un ordinateurSana Aroussi
 
Chapitre iii circuits séquentiels
Chapitre iii circuits séquentielsChapitre iii circuits séquentiels
Chapitre iii circuits séquentielsSana Aroussi
 

More from Sana Aroussi (20)

Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Chapitre 2 plus court chemin
Chapitre 2 plus court cheminChapitre 2 plus court chemin
Chapitre 2 plus court chemin
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
Chapitre 4 heuristiques et méta heuristiques
Chapitre 4 heuristiques et méta heuristiquesChapitre 4 heuristiques et méta heuristiques
Chapitre 4 heuristiques et méta heuristiques
 
Chapitre 2 problème de plus court chemin
Chapitre 2 problème de plus court cheminChapitre 2 problème de plus court chemin
Chapitre 2 problème de plus court chemin
 
Chapitre 6 hachage statique
Chapitre 6 hachage statiqueChapitre 6 hachage statique
Chapitre 6 hachage statique
 
Chapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesChapitre 3 structures séquentielles
Chapitre 3 structures séquentielles
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
 
Chapitre iv entrées sorties et bus
Chapitre iv entrées sorties et busChapitre iv entrées sorties et bus
Chapitre iv entrées sorties et bus
 
Chapitre iii interruptions
Chapitre iii interruptionsChapitre iii interruptions
Chapitre iii interruptions
 
Chapitre ii mémoires
Chapitre ii mémoiresChapitre ii mémoires
Chapitre ii mémoires
 
Chapitre i architectures des processeurs récents
Chapitre i architectures des processeurs récentsChapitre i architectures des processeurs récents
Chapitre i architectures des processeurs récents
 
Chapitre vi np complétude
Chapitre vi np complétudeChapitre vi np complétude
Chapitre vi np complétude
 
Chapitre v algorithmes gloutons
Chapitre v algorithmes gloutonsChapitre v algorithmes gloutons
Chapitre v algorithmes gloutons
 
Chapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerChapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régner
 
Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86
 
Chapitre ii architecture interne des processeurs
Chapitre ii architecture interne des processeursChapitre ii architecture interne des processeurs
Chapitre ii architecture interne des processeurs
 
Chapitre i architecture générale de l’unité centrale d’un ordinateur
Chapitre i architecture générale de l’unité centrale d’un ordinateurChapitre i architecture générale de l’unité centrale d’un ordinateur
Chapitre i architecture générale de l’unité centrale d’un ordinateur
 
Chapitre iii circuits séquentiels
Chapitre iii circuits séquentielsChapitre iii circuits séquentiels
Chapitre iii circuits séquentiels
 

Chapitre 1 arbres de recherche

  • 1. ALGORITHMIQUE AVANCÉE Université Blida 1 Faculté des Sciences Département d’Informatique Master IL (Ingénierie Logiciel) & SIR (Systèmes Informatiques et Réseaux) Semestre 1 Mme AROUSSI (s_aroussi@esi.dz) 2018-2019 Disponible sur https://sites.google.com/a/esi.dz/informatiqueblida/
  • 2. PRÉAMBULE Pré-requis: Cours (Algo2-S3). Volume horaire hebdomadaire: 1.5H Cours + 1.5H TD Évaluation: continu + Examen 2 Interrogations (I1, I2). Note TD: I1 noté sur 7,5 points; I2 noté sur 7,5 points; 3 points présence et 2 points assiduité Coefficient 2, Crédit 4 2
  • 3. OBJECTIFS DU COURS Donner un panorama des structures et des méthodes que nous retrouvons dans divers domaines d'applications algorithmiques: réseaux, robotique, compilation, base de données, etc... Savoir analyser et comparer les performances de différentes solutions algorithmiques. 3
  • 4. CONTENU DU COURS I. Arbres de Recherche II. Problème du Plus Courts Chemins III. NP-Complétude IV. Heuristiques & Méta-heuristiques 4
  • 5. CHAPITRE I: ARBRES DE RECHERCHE Université Blida 1 Faculté des Sciences Département d’Informatique Master IL (Ingénierie Logiciel) & SIR (Systèmes Informatiques et Réseaux) Semestre 1 Mme AROUSSI (s_aroussi@esi.dz) 2018-2019 Disponible sur https://sites.google.com/a/esi.dz/informatiqueblida/
  • 6. Partie I: Introduction Partie II: Arbres Binaires de Recherche (ABR) Partie III: Arbres Binaires de Equilibrés (AVL & TAS) Partie IV: Arbres M-aire de Recherche (AMR) Partie V: Arbres M-aire de Recherche Equilibrés (B- Arbres) 6 PLAN DU CHAPITRE I
  • 9. 9 Les arbres sont des structures de données fondamentales en informatique, très utilisés dans tous les domaines, parce qu’ils sont bien adaptés à la représentation naturelle d’informations homogènes organisées, et d’une grande commodité et rapidité de manipulation. I. INTRODUCTION
  • 10. 10 Leur usage est multiple, car il capte l’idée de hiérarchie; à titre d’exemples, nous pouvons citer: Découpage d’un livre en parties, chapitres, sections, paragraphes…, I. INTRODUCTION Livre C1 C2 C3 S1.1 S1.2 S2.1 S2.2 S2.3 S2.1.1 S2.1.2
  • 11. 11 Leur usage est multiple, car il capte l’idée de hiérarchie; à titre d’exemples, nous pouvons citer: Hiérarchies de fichiers, I. INTRODUCTION
  • 12. 12 Leur usage est multiple, car il capte l’idée de hiérarchie; à titre d’exemples, nous pouvons citer: Expressions Arithmétiques I. INTRODUCTION - A * + F B * C - D E L’expression A - (B + C * (D - E)) * F se représente facilement par un arbre où apparaît clairement la priorité des opérations:
  • 13. 13 Un arbre est une structure de données (souvent dynamique) représentant un ensemble de valeurs organisées hiérarchiquement (non linéaire). Chaque valeur est stockée dans un nœud. Les nœuds sont connectés entre eux par des arêtes qui représentent des relations parent/fils. A C DB E G HF I LKJ NœudsArêtes I. DÉFINITIONS & TERMINOLOGIES
  • 14. 14 Racine: est le nœud qui n'a pas de prédécesseur (parent) et possède zéro ou plusieurs fils. La racine constitue la caractéristique d'un arbre. Feuille : est un nœud qui n'a pas de successeur (fils). Une feuille est aussi appelée un nœud externe. Nœud interne : est tout nœud qui admet au moins un successeur (fils). A C DB E G HF I LKJ Racine Nœud interne Feuilles I. DÉFINITIONS & TERMINOLOGIES
  • 15. 15 Père : est un nœud qui admet au moins un successeur (fils). Dans l'exemple, D est le père des nœuds F, G, H et I. Fils d’un nœud : sont ses successeurs. Dans l'exemple, F, G, H, et I sont les fils du nœud D. Frères : sont les successeurs ou les fils issus d'un même nœud (parent direct). Dans l'exemple, F, G, H et I sont des frères. A C DB E G HF I LKJ Frères ou Fils de D I. DÉFINITIONS & TERMINOLOGIES Père
  • 16. 16 Sous arbre : est une portion de l'arbre. Dans l'exemple, le nœud G avec ces deux fils J et K constituent un sous arbre. Une branche est une suite de nœuds connectés de père en fils (de la racine à une feuille). A-B-E A-C A-D-F A-D-G-J ….. A C DB E G HF I LKJ I. DÉFINITIONS & TERMINOLOGIES
  • 17. 17 Descendants d’un nœud : sont tous les nœuds du sous arbre de racine nœud. Dans l'exemple, les descendants de D sont F, G, H, I, J, K et L. Ascendants d’un nœud : sont tous les nœuds se trouvant sur la branche de la racine vers ce nœud. Dans l'exemple, les ascendants de J sont G, D et A. Les ascendants de E sont B et A. A C DB E G HF I LKJ I. DÉFINITIONS & TERMINOLOGIES
  • 18. 18 Taille d’un arbre: est le nombre de nœuds qu’il possède. Taille de l’arbre ci contre = 12 Un arbre vide est de taille égale à 0. Degré d’un nœud : est le nombre de ses fils. Dans l'exemple, le degré de B est 1, le degré de D est 4. Degré d’un arbre : est le degré maximum de ses nœuds. Degré de l’arbre ci contre = 4 A C DB E G HF I LKJ I. DÉFINITIONS & TERMINOLOGIES
  • 19. 19 Le niveau d'un nœud: est la distance qui le sépare de la racine: Le niveau de la racine = 0 Le niveau de chaque nœud est égale au niveau de son père plus 1 Le niveau du nœud contenant ‘G' est égal à 2. Racine …..…………..……………………………………………....... ………………..……………………………………………....... ………………………………....... .……………………………………………....... A C DB E G HF I LKJ Niveaux 0 1 2 3 I. DÉFINITIONS & TERMINOLOGIES
  • 20. 20 La profondeur (hauteur) d'un arbre : est le plus grand niveau, c-à-d la distance entre la racine et la feuille la plus lointaine. Dans l'exemple, la profondeur de l'arbre est égal à 3 Racine …..…………..……………………………………………....... ………………..……………………………………………....... ………………………………....... .……………………………………………....... A C DB E G HF I LKJ Niveaux 0 1 2 3 I. DÉFINITIONS & TERMINOLOGIES
  • 21. 21 Forêt : est un ensemble d'arbres. A C DB E G HF I L KJ I. DÉFINITIONS & TERMINOLOGIES
  • 22. 22 I. TYPOLOGIE Les arbres sont classifiés selon: leur degré m≥2: On trouve les arbres binaires (m = 2), ternaires (m=3), quaternaires (m = 4) ,…….., m-aire (m>2). la priorité d’ordre: où chaque nœud possède au moins une clé, les valeurs de sous arbre gauche (droit resp.) de la clé sont strictement inférieurs (supérieure ou égale resp.) à la valeur de la clé. On trouve ainsi, les arbres binaires de recherche (où chaque nœud possède une clé) et les arbres m-aire de recherche (où chaque nœud possède (m-1) clé), La propriété d’équilibrage: où les feuilles se situent au même niveau. On trouve les arbres binaires de recherche équilibré (e.g: AVL, rouge et noir, 2-3-4, …..) et les arbre m-aire de recherche équilibré (B-arbres, B-arbre*, B-Arbre+, …..)
  • 23. 23 I. PARCOURS Le parcours d’un arbre consiste à passer par tous ses nœuds. Les parcours permettent d’effectuer tout un ensemble de traitement sur les arbres. On distingue deux types de parcours : Des parcours en profondeur (depth-first) explorent l'arbre branche par branche. Parmi lesquels: le Préordre, l‘Inordre et le Postordre. Des parcours en largeur (breadth-first) explorent l'arbre niveau par niveau
  • 24. 24 Dans un parcours en profondeur, on descend le plus profondément possible dans l’arbre puis, une fois qu’une feuille a été atteinte, on remonte pour explorer les autres branches en commençant par la branche « la plus basse » parmi celles non encore parcourues. Le parcours en profondeur peut se faire en : Préordre (Préfixe) : où on affiche la racine avant ses fils, Postordre(Postfixe) : où on affiche les fils avant leur racine. Inordre (Infixe) : où, dans le cas d’un arbre binaire, on affiche le fils gauche avant sa racine et son frère droit, I. PARCOURS
  • 25. PARTIE II: ARBRES BINAIRES DE RECHERCHE (ABR)
  • 26. Définitions Parcours Opérations de Base: Recherche, Insertion et Suppression 26 PLAN DE LA PARTIE II
  • 27. 27 II. DÉFINITION Un Arbre Binaire est un arbre de degré 2, c’est-à-dire que chaque nœuds a au plus deux fils. Ainsi, le premier fils d'un nœud est appelé Fils-Gauche (FG) et le deuxième fils est appelé Fils- Droit (FD).
  • 28. 28 II. DÉFINITION Un Arbre Binaire de Recherche (ABR) est un arbre binaire ordonné tel que pour tout nœud « i »: Toutes les valeurs du sous arbre gauche de « i » sont strictement inférieures à la valeur de « i », et Toutes les valeurs du sous-arbre droit de « i » sont supérieures ou égales à la valeur de « i ».
  • 29. 29 II. PARCOURS PREORDRE Le parcours préordre d’un arbre binaire R consiste à visiter le nœud racine (R) ensuite parcourir récursivement en préordre les sous arbres T1 (sous arbre gauche) puis T2 (sous arbre droit) ce qui donne : [ R , T1 , T2 ou RGD] R T1 T2 Sous arbre gauche G Sous arbre droit D
  • 30. 30 II. PARCOURS PREORDRE Le parcours préordre d’un arbre binaire R consiste à visiter le nœud racine (R) ensuite parcourir récursivement en préordre les sous arbres T1 (sous arbre gauche) puis T2 (sous arbre droit) ce qui donne : [ R , T1 , T2 ou RGD] Résultat de parcours: 8, 3, 1, 6, 4, 7, 10, 14, 13
  • 31. 31 II. PARCOURS INORDRE Le parcours inordre d’un arbre binaire R consiste d'abord à parcourir récursivement en inordre le sous arbre gauche T1, puis visiter le nœud racine (R) ensuite parcourir récursivement en inordre le sous arbre droit T2 ce qui donne [ T1 , R , T2 ou GRD ] R T1 T2 Sous arbre gauche G Sous arbre droit D
  • 32. 32 II. PARCOURS INORDRE Le parcours inordre d’un arbre binaire R consiste d'abord à parcourir récursivement en inordre le sous arbre gauche T1, puis visiter le nœud racine (R) ensuite parcourir récursivement en inordre le sous arbre droit T2 ce qui donne [ T1 , R , T2 ou GRD ] Résultat de parcours: 1, 3, 4, 6, 7, 8, 10, 13, 14 Propriété: Le parcours infixe d’un ABR visite les nœuds par ordre croissant des clés.
  • 33. 33 II. PARCOURS POSTORDRE Le parcours postordre d’un arbre binaire R consiste d'abord à parcourir récursivement en postordre les sous arbres T1 puis T2 ensuite visiter le nœud racine (R) ce qui donne [ T1 , T2 , R ou GDR] R T1 T2 Sous arbre gauche G Sous arbre droit D
  • 34. 34 II. PARCOURS POSTORDRE Le parcours postordre d’un arbre binaire R consiste d'abord à parcourir récursivement en postordre les sous arbres T1 puis T2 ensuite visiter le nœud racine (R) ce qui donne [ T1 , T2 , R ou GDR] Résultat de parcours: 1, 4, 7, 6, 3, 13, 14, 10, 8
  • 35. 35 II. PARCOURS EN LARGEUR Dans le parcours par niveau, tous les nœuds d’un même niveau sont traités avant de descendre au niveau suivant Résultat de parcours: 8, 3, 10, 1, 6, 14, 4, 7, 13
  • 36. II. OPÉRATION DE RECHERCHE La recherche d'un nœud ayant une clé particulière « x » se fait de manière récursive: Si l’arbre est vide: échec Recherche négative: la clé n’appartient pas à l’arbre, l’algorithme se termine. Sinon: comparer la clé « x » avec la clé de la racine. S’il y a égalité alors la clé « x » est trouvée. Recherche positive: l’algorithme se termine. Si la clé « x » est strictement inférieure, alors la recherche est poursuivie dans le sous arbre gauche. Si la clé « x » est strictement supérieure, alors la recherche est poursuivie dans le sous arbre droit. 36
  • 37. 37 II. OPÉRATION DE RECHERCHE La recherche est dichotomique, à chaque étape, un sous arbre est éliminé: Rechercher (55) Rechercher (FD(20)) Rechercher (FG(59)) Rechercher (FD(27)) Rechercher (FD (33)) Élément trouvé 20 15 59 5 3 10 27 71 33 8 55 52 55 ?
  • 38. 38 II. OPÉRATION D’INSERTION L'insertion d'une clé « x » se fait toujours au niveau d'une feuille. Cette insertion dans un ABR doit maintenir la propriété d’ordre des arbres de recherche, ainsi: 1. Rechercher la position d’insertion 2. Raccorder le nouveau nœud à son parent
  • 39. 39 II. OPÉRATION D’INSERTION RechercherPosition (25) Rechercher (FD(20)) Rechercher (FG(59)) Position trouvé pour l’insertion, le père est le nœud 27 Insérer 25 au niveau de la feuille dont le père est 27 20 15 59 5 3 10 27 71 33 8 55 52 + 25 25
  • 40. 40 II. OPÉRATION DE SUPPRESSION La suppression d’une clé « x » passe par deux étapes: 1. Rechercher d’abord le nœud qui contient la clé « x »; soit « i » ce nœud 2. Supprimer le nœud « i » tout en maintenant la propriété de l’ordre de l’ABR. Ainsi, on peut se trouver dans une des situations suivantes :
  • 41. 41 II. OPÉRATION DE SUPPRESSION Cas 1: Suppression d'une feuille Il suffit de l'enlever de l'arbre vu qu'elle n'a pas de fils. Exemple: supprimer le nœud i qui contient la valeur 8 1. Rechercher(8) 2. Libérer le nœud « i » « i » 20 15 59 5 3 10 27 71 33 8 55 52 12
  • 42. 42 II. OPÉRATION DE SUPPRESSION Cas 2: Suppression d'un nœud avec un fils Il suffit de l'enlever de l'arbre en liant son père avec son fils. Exemple: supprimer le nœud « i » qui contient la valeur 10 1. Rechercher(10) 2. Chainer le père de i avec le FD(i) 3. Libérer le nœud « i » « i » 20 15 59 5 3 10 27 71 33 12 55 52
  • 43. 43 II. OPÉRATION DE SUPPRESSION Cas 2: Suppression d'un nœud avec un fils Il suffit de l'enlever de l'arbre en liant son père avec son fils. Exemple: supprimer le nœud i qui contient la valeur 27 1. Rechercher(27) 2. Chainer le père de i avec le FG(i) 3. Libérer le nœud « i » « i » 20 15 59 5 3 10 27 71 33 55 52 8
  • 44. 44 II. OPÉRATION DE SUPPRESSION Cas 3: Suppression d'un nœud avec deux fils Etape 1: On échange le nœud à supprimer avec son successeur le plus proche (le nœud le plus à gauche du sous-arbre droit) ou son plus proche prédécesseur (le nœud le plus à droite du sous-arbre gauche). Cela permet de garder la propriété d’ordre d‘ABR. 34 66 50 56 55 71 70 69 81 22 8 17 9 29 25 23 32 Le plus proche prédécesseur Le plus proche successeur
  • 45. 45 II. OPÉRATION DE SUPPRESSION Cas 3: Suppression d'un nœud avec deux fils Etape 1 Cas A: On échange le nœud à supprimer avec son successeur le plus proche (le nœud le plus à gauche ou le plus petit du sous arbre droit) Racine: 71 La plus petite valeur : 69 34 66 50 56 55 71 70 69 81 22 8 17 9 29 25 23 32
  • 46. 46 II. OPÉRATION DE SUPPRESSION Cas 3: Suppression d'un nœud avec deux fils Etape 1 Cas A: On échange le nœud à supprimer avec son plus proche prédécesseur (le nœud le plus à droite ou le plus grand du sous-arbre gauche). Racine: 50 La plus grande valeur : 56 34 66 50 56 55 71 70 69 81 22 8 17 9 29 25 23 32
  • 47. 47 II. OPÉRATION DE SUPPRESSION Cas 3: Suppression d'un nœud avec deux fils Etape 2: on applique à nouveau la procédure de suppression qui est maintenant une feuille ou un nœud avec un seul fils. Ainsi, si on choisit d’échanger le nœud « 66 » avec son plus proche successeur « 69 », on obtient 34 66 50 56 55 71 70 69 81 22 8 17 9 29 25 23 32 69
  • 48. 48 Cas 3: Suppression d'un nœud avec deux fils Puis on applique à nouveau la procédure de suppression qui est maintenant une feuille ou un nœud avec un seul fils. Ainsi, si on choisit d’ échanger le nœud « 66 » avec son plus proche prédécesseur « 56 », on obtient 34 66 50 71 70 69 81 22 8 17 9 29 25 23 32 56 II. OPÉRATION DE SUPPRESSION 56 55
  • 49. 49 II. OPÉRATION DE SUPPRESSION En conclusion, pour supprimer le nœud « i » d’un ARB, on rencontre une des situations suivantes : Cas « i » Action FG FD Feuille Nil Nil Libérer le nœud « i » Avec un fils Nil ≠Nil Chaîner le père au fils de « i » (FG(i) ou FD(i)) ensuite libérer le nœud « i »≠Nil Nil Avec deux fils ≠Nil ≠Nil 1. Rechercher le plus proche prédécesseur ou successeur de « i », soit « P ». 2. Remplacer Info(i) par Info(P) 3. Supprimer le nœud « P »
  • 51. AVL Introduction Définition Techniques d’équilibrage Opérations de Base: Recherche, Insertion et Suppression TAS Définition Hauteur Opérations de Base: Insertion, Recherche et Suppression Implémentation Exemples d’Application 51 PLAN DE LA PARTIE III
  • 52. 52 III. AVL: INTRODUCTION O (n)O (h) tel que h = log2(n) 87 ? ABR Equilibré Filiforme Intérêt des ABR équilibrés est de diminuer la complexité temporelle des opérations de la recherche, de l’insertion et de la suppression dans un ABR quelconque.
  • 53. 53 III. AVL: DÉFINITION Les arbres AVL ont été introduits par les finlandais Adelson- Velskii et Landis dans les années 60. Un arbre AVL est un ABR équilibré dont: la différence de hauteur (ou profondeur) entre le sous- arbre gauche et le sous-arbre droit d'un nœud « R » diffère d'au plus 1. |Profondeur(FG(R) ) – Profondeur(FD(R)) | ≤ 1 les arbres gauches et droits d'un nœud sont des arbres AVL. Un champs supplémentaire est ajouté à tous les nœuds: c’est le facteur de déséquilibre (appelé aussi facteur de balance) qui est calculé après chaque insertion/suppression.
  • 54. 54 III. AVL: DÉFINITION 100 50 30 80 200 10 150 40 Exemple: soit l’ABR suivant. Est-il un arbre AVL? +1 +1 +1 0 0 0 0 Notons: que l’arbre vide a la hauteur −1, Et qu’une feuille est un arbre de hauteur 0. L’arbre vide et l’arbre réduit à une feuille, sont des arbres AVL Cet arbre est un arbre AVL À vérifier pour chaque nœud R, on a: | Profondeur(FG(R) ) – Profondeur(FD(R)) | <= 1 0
  • 55. 55 Exemple: Cet ABR est un arbre AVL avant insertion Insérer la valeur 5 100 50 30 80 200 10 150 40 Cet arbre n’est pas un arbre AVL après insertion de 5 arbre déséquilibré 50 +1 +1 0 +1 0 0 +2Après insertion, recalculer le facteur de déséquilibre de chaque nœud. III. AVL: DÉFINITION
  • 56. 56 III. AVL: TECHNIQUES D’ÉQUILIBRAGE L’opération d’équilibrage, appelée rotation, s’applique à tous les ABR dans le but de pouvoir les rééquilibrer: On opère donc une rotation gauche lorsque l’arbre est «déséquilibré à droite», i.e. son sous-arbre droit est plus haut que son sous-arbre gauche. On opère une rotation droite dans le cas contraire à savoir son sous-arbre gauche est plus haut que son sous-arbre droit. Les rotations préservent l’ordre des données d’un ABR (parcours inordre).
  • 57. 57 III. AVL: TECHNIQUES D’ÉQUILIBRAGE Rotation simple : Rotation droite Soit A=(B, R, Z) un ABR tel que B=(X, P, Y). La rotation droite est l’opération: ((X, P, Y), R, Z) → (X, P, (Y, R, Z)) R P X (hauteur h+1/h) Déséquilibre gauche Y (hauteur h/h) Z (hauteur h/h-1) P R X (hauteur h+1/h) Y (hauteur h/h) Z (hauteur h/h-1) +1 ou 0 +2 0 ou -1 0 ou 1 Rotation droite
  • 58. 58 III. AVL: TECHNIQUES D’ÉQUILIBRAGE Rotation simple : Rotation gauche Soit A=(X, R, B) un ABR tel que B=(Y, P, Z). La rotation gauche est l’opération: ( X, R, (Y, P, Z)) → ((X, R, Y), P, Z) P R X (hauteur h/h-1) Y (hauteur h) Z (hauteur h+1/h) R P Déséquilibre droit X (hauteur h/h-1) Y (hauteur h) Z (hauteur h+1/h) -1 ou 0 -2 0 ou -1 0 ou +1Rotation gauche
  • 59. 59 III. AVL: TECHNIQUES D’ÉQUILIBRAGE Rotation double : double rotation gauche-droite C’est une rotation gauche sur le sous arbre-gauche du nœud R suivie d’une rotation droite sur le nœud R P Q R D (h) CB A (h) Q P R D (h) C BA (h) Rotation gauche Rotation droite Q P R D (h) CBA (h) ((A, P, (B, Q, C)), R, D) → (((A, P, B), Q, C), R, D) → ((A, P, B), Q, (C, R, D)) -1 +2 0+2
  • 60. 60 III. AVL: TECHNIQUES D’ÉQUILIBRAGE Rotation double : double rotation droite-gauche C’est une rotation droite sur le sous arbre-droit du nœud R suivie d’une rotation gauche sur le nœud R Rotation droite Rotation gauche (A, R, ((B, Q, C), P, D)) → (A, R, (B, Q, (C, P, D))) → ((A, R, B), Q, (C, P, D)) P Q R A (h) +1 -2 B C D (h) Q P R -2 A (h) B C D (h) Q R P 0 A (h) B C D (h)
  • 61. 61 III. AVL: OPERATIONS DE BASE La recherche est identique à celui des ABR car les arbres AVL sont avant tout des ABR équilibrés. L’insertion d’un élément dans un arbre AVL peut provoquer un déséquilibre. Donc, pour rétablir l’équilibre (rééquilibrer) de l’arbre après une insertion, une seule rotation (simple ou double) suffit. La suppression d’un élément dans un arbre AVL peut provoquer un déséquilibre. Donc pour rétablir l’équilibre (rééquilibrer) de l’arbre après une suppression, il faut faire entre 1 et h rotations (h est la hauteur de l’arbre).
  • 62. 62 III. AVL: INSERTION L’ajout d’un nœud se fait toujours au niveau d’une feuille, puis on rééquilibre l’arbre AVL si l’insertion a déséquilibré l’arbre. Le déséquilibre est rencontré lorsque le facteur d’équilibrage d’un nœud de l’arbre égale à ± 2.
  • 63. 63 III. AVL: INSERTION Exemple: soit la série de nombres à insérer dans un arbre AVL (2 10 12 4 16 8 6 14 9 1 7) 2 10 12 4 16 8 6 14 2 0 2 10 12 4 16 8 6 14 2 10 0 -1 2 10 12 4 16 8 6 14 2 10 12 0 -1 -2 Rotation simple 10 122 00 0
  • 64. 64 III. AVL: INSERTION Exemple: soit la série de nombres à insérer dans un arbre AVL (2 10 12 4 16 8 6 14 9 1 7) 2 10 12 4 16 8 6 14 10 122 4 0 -1 0 1 2 10 12 4 16 8 6 14 10 122 4 16 00 -1-1 0
  • 65. 65 III. AVL: INSERTION Exemple: soit la série de nombres à insérer dans un arbre AVL (2 10 12 4 16 8 6 14 9 1 7 ) 2 10 12 4 16 8 6 14 9 1 7 10 122 4 16 8 0 -1 -2 0 -1 1 Rotation simple 10 124 8 1620 0 0 -10 0
  • 66. 66 III. AVL: INSERTION Exemple: soit la série de nombres à insérer dans un arbre AVL (2 10 12 4 16 8 6 14 9 1 7) 2 10 12 4 16 8 6 14 9 1 7 10 124 8 162 6 0 10 -1 0 -1 1
  • 67. 67 III. AVL: INSERTION Exemple: soit la série de nombres à insérer dans un arbre AVL (2 10 12 4 16 8 6 14 9 1 7) 2 10 12 4 16 8 6 14 9 1 7 10 124 8 162 6 14 0 0 1 -2 10 -1 0 Rotation double 10 144 8 162 6 12 0 1 0 0 0-1 1 0
  • 68. 68 III. AVL: INSERTION Exemple: soit la série de nombres à insérer dans un arbre AVL (2 10 12 4 16 8 6 14 9 1 7) 2 10 12 4 16 8 6 14 9 1 7 10 144 8 162 6 12 1 9 0 10 144 8 162 6 12 -1 1 0 0 0 1 -1 2 10 9 0 7 Nœud inséré Insertion du 7
  • 69. 69 III. AVL: INSERTION Exemple: soit la série de nombres à insérer dans un arbre AVL (2 10 12 4 16 8 6 14 9 1 7) 0 10 144 8 162 6 12 -1 1 0 0 0 1 -1 2 10 9 0 7 Nœud inséré 10 14 4 8 16 2 6 12 -1 0 0 1 -1 10 9 07 0 0 0 0 Rotation double 2 10 12 4 16 8 6 14 9 1 7
  • 70. 70 III. AVL: INSERTION R h h R hh+1 R h h+1 R hh+2 R hh+1 R h+1h+1 R h h+2 R h+1 h+1 R h h+1 0 +1 -1 +1 +2 0 -1 0 -2 AvantAprès insertion à gauche Après insertion à droite Cas A Cas B
  • 71. 71 III. AVL: INSERTION Remarques: Après une insertion, seules les nœuds qui sont sur le chemin du point d’insertion à la racine sont susceptibles d’être déséquilibrés. Cas A: L’arbre devient non équilibré quand le nouveau nœud inséré est un descendant gauche d’un nœud qui avait un facteur d’équilibrage égal à 1 Cas B: L’arbre devient non équilibré quand le nouveau nœud inséré est un descendant droit d’un nœud qui avait un facteur d’équilibrage égal à -1
  • 72. 72 III. AVL: INSERTION R hh+2 +2 R h +1 P hh 0 Cas A Si insertion dans le sous-arbre gauche du fils gauche alors Rotation Simple à droite Si insertion dans le sous-arbre droit du fils gauche alors Rotation Double Gauche-Droite R h +2 P h +1 h+1 R h +2 P h -1 h+1 Avant
  • 73. 73 III. AVL: INSERTIONR h h+2 -2 Cas B R h -1 P hh 0 R h P h -2 +1 h+1 R h P hh -2 -1 Si insertion dans le sous-arbre droit du fils droit alors Rotation Simple à gauche Si insertion dans le sous-arbre gauche du fils droit alors Rotation Double Droite-Gauche Avant
  • 74. 74 III. AVL: SUPPRESSION Le principe de la suppression d’un élément dans un arbre AVL est le même que dans un ABR, c.à.d. recherche de l’élément à supprimer, suppression et remplacement, le cas échéant, par l’élément qui lui immédiatement inférieur ou supérieur. Après la première phase de la suppression, la hauteur de l’arbre est diminué de 1. Le problème est que cet arbre n’est plus forcément un arbre AVL. Il faut donc le rééquilibrer.
  • 75. 75 III. AVL: SUPPRESSION S’il y a déséquilibre, la rotation appliquée peut diminuer à son tour la hauteur de l’arbre et générer un nouveau déséquilibre. En fait les rotations peuvent s’enchainer en cascade depuis l’élément supprimé jusqu’à la racine. Ainsi, on peut faire jusqu’à h (hauteur de l’arbre initial) rotations (simple ou double).
  • 76. 76 III. AVL: SUPPRESSION Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 10: 10 14 4 8 16 2 6 12 -1 0 0 1 -1 10 9 0 7 0 0 0 0 12 14 4 8 16 2 6 -1 -1 1 -1 10 9 0 7 0 0 0 0 Remplacer par le successeur
  • 77. 77 III. AVL: SUPPRESSION Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 8: 12 14 4 8 16 2 6 -1 -1 1 -1 10 9 0 7 0 0 0 0 12 14 4 9 16 2 6 -1 -1 1 -2 10 0 7 0 0 0 Remplacer par le successeur
  • 78. 78 III. AVL: SUPPRESSION Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 8: 12 14 4 9 16 2 6 -1 -1 1 -2 10 0 7 0 0 0 14 12 4 9 162 6 -1 0 1 0 10 0 7 0 0 1 RSG
  • 79. 79 III. AVL: SUPPRESSION Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 12 puis 16: 14 12 4 9 162 6 -1 0 1 0 10 0 7 0 0 1 144 9 2 6 -1 1 0 10 0 7 0 +2
  • 80. 80 III. AVL: SUPPRESSION Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 12 puis 16: 144 9 2 6 -1 1 0 10 0 7 0 +2 9 4 14 2 6 -1 1 1 1 0 0 7 0 -1 RSD
  • 81. 81 III. AVL: SUPPRESSION Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 30: 100 200 30 50 300 10 40 -1 -1 +1 20 80 60 0 +1 +1 -1 9070+1 0 00 0 40 50 300 10 -1 -1 +1 20 80 60 +2 +1 -1 9070 +1 100 200 0 0 0 0 Remplacer par le successeur
  • 82. 82 III. AVL: SUPPRESSION Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 30: 40 50 300 10 -1 -1 +1 20 80 60 +2 +1 -1 9070 +1 100 200 0 0 0 0 RDG-D 20 50 300 10 -1 +1 40 80 60 0 0 +1 -2 9070+1 100 200 0 0 0 0
  • 83. 83 III. AVL: SUPPRESSION Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 30: RDD-G 20 50 300 10 -1 +1 40 80 60 0 0 +1 -2 9070+1 100 200 0 0 0 0 20 80 30010 -1 -1 40 50 60 0 0 9070 +1 100 200 0 0 0 0 0 0
  • 84. AVL TAS Définition Hauteur Opérations de Base: Insertion, Recherche et Suppression Implémentation Exemples d’Application 84 PLAN DE LA PARTIE III
  • 85. 85 III.TAS: DÉFINITION Un TAS (HEAP) inventé par Williams Floyd en 1964, est un arbre binaire qui vérifie les deux propriétés suivantes : Propriété structurelle: arbre binaire parfait, i.e. Tous les niveaux sont totalement remplis sauf le dernier qui est rempli de la gauche vers la droite. Propriété d’ordre : TASmin: Clé (père) ≤ Clé(fils) TASmax: Clé (père) ≥ Clé (fils)
  • 86. 86 III.TAS: DÉFINITION Exemple d’un TASmin Clé (père) ≤ Clè (fils) Le minimum se trouve toujours à la racine Minimum Maximum 4 5 6 207 811 915 2516 1214
  • 87. 87 III.TAS: DÉFINITION Exemple d’un TASmax Clé (père) ≥ Clè (fils) Le maximum se trouve toujours à la racine Maximum Minimum 40 35 26 2017 811 1915 131 1214
  • 88. 88 III.TAS: HAUTEUR Théorème: Un TAS de n nœud a une hauteur O(log2 n) Démonstration Soit h, la hauteur d’un tas de n nœud Au niveau i≠h, ni=2i Donc n = 20 + 21 + 22 + ....+ 2h-1 + c tel que , 0≤c≤2h n = 2h + c ≥ 2h⇒ h ≤ log2 n ⇒ O(h) = O(log2 n). Conséquence: Les opérations proportionnelles à h sont O (log2 n)
  • 89. 89 III.TAS: INSERTION Pour insérer une valeur « v » dans un TASmin [ou TASmax] 1. Insérer la valeur « v » à la fin du dernier niveau de l’arbre. 2. Tant que la valeur du père de « v » est plus grande [petite] que « v », échanger la valeur du père de v avec « v ». L’étape 1 permet de vérifier la propriété structurelle et l’étape 2 permet de vérifier la propriété de l’ordre.
  • 90. 90 III.TAS: INSERTION Exemple: Soit le TASmin suivant. Donner le résultat après l’insertion 5, 17, 3, 18 4 9 6 207 811 1015 2516 1214
  • 91. 91 III.TAS: INSERTION Exemple: Soit le TASmin suivant. Insertion 5 4 9 6 207 811 1015 2516 1214 5
  • 92. 92 III.TAS: INSERTION Exemple: Soit le TASmin suivant. Insertion 17 4 9 5 67 811 1015 2516 1214 20 17
  • 93. 93 III.TAS: INSERTION Exemple: Soit le TASmin suivant. Insertion 3 4 9 5 67 811 1015 2516 1214 20 17 3
  • 94. 94 III.TAS: INSERTION Exemple: Soit le TASmin suivant. Insertion 18 3 4 5 67 811 109 2515 1214 20 17 16 18
  • 95. 95 III.TAS: INSERTION Exercice: Construire un TASmin et un TASmax à partir des valeurs suivantes: 20 15 10 35 19 13 5 3 12 7 16 40 25 38
  • 96. 96 III.TAS: INSERTION Solution: Construire un TASmin à partir des valeurs suivantes: 20 15 10 35 19 13 5 3 12 7 16 40 25 38 20 15 15 20 10 10 20 15 35 19 10 19 15 35 20 13 10 19 13 35 20 15 5 5 19 10 35 20 15 13 3 3 5 10 19 20 15 13 35 12
  • 97. 97 INSERTION Solution: Construire un TASmin à partir des valeurs suivantes: 20 15 10 35 19 13 5 3 12 7 16 40 25 38 3 5 10 12 20 15 13 35 19 7 3 5 10 12 7 15 13 35 19 20 16 40 25 38
  • 98. 98 III.TAS: INSERTION Solution: Construire un TASmax à partir des valeurs suivantes: 20 15 10 35 19 13 5 3 12 7 16 40 25 38 20 15 10 35 20 10 15 19 13 35
  • 99. 99 III.TAS: INSERTION Solution: Construire un TASmax à partir des valeurs suivantes: 20 15 10 35 19 13 5 3 12 7 16 40 25 38 35 20 13 15 19 10 5 3 12 7 16 40 40 20 35 15 19 13 5 3 12 7 16 10 25
  • 100. 100 III.TAS: INSERTION Solution: Construire un TASmax à partir des valeurs suivantes: 20 15 10 35 19 13 5 3 12 7 16 40 25 38 40 20 35 15 19 25 5 3 12 7 16 10 13 38
  • 101. 101 III.TAS: INSERTION Solution: Construire un TASmax à partir des valeurs suivantes: 20 15 10 35 19 13 5 3 12 7 16 40 25 38 40 20 38 15 19 25 35 3 12 7 16 10 13 5
  • 102. 102 III.TAS: INSERTION L’insertion d’une valeur « v » peut nécessiter O(h) = O(log2(n)) opérations où h est la hauteur du TAS et n est son nombre des nœuds. En effet, au pire des cas, l’échange peut se remonter à la racine dans le cas où « v » est inférieure à la valeur de la racine, ainsi, il devient le nouveau minimum
  • 103. 103 III.TAS: RECHERCHE Pour rechercher une valeur « v » dans un TASmin [ou TASmax], on doit parcourir l’arbre en largeur (niveau par niveau) On passera au niveau « i » si seulement si la valeur « v » est supérieure [inférieure] à la valeur de l’un des nœuds de niveau « i-1 ».
  • 104. 104 III.TAS: RECHERCHE Exemple: Soit le TASmin suivant. 7 ? 4 9 6 207 811 1015 2516 1214 La valeur existe, fin de recherche
  • 105. 105 III.TAS: RECHERCHE Exemple: Soit le TASmin suivant. 8 ? 4 9 6 207 811 1015 2516 1214 La valeur existe, fin de recherche
  • 106. 106 III.TAS: RECHERCHE Exemple: Soit le TASmin suivant. 3 ? 4 9 6 207 811 1015 2516 1214 La valeur n’existe pas , fin de recherche
  • 107. 107 III.TAS: RECHERCHE Exemple: Soit le TASmin suivant. 30 ? 4 9 6 207 811 1015 2516 1214 Fin de recherche, la valeur n’existe pas
  • 108. 108 RECHERCHE La recherche d'une valeur « x » dans un TAS peut nécessiter O(n) opérations où n est le nombre des nœuds. Pire des cas: Si « x » est supérieure à la valeur maximale du TASmin [ou inférieure à la valeur minimale du TASmax], alors on doit descendre jusqu’au dernier niveau en parcourant tous les nœuds pour vérifier que la valeur recherchée n’existe pas. La recherche étant un pré-requis à la suppression d'une valeur « x », une suppression peut nécessiter O(n) opérations aussi.
  • 109. 109 III.TAS: SUPPRESSION Pour supprimer une valeur « v » dans un TASmin [ou TASmax] 1. Rechercher la valeur « v », si elle existe on passe à l’étape suivante, sinon stop. 2. Soit « P » le nœud contenant la valeur « v », remplacer la valeur de « P » par la valeur du dernier nœud du dernier niveau (soit « Q » ce nœud et « x » sa valeur). Cela permet de vérifier la propriété structurelle.
  • 110. 110 III.TAS: SUPPRESSION Pour supprimer une valeur « v » dans un TASmin [ou TASmax] 3. Vérifier la propriété d’ordre: a. Tant que la valeur « x » est inférieure [supérieure] à celle du père, échanger la valeur « x » avec celle du père. b. Tant que la valeur « x » est supérieure [inférieure] à celle de l’un de ses fils, échanger la valeur « x » avec celle du plus petit [grand] de ses fils.
  • 111. 111 III.TAS: SUPPRESSION Exemple: Soit le TASmin suivant. Donner le résultat après la suppression de 9, 16, 6 et 4. 4 9 6 207 811 1015 2516 1214
  • 112. 112 III.TAS: SUPPRESSION Exemple: Soit le TASmin suivant. Suppression de 9. 4 9 6 207 811 1015 2516 1214
  • 113. 113 III.TAS: SUPPRESSION Exemple: Soit le TASmin suivant. Suppression de 9, 16. 4 8 6 207 11 1015 2516 1214
  • 114. 114 SUPPRESSION Exemple: Soit le TASmin suivant. Suppression de 16. 4 8 6 2071015 2511 1214
  • 115. 115 III.TAS: SUPPRESSION Exemple: Soit le TASmin suivant. Suppression de 6. 4 8 6 2071011 2515 1214
  • 116. 116 III.TAS: SUPPRESSION Exemple: Soit le TASmin suivant. Suppression de 6. 4 8 12 2071011 2515 14
  • 117. 117 III.TAS: SUPPRESSION Exemple: Soit le TASmin suivant. Suppression de 4. 4 8 7 20121011 2515 14
  • 118. 118 III.TAS: SUPPRESSION Exemple: Soit le TASmin suivant. Suppression de 4. 14 8 7 20121011 2515
  • 119. 119 III.TAS: SUPPRESSION Exemple: Soit le TASmin suivant. Suppression de 4. 7 8 12 20141011 2515
  • 120. 120 III.TAS: IMPLÉMENTATION Un TAS se représente naturellement par un tableau: Les sommets sont numérotés par un parcours en largeur, de gauche à droite. Le sommet « i » est rangé dans la case d’indice i du tableau. 1 2 3 4 5 6 7 8 9 10 11 12 13 4 5 6 15 9 7 20 16 25 14 12 11 8 4 5 6 207 811 915 2516 1214 1 2 3 4 5 6 7 8 9 10 11 12 13
  • 121. 121 III.TAS: IMPLÉMENTATION On parle ici de la représentation statique séquentielle d’un arbre binaire La case 0 est vide Indice(racine)=1 Indice(FG)=2*Indice(Père) Indice(FD)=2*Indice(Père)+1 Indice(Père)= [Indice (Fils)/2] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 ?? 4 5 6 15 9 7 20 16 25 14 12 11 8
  • 122. 122 III.TAS: EXEMPLES D’APPLICATION Malgré que la recherche et la suppression dans un TAS sont plus coûteuses que dans un ABR ou un AVL, les TAS sont très utiles entre autre pour le tri et pour implémenter les files de priorité.
  • 123. 123 Étant donné un tableau d’entiers T (n: sa taille), dire comment peut on trier (ordre croissant) ce tableau en utilisant un TASmin ou TAS max? Exemple: 20 15 10 35 19 13 5 3 12 7 16 40 25 38 EXEMPLE D’APPLICATION TRI PAR TAS
  • 124. 124 1. Transformer le tableau en un TASMIN 20 15 10 35 19 13 5 3 12 7 16 40 25 38 3 5 10 12 7 15 13 35 19 20 16 40 25 38 III.TAS: EXEMPLE D’APPLICATION TRI PAR TAS
  • 125. 125 2. Extraire n fois le minimum du TASMIN : 3 5 3 5 10 12 7 15 13 35 19 20 16 40 25 38 5 7 10 12 16 15 13 35 19 20 38 40 25 III.TAS: EXEMPLE D’APPLICATION TRI PAR TAS
  • 126. 126 2. Extraire n fois le minimum du TASMIN : 3 5 7 10 7 12 10 19 16 15 13 35 25 20 38 40 10 12 13 19 16 15 40 35 25 20 38 III.TAS: EXEMPLE D’APPLICATION TRI PAR TAS
  • 127. 127 2. Extraire n fois le minimum du TASMIN : 3 5 7 10 12 13 15 12 16 13 19 20 15 40 35 25 38 13 16 15 19 20 38 40 35 25 15 16 25 19 20 38 40 35 III.TAS: EXEMPLE D’APPLICATION TRI PAR TAS
  • 128. 128 2. Extraire n fois le minimum du TASMIN : 3 5 7 10 12 13 15 16 19 20 25 35 38 40 16 19 25 35 20 38 40 19 20 25 35 40 38 20 35 25 38 40 25 35 40 38 35 38 40 38 40 40 III.TAS: EXEMPLE D’APPLICATION TRI PAR TAS
  • 129. 129 III.TAS: EXEMPLE D’APPLICATION IMPLÉMENTATION D’UNE FILE AVEC PRIORITÉ Une file d’attente avec priorité est une collection d’éléments dans laquelle l’ajout ne se fait pas toujours à la queue (fin). Tout nouvel élément est ajouté dans la file, selon sa priorité. Le retrait se fait toujours du début. Dans une file avec priorité, un élément prioritaire prendra la tête de la file même s’il arrive le dernier. L’implémentation de ces files d’attente peut être par tableau (décalage ou circulaire) ou LLC ordonnée, mais l’implémentation la plus efficace et la plus répandue utilise les TAS.
  • 130. PARTIE IV: ARBRES M-AIRE DE RECHERCHE (AMR)
  • 131. Définitions Opérations de Base: Recherche, Insertion et Suppression 131 PLAN DE LA PARTIE IV
  • 132. 132 IV. DÉFINITION Un Arbre M-aire de Recherche (AMR) peut être défini comme une généralisation de l'arbre binaire de recherche. Au lieu d'avoir une clé et deux pointeurs, on aura « m-1 » clés et « m » pointeurs. Un AMR d'ordre « m » est un arbre dans lequel chaque nœud peut avoir « m » fils.
  • 133. 133 IV. DÉFINITION Si s1, s2, ... sm sont les « m » sous arbres issus d'un nœud donné avec les clés k1, k2, ....,km-1 dans l'ordre ascendant, alors : Toutes les clés dans s1 sont inférieurs à k1 Toutes les clés dans sj (j=2,3, ...m-1) sont supérieurs à kj-1 et inférieur à kj Toutes les clés dans sm sont supérieurs km-1. s1 k1 s2 ….. kj-1 sj kj …... km-1 sm ki des données tq: k1 < k2 ....< km-1
  • 134. 134 IV. DÉFINITION Propriété d’ordre: s1 k1 s2 ….. kj-1 sj kj …... km-1 sm s11 k11 s12 k12 ....... s1(d-1) k1(m-1) s1m sj1 kj1 sj2 kj2 ....... sj(m-1) kj(d-1) sjm sm1 km1 sm2 km2 ....... sm(m-1) km(m-1) smm ki des données tq: k1 < k2 ....< km-1 (Éléments du s1) < k1 (Éléments du sd) > km-1 kj-1 < (Éléments du sj) < kj (j=2,3, ...m-1)
  • 135. 135 Exemple: Soit l’AMR d’ordre 4 suivant IV. DÉFINITION
  • 136. 136 IV. RECHERCHE La recherche dans un AMR ressemble beaucoup à celle effectuée dans un ABR, excepté qu’au lieu de prendre à chaque nœud une décision de branchement binaire (Fils gauche ou droit), on prend une décision à options multiples, selon le nombre de fils du nœud.
  • 137. 137 IV. RECHERCHE Exemple: Rechercher l’élément 68. Nil i.e: L’élément n’existe pas
  • 138. 138 IV. INSERTION L’insertion se fait toujours au niveau des feuilles. L’insertion se déroule comme suit: 1. Rechercher la position de la clé à insérer « x », soit P le nœud trouvé. 2. Si le nœud (P) n’est pas plein (le nombre des clés insérés est strictement inférieur à m-1) alors insérer la clé à sa bonne position dans le nœud. 3. Sinon, le nœud est plein (le nombre des clés insérés est égal à m-1, i.e. il y a un débordement) alors créer un nouveau nœud contenant la clé « x » ensuite le chaîner à la bonne position comme fils du « P »
  • 139. 139 IV. INSERTION Exemple: Insérer les éléments suivants: 1, 40, 68, 170. 1 6 10 37 40 68 170
  • 140. 140 IV. SUPPRESSION On distingue deux types de suppression: 1. Suppression logique: Laisser la clé au niveau du nœud et le marquer comme supprimé Le nœud reste utilisé pour l'algorithme de recherche L’insertion d’un nœud supprimé consiste à le marquer comme non supprimé 2. Suppression physique: Technique similaire à celle des ABR
  • 141. 141 IV. SUPPRESSION Suppression physique: a. Si l’élément à supprimer est le seul élément dans le nœud alors libérer le nœud. Exemple: supprimer 37 ou 110
  • 142. 142 IV. SUPPRESSION Suppression physique: b. Si l’élément à supprimer a un sous arbre gauche ou droit vide alors supprimer l’élément, ensuite tasser le nœud (décalage des clés etou déplacement des fils). Exemple: la suppression du 120 entraîne le décalage de 150 à la position de 120. 68 100 150 110 I
  • 143. 143 IV. SUPPRESSION Suppression physique: b. Si l’élément à supprimer a un sous arbre gauche ou droit vide alors supprimer l’élément, ensuite tasser le nœud (décalage des clés etou déplacement des fils). Exemple: la suppression du 65 entraîne le décalage de 69 à la position de 65 ainsi le déplacement du fils droit de 65. 68 62 69 68 I
  • 144. 144 IV. SUPPRESSION Suppression physique: b. Si l’élément à supprimer a un sous arbre gauche ou droit vide alors supprimer l’élément, ensuite tasser le nœud (décalage des clés etou déplacement des fils). Exemple: la suppression du 62 ensuite 69 entraîne la libération du nœud G et le chaînage du nœud I avec D. 68 62 69 68 69 68
  • 145. 145 IV. SUPPRESSION Suppression physique: b. Si l’élément à supprimer a un sous arbre gauche ou droit vide alors supprimer l’élément, ensuite tasser le nœud (décalage des clés etou déplacement des fils). Exemple: la suppression du 69 entraîne la libération du nœud G et le chaînage du nœud I avec D. 68 68
  • 146. 146 IV. SUPPRESSION Suppression physique: c. Si l’élément à supprimer a des sous arbres gauche et droit tous les deux non vides alors remplacer l’élément à supprimer par son successeur/prédécesseur, ensuite supprimer ce successeur/prédécesseur Exemple: la suppression du 85 entraîne le remplacement du 85 par 100 , ensuite la suppression du 100 120 150 110 12 50 100
  • 147. PARTIE V: B-ARBRES: AMR EQUILIBRÉS
  • 148. Introduction Définition Opérations de Base: Insertion et Suppression 148 PLAN DE LA PARTIE V
  • 149. 149 V. INTRODUCTION Les principaux problèmes avec les AMR sont Équilibrage après MAJ Gaspilla d’espace dû aux suppression Bayer et McCreight (en 1970) ont fourni une solution à ces problèmes par l'invention des B-arbres (B pour Bayer / Boeng / Balanced).
  • 150. 150 V. DÉFINITION Un B-arbre d'ordre m (tel que m= 2*d +1, d≥1) est défini comme suit : La racine, si elle n’est pas une feuille, a au moins 2 fils. Chaque nœud contient k clés avec: 1≤k≤2*d (nœud racine) d≤k≤2*d (nœud non racine) Tous les nœuds feuilles sont au même niveau.
  • 151. 151 V. INTRODUCTION Ainsi, dans un B-arbre, le taux de remplissage de chaque nœud est maintenu entre 50% et 100% Les insertions et les suppressions deviennent simples à réaliser sauf dans deux cas particuliers: Insertion dans un nœud déjà plein Suppression dans un nœud entraînant un taux de remplissage inférieur à 50%
  • 152. 152 V. INSERTION L’insertion se fait toujours au niveau des feuilles. Ainsi, l’insertion se déroule comme suit: 1. Rechercher la position de l’élément à insérer, soit P le nœud trouvé. 2. Si le nœud P n’est pas plein alors insérer la clé à sa place.
  • 153. 153 V. INSERTION Exemple: Considérons le B-arbre suivant d'ordre 3, insérer les valeurs suivantes dans l’ordre : 55, 57, 95, 85, 87.
  • 154. 154 V. INSERTION 3. Sinon, le nœud P est plein, l’éclatement se fait en cascade (approche ascendante) comme suit a. Classer les clés dans l’ordre croissant : k1, k2, …km; soit kmil la clé du milieu b. Laisser les d plus petites clés (k1 … kmil-1) dans le nœud P c. Déplacer les d plus grandes clés (kmil+1 … km) dans un nouveau nœud (Q) d. Remonter la clé médiane (ou la valeur du milieu kmil) dans le nœud père de telle sorte que le nœud P se trouvera à sa gauche et Q à sa droite. e. Soit P le nœud père, aller à 2 (application récursive de ce principe éventuellement jusqu’à la racine)
  • 155. 155 V. INSERTION Exemple: Considérons le B-arbre suivant d'ordre 3, insérer les valeurs suivantes dans l’ordre : 55, 57, 95, 85, 87.
  • 156. 156 V. INSERTION Exemple: Considérons le B-arbre suivant d'ordre 3, insérer les valeurs suivantes dans l’ordre : 55, 57, 95, 85, 87.
  • 157. 157 V. SUPPRESSION Il faut supprimer l’élément tout en préservant la qualité de B-arbre, c'est à dire en gardant au moins d clés dans le nœud (non racine). C'est le cas de la suppression physique dans un Arbre de M-aire Recherche (AMR). En plus, si le nœud feuille qui contenait la clé à supprimer a moins de d clés, alors l'action suivante est entreprise :
  • 158. 158 V. SUPPRESSION Cas 1: Si l'un des frères (gauche ou droit) contient plus de d clés, alors la clé, soit Ks, dans le nœud père qui sépare entre les deux frères est ajoutée au nœud "underflow" et le dernier (si frère gauche) ou le premier élément (si frère droit) est ajoutée au père à la place de Ks. Suppression de 113 B-arbre d’ordre 5
  • 159. 159 V. SUPPRESSION Cas 2-a: Si les deux frères contenaient exactement d clés, le nœud "underflow" et l'un de ses frères seront concaténés ( fusionnés ou consolidés) en un seul nœud qui contient aussi la clé séparatrice de leur père. Suppression de 120 B-arbre d’ordre 5
  • 160. 160 V. SUPPRESSION Cas 2-b: Il est aussi possible que le père contient seulement d clés et par conséquent il n'a pas de clé à donner. Dans ce cas, il peut emprunter de son père et frère. Suppression de 65 B-arbre d’ordre 5
  • 161. 161 V. SUPPRESSION Cas 2-c: Dans le pire des cas, quand les frères du père n'ont pas des clés à donner, le père et son frère peuvent aussi être concaténés et une clé est prise du grand père. Suppression de 173 B-arbre d’ordre 5
  • 162. 162 V. SUPPRESSION Cas 2-d: Si tous les antécédents d'un nœud et leurs frères contiennent exactement d clés, une clé sera prise de la racine (due aux concaténations en cascades): Si la racine avait plus d'une clé, ceci termine le processus. Si la racine contenait une seule clé, elle sera utilisée dans la concaténation. Le nœud racine est libéré et la profondeur de l'arbre est réduit d'une unité.
  • 163. 163 V. B-ARBRE Exercice: 1. Construire un B-arbre d’ordre 3 et un B-arbre d’ordre 5 à partir des valeurs suivantes: 2. Supprimer du B-arbre d’ordre 5 les valeurs suivantes: 5, 15, 25, 35, 13, 10. 3. Supprimer du B-arbre d’ordre 3 les valeurs suivantes: 10, 7, 5, 13, 25, 38. 20 15 10 35 19 13 5 3 12 7 16 40 25 38
  • 164. 164 V. B-ARBRE 1. Construction de B-arbre d’ordre 3 20 15 10 35 19 13 5 3 12 7 16 40 25 38 20 10, 15, 2015 20 15 10 20 19, 20, 35 15 10 20 35 15 20 19 3510 13 5, 10, 13 10, 15, 20 +20 +15, +10 +35, +19 +13, +5
  • 165. 165 V. B-ARBRE 1. Construction de B-arbre d’ordre 3 10 19 355 20 15 13 +3, +12, +7 10 19 353 5 20 15 12 13 3, 5, 7 5 10 19 353 20 15 12 137 20 15 10 35 19 13 5 3 12 7 16 40 25 38
  • 166. 166 V. B-ARBRE 1. Construction de B-arbre d’ordre 3 20 15 10 35 19 13 5 3 12 7 16 40 25 38 5 10 16 19 38 403 20 35 15 12 137 25 +38 5 10 16 19 35 403 20 15 12 137 25, 35, 40 +16, +40, +25
  • 167. 167 V. B-ARBRE 1. Construction de B-arbre d’ordre 5 20 15 10 35 19 13 5 3 12 7 16 40 25 38 10, 15, 19, 20, 35 +20, +15, +10, +35, +19 +13, +5, +3 10 15 20 35 19 20 3510 15 19 20 355 10 13 15 3, 5, 10, 13, 15
  • 168. 168 V. B-ARBRE 1. Construction de B-arbre d’ordre 5 10 19 20 25 35 403 5 7 20, 25, 35, 38, 4012 13 15 16 10 19 35 20 253 5 7 12 13 15 16 38 40 +12, +7, +16, +40, +25, +38
  • 169. 169 V. B-ARBRE 2. Supprimer du B-arbre d’ordre 5 les valeurs suivantes: 5, 15, 25, 35, 13, 10. 10 19 35 20 253 5 7 12 13 15 16 38 40 Emprunter une clé du frère gauche 10 16 35 19 203 7 12 13 38 40
  • 170. V. B-ARBRE 2. Supprimer du B-arbre d’ordre 5 les valeurs suivantes: 5, 15, 25, 35, 13, 10. 10 16 35 19 203 7 12 13 38 40 1. Remplacer par le successeur 38 2. Fusionner avec le frère gauche 170 10 16 19 20 38 403 7 12 13
  • 171. V. B-ARBRE 2. Supprimer du B-arbre d’ordre 5 les valeurs suivantes: 5, 15, 25, 35, 13, 10. 171 10 16 19 20 38 403 7 12 13 Emprunter une clé du frère droit 10 19 20 38 403 7 12 16
  • 172. V. B-ARBRE 2. Supprimer du B-arbre d’ordre 5 les valeurs suivantes: 5, 15, 25, 35, 13, 10. 172 10 19 20 38 403 7 12 16 1. Remplacer par le prédécesseur 7 2. Fusionner avec le frère droit 19 20 38 403 7 12 16
  • 173. V. B-ARBRE 3. Supprimer du B-arbre d’ordre 3 les valeurs suivantes: 10 (remplacer par le successeur 12), 7, 5, 13, 25, 38. 173 5 10 16 19 38 403 20 35 15 12 137 25 5 12 16 19 38 403 20 35 15 137 25
  • 174. V. B-ARBRE 3. Supprimer du B-arbre d’ordre 3 les valeurs suivantes: 10, 7(fusionner avec le frère droit), 5, 13, 25, 38. 174 5 12 16 19 38 403 20 35 15 137 25 5 16 19 38 403 20 35 15 12 13 25
  • 175. V. B-ARBRE 3. Supprimer du B-arbre d’ordre 3 les valeurs suivantes: 10, 7, 5(remplacer par le successeur 12), 13, 25, 38. 175 12 16 19 38 403 20 35 15 13 25 5 16 19 38 403 20 35 15 12 13 25
  • 176. V. B-ARBRE 3. Supprimer du B-arbre d’ordre 3 les valeurs suivantes: 10, 7, 5, 13, 25 (emprunter du frère droit), 38. 176 12 16 19 38 403 20 35 15 13 25 1. Fusionner avec le frère gauche 2. Emprunter du frère droit 15 16 19 403 12 38 20 35
  • 177. V. B-ARBRE 3. Supprimer du B-arbre d’ordre 3 les valeurs suivantes: 10, 7, 5, 13, 25, 38. 177 2. Fusionner avec le frère gauche 1. Remplacer par 40 3. Fusionner avec le frère gauche 15 16 19 403 12 38 20 35 15 20 16 193 12 35 40
  • 178. SOURCES DE CE COURS N. EL-ALLIA , Cours d’Algorithmique et Structures de données dynamiques, Ecole nationale Supérieure d’Informatique (ESI), 2014. Djamel Eddine ZEGOUR, Cours de Structures de Données, Ecole nationale Supérieure d’Informatique (ESI), Disponible sur http://zegour.esi.dz/Cours/Cours_sdd.htm W. K. Hidouci, Cours Structures De Données et Fichiers, École nationale Supérieure d’Informatique, Disponible sur hidouci.esi.dz/algo/ A. Walid, Gestion des fichiers, Disponible sur https://slideplayer.fr/slide/9332040/ A. Aroussi, Cours d’ Algorithmique Avancée, Université de Blida 1, 2016, Disponible sur https://sites.google.com/a/esi.dz/informatiqueblida/Algorithmique/annee- universitaire-2015-2016 178