SlideShare une entreprise Scribd logo
1  sur  81
Télécharger pour lire hors ligne
1 de 1
Algorithmique
Les arbres
Florent Hivert
Mél : Florent.Hivert@lri.fr
Page personnelle : http://www.lri.fr/˜hivert
2 de 1
Algorithmes et structures de données
La plupart des bons algorithmes fonctionnent grâce à une méthode
astucieuse pour organiser les données. Nous allons étudier quatre
grandes classes de structures de données :
Les structures de données séquentielles (tableaux) ;
Les structures de données linéaires (liste chaînées) ;
Les arbres ;
Les graphes.
3 de 1
Problème de la recherche
On aimerai avoir une structure de donnée où l’insertion et la
recherche sont efficace.
Pour les tableaux : insertion en O(n), recherche en O(log(n))
Pour les listes : insertion en O(1), recherche en O(n)
4 de 1
Représentations graphiques d’arbres binaires et vocabulaire
15
4
33
3
9
11
28
7
21
25
12
29
15
7
6
5
nœuds
branches
une branche gauche
une branche droite
valeurs
Ici :
arbre, nœuds, branches ;
arbre binaire, branches gauches, branches droites ;
valeurs (ou étiquettes) des nœuds.
4 de 1
Représentations graphiques d’arbres binaires et vocabulaire
15
4
33
3
9
11
28
7
21
25
12
29
15
7
6
5
nœuds
branches
une branche gauche
une branche droite
valeurs
Ici :
arbre, nœuds, branches ;
arbre binaire, branches gauches, branches droites ;
valeurs (ou étiquettes) des nœuds.
4 de 1
Représentations graphiques d’arbres binaires et vocabulaire
15
4
33
3
9
11
28
7
21
25
12
29
15
7
6
5
nœuds
branches
une branche gauche
une branche droite
valeurs
Ici :
arbre, nœuds, branches ;
arbre binaire, branches gauches, branches droites ;
valeurs (ou étiquettes) des nœuds.
5 de 1
Définition récursive
15
4
33
3
9
11
28
7
21
25
12
29
15
7
6
5
nœud-racine
arbre vide
sous-arbre gauche
sous-arbre droit
Ici :
(nœud-)racine, sous-arbre gauche, sous-arbre droit ;
l’arbre vide, notion récursive d’arbre binaire valué (ou
étiqueté) ;
notion récursive de sous-arbre.
5 de 1
Définition récursive
15
4
33
3
9
11
28
7
21
25
12
29
15
7
6
5
nœud-racine
arbre vide
sous-arbre gauche
sous-arbre droit
Ici :
(nœud-)racine, sous-arbre gauche, sous-arbre droit ;
l’arbre vide, notion récursive d’arbre binaire valué (ou
étiqueté) ;
notion récursive de sous-arbre.
5 de 1
Définition récursive
15
4
33
3
9
11
28
7
21
25
12
29
15
7
6
5
nœud-racine
arbre vide
sous-arbre gauche
sous-arbre droit
Ici :
(nœud-)racine, sous-arbre gauche, sous-arbre droit ;
l’arbre vide, notion récursive d’arbre binaire valué (ou
étiqueté) ;
notion récursive de sous-arbre.
6 de 1
Arbres binaires étendus
a
15
v
4
e
33
c
3
-
9
d
11
e
28
s
7
-
21
f
25
e
12
u
29
i
15
l
7
l
6
e
5
s
feuilles
Ici :
feuilles ;
notion récursive d’arbre binaire étendu.
6 de 1
Arbres binaires étendus
a
15
v
4
e
33
c
3
-
9
d
11
e
28
s
7
-
21
f
25
e
12
u
29
i
15
l
7
l
6
e
5
s
feuilles
Ici :
feuilles ;
notion récursive d’arbre binaire étendu.
7 de 1
Vocabulaire
h
a
u
t
e
u
r
taille
Ici :
structure d’arbre binaire ;
dimensions : taille, hauteur ;
équilibre ;
chemin issu de la racine, longueur d’un chemin.
7 de 1
Vocabulaire
h
a
u
t
e
u
r
taille
Ici :
structure d’arbre binaire ;
dimensions : taille, hauteur ;
équilibre ;
chemin issu de la racine, longueur d’un chemin.
7 de 1
Vocabulaire
h
a
u
t
e
u
r
taille
Ici :
structure d’arbre binaire ;
dimensions : taille, hauteur ;
équilibre ;
chemin issu de la racine, longueur d’un chemin.
7 de 1
Vocabulaire
h
a
u
t
e
u
r
taille
Ici :
structure d’arbre binaire ;
dimensions : taille, hauteur ;
équilibre ;
chemin issu de la racine, longueur d’un chemin.
8 de 1
Arbre binaire de recherche
3
4
6
7
9
11
12
15
22
25
28
29
30
31
33
48
croissance stricte
Ici :
arbre binaire de recherche (ou ordonné) ;
parcours infixe (ou symétrique) ;
recherche, insertion, suppression.
8 de 1
Arbre binaire de recherche
3
4
6
7
9
11
12
15
22
25
28
29
30
31
33
48
croissance stricte
Ici :
arbre binaire de recherche (ou ordonné) ;
parcours infixe (ou symétrique) ;
recherche, insertion, suppression.
8 de 1
Arbre binaire de recherche
3
4
6
7
9
11
12
15
22
25
28
29
30
31
33
48
croissance stricte
Ici :
arbre binaire de recherche (ou ordonné) ;
parcours infixe (ou symétrique) ;
recherche, insertion, suppression.
9 de 1
Arbre Tournoi
6
5
21
25
12
15
11
48
3
7
9
28
15
7
4
29
c
r
o
i
s
s
a
n
c
e
l
a
r
g
e
Ici :
arbre tournoi ;
minimum, insertion, suppression du minimum.
9 de 1
Arbre Tournoi
6
5
21
25
12
15
11
48
3
7
9
28
15
7
4
29
c
r
o
i
s
s
a
n
c
e
l
a
r
g
e
Ici :
arbre tournoi ;
minimum, insertion, suppression du minimum.
10 de 1
Termes anglo-saxons
binary tree ;
node, branch, value, label, root, subtree, leaf ;
size, height, distance ;
balanced tree ;
path from the root, length of a path ;
infix traversal ;
valued binary tree, label(l)ed binary tree, extended binary tree,
binary search tree, ordered binary tree, tournament tree.
11 de 1
Applications des arbres
Classifications : par questionnaire binaire :
nœud = question, feuille = réponse ;
branche gauche étiquetée par FAUX, branche droite par VRAI.
Recherche : par arbres binaires de recherche.
Files de priorité : par arbres-tournoi : gestion des tampons
avec priorité.
12 de 1
Spécification formelle
Définition (Type abstrait ABin)
Opérations :
Vide : {} → ABin
Noeud : ABin × ABin → ABin
EstVide : ABin → Booleen
SAG, SAD : ABin → ABin
Préconditions :
SAD(t), SAG(t) défini seulement si non EstVide(t)
Axiomes :
EstVide(Vide()) = VRAI EstVide(Noeud(g, d)) = FAUX
SAG(Noeud(g, d)) = g SAD(Noeud(g, d)) = d
Noeud(SAG(t), SAD(t)) = t si non EstVide(t).
13 de 1
Voici la liste de tous les arbres jusqu’à la taille 3 :
13 de 1
Voici la liste de tous les arbres jusqu’à la taille 3 :
14 de 1
Voici la liste de tous les arbres de taille 4 :
15 de 1
Liste de tous les arbres à n Nœuds
Algorithme
Entrée : un entier positif ou nul n
Sortie : une liste d’arbres
res <- listeVide()
si n = 0 alors
ajoute(res, arbreVide())
retourner res
pour i de 0 à n-1 faire
lg <- ALGO(i); ld <- ALGO(n-1-i)
pour g dans lg faire
pour d dans ld faire
ajoute(res, Noeud(g,d))
retourner res
16 de 1
Nombre de Catalan
Proposition
Le nombre d’arbres binaires à n nœuds est appelé n-ième nombre
de Catalan noté Cn. Les nombre de Catalan vérifient la récurrence :
C0 = 1 Cn =
n−1
X
i=0
Ci Cn−1−i .
On en déduit
Cn =
(2n)!
n!(n + 1)!
.
Voici les premières valeurs :
C0 = 1, C1 = 1, C2 = 2, C3 = 5, C4 = 14, C5 = 42, c6 = 132 .
17 de 1
taille et hauteur
Définition
On définit deux fonctions sur les arbres binaires :
Le nombre de noeuds appelé Taille :
Taille(Vide) = 0
Taille(Noeud(a0, a1)) = 1 + Taille(a0) + Taille(a1)
Le nombre de noeuds du plus long chemin appelé Hauteur :
Hauteur(Vide) = 0
Hauteur(Noeud(a0, a1)) = 1+max{Hauteur(a0), Hauteur(a1)}
18 de 1
Comparaison taille/hauteur
Proposition
Pour tout arbre binaire de taille n et de hauteur h :
h 6 n 6 2h
− 1 .
19 de 1
Noeuds
Retenir
Un noeud est dit interne s’il a deux fils non vide. Sinon il est dit
externe.
internes
externes
20 de 1
Retenir
Une branche relie un noeuds à l’un des deux sous-arbres. Une
branche est soit la branche gauche soit la branche droite d’un
nœud.
Une branche est interne lorsqu’elle relie deux nœuds ; elle est
externe dans le cas contraire.
internes
externes
En conséquence de quoi :
un nœud interne possède deux branches internes ;
un nœud externe possède au moins une branche externe.
21 de 1
Nombre de branches
Proposition
Tout arbre binaire de n nœuds possède 2n branches.
Plus précisément, lorsque n > 1, il possède n − 1 branches internes
et n + 1 branches externes.
22 de 1
Retenir
Un chemin de longueur k issu de a est un couple de la forme :
(a, hb1, b2, . . . , bk i)
pour lequel il existe t1, t2, . . . , tk tels que :
en posant t0 = a, tj est le sous-arbre gauche ou droit de a0
j−1 selon
que le bit de direction bj vaut 0 ou 1.
On dit d’un tel chemin qu’il mène de a à tk .
Le chemin de longueur nulle (a, hi) mène de a à lui-même.
0 1
0 1
0 1
0 1
0 1
chemin (a, h0, 1, 0, 0i)
a = t0
t1
t2
t3
t4
Un chemin est interne lorsqu’il mène à un nœud ; il est externe sinon.
22 de 1
Retenir
Un chemin de longueur k issu de a est un couple de la forme :
(a, hb1, b2, . . . , bk i)
pour lequel il existe t1, t2, . . . , tk tels que :
en posant t0 = a, tj est le sous-arbre gauche ou droit de a0
j−1 selon
que le bit de direction bj vaut 0 ou 1.
On dit d’un tel chemin qu’il mène de a à tk .
Le chemin de longueur nulle (a, hi) mène de a à lui-même.
0 1
0 1
0 1
0 1
0 1
chemin (a, h0, 1, 0, 0i)
a = t0
t1
t2
t3
t4
Un chemin est interne lorsqu’il mène à un nœud ; il est externe sinon.
22 de 1
Retenir
Un chemin de longueur k issu de a est un couple de la forme :
(a, hb1, b2, . . . , bk i)
pour lequel il existe t1, t2, . . . , tk tels que :
en posant t0 = a, tj est le sous-arbre gauche ou droit de a0
j−1 selon
que le bit de direction bj vaut 0 ou 1.
On dit d’un tel chemin qu’il mène de a à tk .
Le chemin de longueur nulle (a, hi) mène de a à lui-même.
0 1
0 1
0 1
0 1
0 1
chemin (a, h0, 1, 0, 0i)
a = t0
t1
t2
t3
t4
Un chemin est interne lorsqu’il mène à un nœud ; il est externe sinon.
22 de 1
Retenir
Un chemin de longueur k issu de a est un couple de la forme :
(a, hb1, b2, . . . , bk i)
pour lequel il existe t1, t2, . . . , tk tels que :
en posant t0 = a, tj est le sous-arbre gauche ou droit de a0
j−1 selon
que le bit de direction bj vaut 0 ou 1.
On dit d’un tel chemin qu’il mène de a à tk .
Le chemin de longueur nulle (a, hi) mène de a à lui-même.
0 1
0 1
0 1
0 1
0 1
chemin (a, h0, 1, 0, 0i)
a = t0
t1
t2
t3
t4
Un chemin est interne lorsqu’il mène à un nœud ; il est externe sinon.
23 de 1
Proposition
Pour tout nœud a0 d’un arbre binaire non vide a, il existe un
unique chemin menant de la racine a de l’arbre au nœud a0.
Proposition
La hauteur d’un arbre binaire a est la longueur du plus long chemin
issu de la racine a.
Proposition
Tout arbre binaire de n nœuds possède 2n + 1 chemins distincts
issus de sa racine. Parmi ceux-là, n sont internes et n + 1 sont
externes.
24 de 1
Définition
Soit (a, hb1, b2, . . . , bki) le chemin menant de a à a0.
Le numéro de a0 relativement à a, noté Numa(a0), est
[1b1b2 . . . bk]2, l’entier dont l’écriture en base 2 est 1 b1 b2 . . . bk.
Autrement dit :
racine : 1 ;
vers la gauche : ×2, +0 ;
vers la droite : ×2, +1.
below:8
15
above:4
below:9
4
above:2
below:40
33
above:20
below:82
3
above:41
below:83
9
above:10
below:42
11
above:21
below:43
28
above:5
below:22
7
above:11
below:23
21
above:1
below:12
25
above:6
below:52
12
above:26
below:212
29
above:106
below:213
15
above:53
below:107
7
above:13
below:27
6
above:3
below:14
5
above:7
below:15
24 de 1
Définition
Soit (a, hb1, b2, . . . , bki) le chemin menant de a à a0.
Le numéro de a0 relativement à a, noté Numa(a0), est
[1b1b2 . . . bk]2, l’entier dont l’écriture en base 2 est 1 b1 b2 . . . bk.
Autrement dit :
racine : 1 ;
vers la gauche : ×2, +0 ;
vers la droite : ×2, +1.
below:8
15
above:4
below:9
4
above:2
below:40
33
above:20
below:82
3
above:41
below:83
9
above:10
below:42
11
above:21
below:43
28
above:5
below:22
7
above:11
below:23
21
above:1
below:12
25
above:6
below:52
12
above:26
below:212
29
above:106
below:213
15
above:53
below:107
7
above:13
below:27
6
above:3
below:14
5
above:7
below:15
24 de 1
Définition
Soit (a, hb1, b2, . . . , bki) le chemin menant de a à a0.
Le numéro de a0 relativement à a, noté Numa(a0), est
[1b1b2 . . . bk]2, l’entier dont l’écriture en base 2 est 1 b1 b2 . . . bk.
Autrement dit :
racine : 1 ;
vers la gauche : ×2, +0 ;
vers la droite : ×2, +1.
below:8
15
above:4
below:9
4
above:2
below:40
33
above:20
below:82
3
above:41
below:83
9
above:10
below:42
11
above:21
below:43
28
above:5
below:22
7
above:11
below:23
21
above:1
below:12
25
above:6
below:52
12
above:26
below:212
29
above:106
below:213
15
above:53
below:107
7
above:13
below:27
6
above:3
below:14
5
above:7
below:15
25 de 1
Notion de parcours
Retenir
Un parcours est un algorithme qui appelle une fonction,
méthode où procédure sur tous les noeuds (ou les sous arbres)
d’un arbre.
L’ordre sur les nœuds dans lequel la procédure est appelée
doit être fixé. Il y a de nombreux choix possibles.
Exemple de fonctions : affichage, liste des valeurs, accumulation. . .
Retenir
Un parcours est dit en profondeur lorsque, systématiquement, si
l’arbre n’est pas vide, le parcours de l’un des deux sous-arbres est
terminé avant que ne commence celui de l’autre.
25 de 1
Notion de parcours
Retenir
Un parcours est un algorithme qui appelle une fonction,
méthode où procédure sur tous les noeuds (ou les sous arbres)
d’un arbre.
L’ordre sur les nœuds dans lequel la procédure est appelée
doit être fixé. Il y a de nombreux choix possibles.
Exemple de fonctions : affichage, liste des valeurs, accumulation. . .
Retenir
Un parcours est dit en profondeur lorsque, systématiquement, si
l’arbre n’est pas vide, le parcours de l’un des deux sous-arbres est
terminé avant que ne commence celui de l’autre.
25 de 1
Notion de parcours
Retenir
Un parcours est un algorithme qui appelle une fonction,
méthode où procédure sur tous les noeuds (ou les sous arbres)
d’un arbre.
L’ordre sur les nœuds dans lequel la procédure est appelée
doit être fixé. Il y a de nombreux choix possibles.
Exemple de fonctions : affichage, liste des valeurs, accumulation. . .
Retenir
Un parcours est dit en profondeur lorsque, systématiquement, si
l’arbre n’est pas vide, le parcours de l’un des deux sous-arbres est
terminé avant que ne commence celui de l’autre.
26 de 1
Parcours préfixe, infixe, postfixe
Parcours en profondeur de gauche à droite (on applique F sur tous
les sous-arbres) :
Préfixe :
1 application de F à la racine,
2 parcours préfixe du sous-arbre gauche,
3 parcours préfixe du sous-arbre droit.
Infixe (ou symétrique) :
1 parcours infixe du sous-arbre gauche,
2 application de F à la racine,
3 parcours infixe du sous-arbre droit.
Postfixe :
1 parcours postfixe du sous-arbre gauche,
2 parcours postfixe du sous-arbre droit,
3 application de F à la racine.
Les parcours droite-gauche se déduisent par symétrie.
26 de 1
Parcours préfixe, infixe, postfixe
Parcours en profondeur de gauche à droite (on applique F sur tous
les sous-arbres) :
Préfixe :
1 application de F à la racine,
2 parcours préfixe du sous-arbre gauche,
3 parcours préfixe du sous-arbre droit.
Infixe (ou symétrique) :
1 parcours infixe du sous-arbre gauche,
2 application de F à la racine,
3 parcours infixe du sous-arbre droit.
Postfixe :
1 parcours postfixe du sous-arbre gauche,
2 parcours postfixe du sous-arbre droit,
3 application de F à la racine.
Les parcours droite-gauche se déduisent par symétrie.
27 de 1
Exemple
Pour l’arbre :
les ordres de traitement des nœuds sont, selon les parcours :
1
2 3
4
5
2
1 5
4
3
5
1 4
3
2
préfixe infixe postfixe
28 de 1
Parcours en largeur
Retenir
Un parcours est dit en largeur lorsqu’il procède en croissant selon
les niveaux.
Voici un parcourt en largeur de gauche à droite :
1
2 3
4 5 6
7
29 de 1
Algorithme de parcours en largeur
Idée : on remplace la pile d’appels par une file d’attente dans
l’algorithme de parcours préfixe.
Algorithme
Entrée : un arbre binaire a, une procédure f
Effet : appelle f sur tous les sous arbres
p <- FileVide()
p <- Enfile(p, a)
tant que non EstVideFile(p) faire
ssa, p <- Defile(p)
si non EstVide(ssa)
f(ssa)
p <- Enfile(p, SAG(ssa))
p <- Enfile(p, SAD(ssa))
30 de 1
Définition (Type abstrait arbre binaire valué ABinV(T))
Opérations :
Videval : {} → ABinV(T) EstVideval : ABinV(T) → Booleen
Noeudval : T × ABinV(T) × ABinV(T) → ABinV(T)
SAGval , SADval : ABinV(T) → ABinV(T)
Val : ABinV(T) → T
Préconditions :
SAD(t), SAG(t), Val(t) défini seulement si non EstVide(t)
Axiomes :
EstVide(Vide()) = VRAI EstVide(Noeud(v, g, d)) = FAUX
SAG(Noeud(v, g, d)) = g SAD(Noeud(v, g, d)) = d
Val(Noeud(v, g, d)) = v
Noeud(Val(t), SAG(t), SAD(t)) = t si non EstVide(t).
31 de 1
Arbres valués et non valués
Retenir
Les définitions de taille, hauteur, chemin, interne, externe et
numéro s’applique également pour les arbres binaires valués.
Définition (Forme d’une arbre binaire valués)
On défini récursivement la forme d’un binaire valués par
Forme : ABinV(T) → ABin ;
Forme(Videval ()) = Vide() ;
Forme(Noeudval (v, g, d)) = Noeud(Forme(g), Forme(d)).
32 de 1
Arbres binaires de recherche
Définition
Un arbre binaire de recherche (ABR ; ou arbre binaire ordonné,
ABO) est un ABV qui, s’il n’est pas vide, est tel que :
ses sous-arbres gauche et droit sont des ABR ;
les valeurs des nœuds du sous-arbre gauche sont strictement
inférieures à la valeur du nœud-racine de l’arbre ;
les valeurs des nœuds du sous-arbre droit sont strictement
supérieures à la valeur du nœud-racine de l’arbre.
Les valeurs des nœuds dans un ABR sont donc deux à deux
distinctes. Autrement dit, la qualitificatif « ordonné » est à prendre
au sens strict.
32 de 1
Arbres binaires de recherche
Définition
Un arbre binaire de recherche (ABR ; ou arbre binaire ordonné,
ABO) est un ABV qui, s’il n’est pas vide, est tel que :
ses sous-arbres gauche et droit sont des ABR ;
les valeurs des nœuds du sous-arbre gauche sont strictement
inférieures à la valeur du nœud-racine de l’arbre ;
les valeurs des nœuds du sous-arbre droit sont strictement
supérieures à la valeur du nœud-racine de l’arbre.
Les valeurs des nœuds dans un ABR sont donc deux à deux
distinctes. Autrement dit, la qualitificatif « ordonné » est à prendre
au sens strict.
33 de 1
Exemple d’arbre binaire de recherche
3
4
6
7
9
11
12
15
22
25
28
29
30
31
33
48
croissance stricte
34 de 1
ABR et ordre infixe
Théorème (caractérisation rapide des ABR)
Un ABV est un ABR si seulement si la liste des valeurs des nœuds
établie dans l’ordre infixe est strictement croissante.
Exemple
Avec
T = Naturel,
l’ABV :
2
4
7
12
20
est un ABR. La liste des
valeurs de ses nœuds,
établie dans l’ordre
infixe, est strictement
croissante :
h2, 4, 7, 12, 20i.
34 de 1
ABR et ordre infixe
Théorème (caractérisation rapide des ABR)
Un ABV est un ABR si seulement si la liste des valeurs des nœuds
établie dans l’ordre infixe est strictement croissante.
Exemple
Avec
T = Naturel,
l’ABV :
2
4
7
12
20
est un ABR. La liste des
valeurs de ses nœuds,
établie dans l’ordre
infixe, est strictement
croissante :
h2, 4, 7, 12, 20i.
35 de 1
Opérations sur les ABR
On veux implanter les opérations suivantes :
recherche d’un élément : EstDansABR ;
insertion d’un élément : InsertABR ;
suppression d’un élément : SupprimeABR ;
rotation (rééquilibrage).
Note : il y a plusieurs manières d’insérer et de supprimer un
éléments. D’autre opérations plus complexes existent (fusion,
partition).
35 de 1
Opérations sur les ABR
On veux implanter les opérations suivantes :
recherche d’un élément : EstDansABR ;
insertion d’un élément : InsertABR ;
suppression d’un élément : SupprimeABR ;
rotation (rééquilibrage).
Note : il y a plusieurs manières d’insérer et de supprimer un
éléments. D’autre opérations plus complexes existent (fusion,
partition).
35 de 1
Opérations sur les ABR
On veux implanter les opérations suivantes :
recherche d’un élément : EstDansABR ;
insertion d’un élément : InsertABR ;
suppression d’un élément : SupprimeABR ;
rotation (rééquilibrage).
Note : il y a plusieurs manières d’insérer et de supprimer un
éléments. D’autre opérations plus complexes existent (fusion,
partition).
36 de 1
Recherche d’un élément dans un ABR
Algorithme (EstDansABR)
Entrée : un ABR a et un élément e
Sortie : VRAI si e apparaît dans a, FAUX sinon
si EstVide(a) alors
retourner FAUX
sinon si e = Val(a) alors
retourner VRAI
sinon si e < Val(a) alors
retourner EstDansABR(SAG(A))
sinon
retourner EstDansABR(SAD(A))
⇒ Complexité : O(Hauteur(a)) ⊆ O(Taille(a)).
37 de 1
Insersion aux feuilles
Algorithme (InsertABR)
Entrée : un ABR a et un élément e
Sortie : un ABR a0
si EstVide(a) alors
retourner Noeud(a, Vide(), Vide())
sinon si e = Val(a) alors
retourner a
sinon si e < Val(a) alors
retourner Noeud(Val(a), InsertABR(SAG(a)), SAD(a))
sinon
retourner Noeud(Val(a), SAG(a), InsertABR(SAD(a)))
⇒ Complexité : O(Hauteur(a)) ⊆ O(Taille(a)).
38 de 1
Correction de InsertABR
Proposition
Soit a ∈ ABR(T) un ABR et e ∈ T un élément. Soit
a0 = InsertABR(a, e). Alors, pour tout x ∈ T on a
EstDansABR(a0
, x) = EstDansABR(a, x) ou (e = x) .
Autrement dit,
Valeurs(a0
) = Valeurs(a) ∪ {e}
où Valeurs(a) désigne l’ensemble des valeurs qui apparaissent dans
l’arbre a.
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
4
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
4
20
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
4
12
20
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
2
4
12
20
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
2
4
7
12
20
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
2
3
4
7
12
20
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
2
3
4
6
7
12
20
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
0
2
3
4
6
7
12
20
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
0
2
3
4
6
7
12
15
20
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
0
1
2
3
4
6
7
12
15
20
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
0
1
2
3
4
6
7
12
13
15
20
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
0
1
2
3
4
6
7
12
13
14
15
20
39 de 1
Exemples d’insertions
Exemple
Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans
l’ABR vide :
0
1
2
3
4
6
7
12
13
14
15
20
40 de 1
Bilan
On a donc une structure de donnée pour laquelle les coût de
l’insertion et la recherche sont en O(Hauteur(a)) :
Retenir
Dans le pire des cas (arbre filiforme), le coût est en
O(Taille(a)).
En moyenne, le coût est en O(log(Taille(a))).
De plus, en utilisant la rotation (voir G.M. Adelson-Velskii et E.M.
Landis 1962, arbre AVL, arbre rouge-noir), on peut s’assurer que
Hauteur(a) reste inférieur à
logΦ(n + 2) − 1 ≈ 1.44 log2(n + 2) − 1
où Φ = 1+
√
5
2 est le nombre d’or et n = Taille(a).
41 de 1
Arbres équilibrés
Définition
L’équilibre d’un arbre binaire est un entier qui vaut 0 si l’arbre est
vide et la différence des hauteurs des sous-arbres gauche et droit
de l’arbre sinon.
Un arbre binaire est équilibré lorsque l’équilibre de chacun de ses
sous-arbres non vides n’excède pas 1 en valeur absolue.
41 de 1
Arbres équilibrés
Définition
L’équilibre d’un arbre binaire est un entier qui vaut 0 si l’arbre est
vide et la différence des hauteurs des sous-arbres gauche et droit
de l’arbre sinon.
Un arbre binaire est équilibré lorsque l’équilibre de chacun de ses
sous-arbres non vides n’excède pas 1 en valeur absolue.
42 de 1
Exemple
L’équilibre de chacun des sous-arbres non vides est indiqué sur la
gauche ou la droite de son nœud-racine :
+1
−1
0
0
−1
+1
0
−1
0 −1
0
équilibré équilibré
+4
−3
+2
−1
0
+1
+2
−1
0
0
0 0
non équilibré non équilibré
43 de 1
Rotations
a
b
A B
C
rotation droite
−
−
−
−
−
−
−
−
−
−
→
←
−
−
−
−
−
−
−
−
−
−
rotation gauche
a
b
A
B C
Proposition
Après une insertion où une suppression, il suffit de deux rotations
pour ré-équilibrer un arbre. Le maintient de l’équilibre est possible
en temps constant.

Contenu connexe

En vedette

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

En vedette (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

06 arbres

  • 1. 1 de 1 Algorithmique Les arbres Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/˜hivert
  • 2. 2 de 1 Algorithmes et structures de données La plupart des bons algorithmes fonctionnent grâce à une méthode astucieuse pour organiser les données. Nous allons étudier quatre grandes classes de structures de données : Les structures de données séquentielles (tableaux) ; Les structures de données linéaires (liste chaînées) ; Les arbres ; Les graphes.
  • 3. 3 de 1 Problème de la recherche On aimerai avoir une structure de donnée où l’insertion et la recherche sont efficace. Pour les tableaux : insertion en O(n), recherche en O(log(n)) Pour les listes : insertion en O(1), recherche en O(n)
  • 4. 4 de 1 Représentations graphiques d’arbres binaires et vocabulaire 15 4 33 3 9 11 28 7 21 25 12 29 15 7 6 5 nœuds branches une branche gauche une branche droite valeurs Ici : arbre, nœuds, branches ; arbre binaire, branches gauches, branches droites ; valeurs (ou étiquettes) des nœuds.
  • 5. 4 de 1 Représentations graphiques d’arbres binaires et vocabulaire 15 4 33 3 9 11 28 7 21 25 12 29 15 7 6 5 nœuds branches une branche gauche une branche droite valeurs Ici : arbre, nœuds, branches ; arbre binaire, branches gauches, branches droites ; valeurs (ou étiquettes) des nœuds.
  • 6. 4 de 1 Représentations graphiques d’arbres binaires et vocabulaire 15 4 33 3 9 11 28 7 21 25 12 29 15 7 6 5 nœuds branches une branche gauche une branche droite valeurs Ici : arbre, nœuds, branches ; arbre binaire, branches gauches, branches droites ; valeurs (ou étiquettes) des nœuds.
  • 7. 5 de 1 Définition récursive 15 4 33 3 9 11 28 7 21 25 12 29 15 7 6 5 nœud-racine arbre vide sous-arbre gauche sous-arbre droit Ici : (nœud-)racine, sous-arbre gauche, sous-arbre droit ; l’arbre vide, notion récursive d’arbre binaire valué (ou étiqueté) ; notion récursive de sous-arbre.
  • 8. 5 de 1 Définition récursive 15 4 33 3 9 11 28 7 21 25 12 29 15 7 6 5 nœud-racine arbre vide sous-arbre gauche sous-arbre droit Ici : (nœud-)racine, sous-arbre gauche, sous-arbre droit ; l’arbre vide, notion récursive d’arbre binaire valué (ou étiqueté) ; notion récursive de sous-arbre.
  • 9. 5 de 1 Définition récursive 15 4 33 3 9 11 28 7 21 25 12 29 15 7 6 5 nœud-racine arbre vide sous-arbre gauche sous-arbre droit Ici : (nœud-)racine, sous-arbre gauche, sous-arbre droit ; l’arbre vide, notion récursive d’arbre binaire valué (ou étiqueté) ; notion récursive de sous-arbre.
  • 10. 6 de 1 Arbres binaires étendus a 15 v 4 e 33 c 3 - 9 d 11 e 28 s 7 - 21 f 25 e 12 u 29 i 15 l 7 l 6 e 5 s feuilles Ici : feuilles ; notion récursive d’arbre binaire étendu.
  • 11. 6 de 1 Arbres binaires étendus a 15 v 4 e 33 c 3 - 9 d 11 e 28 s 7 - 21 f 25 e 12 u 29 i 15 l 7 l 6 e 5 s feuilles Ici : feuilles ; notion récursive d’arbre binaire étendu.
  • 12. 7 de 1 Vocabulaire h a u t e u r taille Ici : structure d’arbre binaire ; dimensions : taille, hauteur ; équilibre ; chemin issu de la racine, longueur d’un chemin.
  • 13. 7 de 1 Vocabulaire h a u t e u r taille Ici : structure d’arbre binaire ; dimensions : taille, hauteur ; équilibre ; chemin issu de la racine, longueur d’un chemin.
  • 14. 7 de 1 Vocabulaire h a u t e u r taille Ici : structure d’arbre binaire ; dimensions : taille, hauteur ; équilibre ; chemin issu de la racine, longueur d’un chemin.
  • 15. 7 de 1 Vocabulaire h a u t e u r taille Ici : structure d’arbre binaire ; dimensions : taille, hauteur ; équilibre ; chemin issu de la racine, longueur d’un chemin.
  • 16. 8 de 1 Arbre binaire de recherche 3 4 6 7 9 11 12 15 22 25 28 29 30 31 33 48 croissance stricte Ici : arbre binaire de recherche (ou ordonné) ; parcours infixe (ou symétrique) ; recherche, insertion, suppression.
  • 17. 8 de 1 Arbre binaire de recherche 3 4 6 7 9 11 12 15 22 25 28 29 30 31 33 48 croissance stricte Ici : arbre binaire de recherche (ou ordonné) ; parcours infixe (ou symétrique) ; recherche, insertion, suppression.
  • 18. 8 de 1 Arbre binaire de recherche 3 4 6 7 9 11 12 15 22 25 28 29 30 31 33 48 croissance stricte Ici : arbre binaire de recherche (ou ordonné) ; parcours infixe (ou symétrique) ; recherche, insertion, suppression.
  • 19. 9 de 1 Arbre Tournoi 6 5 21 25 12 15 11 48 3 7 9 28 15 7 4 29 c r o i s s a n c e l a r g e Ici : arbre tournoi ; minimum, insertion, suppression du minimum.
  • 20. 9 de 1 Arbre Tournoi 6 5 21 25 12 15 11 48 3 7 9 28 15 7 4 29 c r o i s s a n c e l a r g e Ici : arbre tournoi ; minimum, insertion, suppression du minimum.
  • 21. 10 de 1 Termes anglo-saxons binary tree ; node, branch, value, label, root, subtree, leaf ; size, height, distance ; balanced tree ; path from the root, length of a path ; infix traversal ; valued binary tree, label(l)ed binary tree, extended binary tree, binary search tree, ordered binary tree, tournament tree.
  • 22. 11 de 1 Applications des arbres Classifications : par questionnaire binaire : nœud = question, feuille = réponse ; branche gauche étiquetée par FAUX, branche droite par VRAI. Recherche : par arbres binaires de recherche. Files de priorité : par arbres-tournoi : gestion des tampons avec priorité.
  • 23. 12 de 1 Spécification formelle Définition (Type abstrait ABin) Opérations : Vide : {} → ABin Noeud : ABin × ABin → ABin EstVide : ABin → Booleen SAG, SAD : ABin → ABin Préconditions : SAD(t), SAG(t) défini seulement si non EstVide(t) Axiomes : EstVide(Vide()) = VRAI EstVide(Noeud(g, d)) = FAUX SAG(Noeud(g, d)) = g SAD(Noeud(g, d)) = d Noeud(SAG(t), SAD(t)) = t si non EstVide(t).
  • 24. 13 de 1 Voici la liste de tous les arbres jusqu’à la taille 3 :
  • 25. 13 de 1 Voici la liste de tous les arbres jusqu’à la taille 3 :
  • 26. 14 de 1 Voici la liste de tous les arbres de taille 4 :
  • 27. 15 de 1 Liste de tous les arbres à n Nœuds Algorithme Entrée : un entier positif ou nul n Sortie : une liste d’arbres res <- listeVide() si n = 0 alors ajoute(res, arbreVide()) retourner res pour i de 0 à n-1 faire lg <- ALGO(i); ld <- ALGO(n-1-i) pour g dans lg faire pour d dans ld faire ajoute(res, Noeud(g,d)) retourner res
  • 28. 16 de 1 Nombre de Catalan Proposition Le nombre d’arbres binaires à n nœuds est appelé n-ième nombre de Catalan noté Cn. Les nombre de Catalan vérifient la récurrence : C0 = 1 Cn = n−1 X i=0 Ci Cn−1−i . On en déduit Cn = (2n)! n!(n + 1)! . Voici les premières valeurs : C0 = 1, C1 = 1, C2 = 2, C3 = 5, C4 = 14, C5 = 42, c6 = 132 .
  • 29. 17 de 1 taille et hauteur Définition On définit deux fonctions sur les arbres binaires : Le nombre de noeuds appelé Taille : Taille(Vide) = 0 Taille(Noeud(a0, a1)) = 1 + Taille(a0) + Taille(a1) Le nombre de noeuds du plus long chemin appelé Hauteur : Hauteur(Vide) = 0 Hauteur(Noeud(a0, a1)) = 1+max{Hauteur(a0), Hauteur(a1)}
  • 30. 18 de 1 Comparaison taille/hauteur Proposition Pour tout arbre binaire de taille n et de hauteur h : h 6 n 6 2h − 1 .
  • 31. 19 de 1 Noeuds Retenir Un noeud est dit interne s’il a deux fils non vide. Sinon il est dit externe. internes externes
  • 32. 20 de 1 Retenir Une branche relie un noeuds à l’un des deux sous-arbres. Une branche est soit la branche gauche soit la branche droite d’un nœud. Une branche est interne lorsqu’elle relie deux nœuds ; elle est externe dans le cas contraire. internes externes En conséquence de quoi : un nœud interne possède deux branches internes ; un nœud externe possède au moins une branche externe.
  • 33. 21 de 1 Nombre de branches Proposition Tout arbre binaire de n nœuds possède 2n branches. Plus précisément, lorsque n > 1, il possède n − 1 branches internes et n + 1 branches externes.
  • 34. 22 de 1 Retenir Un chemin de longueur k issu de a est un couple de la forme : (a, hb1, b2, . . . , bk i) pour lequel il existe t1, t2, . . . , tk tels que : en posant t0 = a, tj est le sous-arbre gauche ou droit de a0 j−1 selon que le bit de direction bj vaut 0 ou 1. On dit d’un tel chemin qu’il mène de a à tk . Le chemin de longueur nulle (a, hi) mène de a à lui-même. 0 1 0 1 0 1 0 1 0 1 chemin (a, h0, 1, 0, 0i) a = t0 t1 t2 t3 t4 Un chemin est interne lorsqu’il mène à un nœud ; il est externe sinon.
  • 35. 22 de 1 Retenir Un chemin de longueur k issu de a est un couple de la forme : (a, hb1, b2, . . . , bk i) pour lequel il existe t1, t2, . . . , tk tels que : en posant t0 = a, tj est le sous-arbre gauche ou droit de a0 j−1 selon que le bit de direction bj vaut 0 ou 1. On dit d’un tel chemin qu’il mène de a à tk . Le chemin de longueur nulle (a, hi) mène de a à lui-même. 0 1 0 1 0 1 0 1 0 1 chemin (a, h0, 1, 0, 0i) a = t0 t1 t2 t3 t4 Un chemin est interne lorsqu’il mène à un nœud ; il est externe sinon.
  • 36. 22 de 1 Retenir Un chemin de longueur k issu de a est un couple de la forme : (a, hb1, b2, . . . , bk i) pour lequel il existe t1, t2, . . . , tk tels que : en posant t0 = a, tj est le sous-arbre gauche ou droit de a0 j−1 selon que le bit de direction bj vaut 0 ou 1. On dit d’un tel chemin qu’il mène de a à tk . Le chemin de longueur nulle (a, hi) mène de a à lui-même. 0 1 0 1 0 1 0 1 0 1 chemin (a, h0, 1, 0, 0i) a = t0 t1 t2 t3 t4 Un chemin est interne lorsqu’il mène à un nœud ; il est externe sinon.
  • 37. 22 de 1 Retenir Un chemin de longueur k issu de a est un couple de la forme : (a, hb1, b2, . . . , bk i) pour lequel il existe t1, t2, . . . , tk tels que : en posant t0 = a, tj est le sous-arbre gauche ou droit de a0 j−1 selon que le bit de direction bj vaut 0 ou 1. On dit d’un tel chemin qu’il mène de a à tk . Le chemin de longueur nulle (a, hi) mène de a à lui-même. 0 1 0 1 0 1 0 1 0 1 chemin (a, h0, 1, 0, 0i) a = t0 t1 t2 t3 t4 Un chemin est interne lorsqu’il mène à un nœud ; il est externe sinon.
  • 38. 23 de 1 Proposition Pour tout nœud a0 d’un arbre binaire non vide a, il existe un unique chemin menant de la racine a de l’arbre au nœud a0. Proposition La hauteur d’un arbre binaire a est la longueur du plus long chemin issu de la racine a. Proposition Tout arbre binaire de n nœuds possède 2n + 1 chemins distincts issus de sa racine. Parmi ceux-là, n sont internes et n + 1 sont externes.
  • 39. 24 de 1 Définition Soit (a, hb1, b2, . . . , bki) le chemin menant de a à a0. Le numéro de a0 relativement à a, noté Numa(a0), est [1b1b2 . . . bk]2, l’entier dont l’écriture en base 2 est 1 b1 b2 . . . bk. Autrement dit : racine : 1 ; vers la gauche : ×2, +0 ; vers la droite : ×2, +1. below:8 15 above:4 below:9 4 above:2 below:40 33 above:20 below:82 3 above:41 below:83 9 above:10 below:42 11 above:21 below:43 28 above:5 below:22 7 above:11 below:23 21 above:1 below:12 25 above:6 below:52 12 above:26 below:212 29 above:106 below:213 15 above:53 below:107 7 above:13 below:27 6 above:3 below:14 5 above:7 below:15
  • 40. 24 de 1 Définition Soit (a, hb1, b2, . . . , bki) le chemin menant de a à a0. Le numéro de a0 relativement à a, noté Numa(a0), est [1b1b2 . . . bk]2, l’entier dont l’écriture en base 2 est 1 b1 b2 . . . bk. Autrement dit : racine : 1 ; vers la gauche : ×2, +0 ; vers la droite : ×2, +1. below:8 15 above:4 below:9 4 above:2 below:40 33 above:20 below:82 3 above:41 below:83 9 above:10 below:42 11 above:21 below:43 28 above:5 below:22 7 above:11 below:23 21 above:1 below:12 25 above:6 below:52 12 above:26 below:212 29 above:106 below:213 15 above:53 below:107 7 above:13 below:27 6 above:3 below:14 5 above:7 below:15
  • 41. 24 de 1 Définition Soit (a, hb1, b2, . . . , bki) le chemin menant de a à a0. Le numéro de a0 relativement à a, noté Numa(a0), est [1b1b2 . . . bk]2, l’entier dont l’écriture en base 2 est 1 b1 b2 . . . bk. Autrement dit : racine : 1 ; vers la gauche : ×2, +0 ; vers la droite : ×2, +1. below:8 15 above:4 below:9 4 above:2 below:40 33 above:20 below:82 3 above:41 below:83 9 above:10 below:42 11 above:21 below:43 28 above:5 below:22 7 above:11 below:23 21 above:1 below:12 25 above:6 below:52 12 above:26 below:212 29 above:106 below:213 15 above:53 below:107 7 above:13 below:27 6 above:3 below:14 5 above:7 below:15
  • 42. 25 de 1 Notion de parcours Retenir Un parcours est un algorithme qui appelle une fonction, méthode où procédure sur tous les noeuds (ou les sous arbres) d’un arbre. L’ordre sur les nœuds dans lequel la procédure est appelée doit être fixé. Il y a de nombreux choix possibles. Exemple de fonctions : affichage, liste des valeurs, accumulation. . . Retenir Un parcours est dit en profondeur lorsque, systématiquement, si l’arbre n’est pas vide, le parcours de l’un des deux sous-arbres est terminé avant que ne commence celui de l’autre.
  • 43. 25 de 1 Notion de parcours Retenir Un parcours est un algorithme qui appelle une fonction, méthode où procédure sur tous les noeuds (ou les sous arbres) d’un arbre. L’ordre sur les nœuds dans lequel la procédure est appelée doit être fixé. Il y a de nombreux choix possibles. Exemple de fonctions : affichage, liste des valeurs, accumulation. . . Retenir Un parcours est dit en profondeur lorsque, systématiquement, si l’arbre n’est pas vide, le parcours de l’un des deux sous-arbres est terminé avant que ne commence celui de l’autre.
  • 44. 25 de 1 Notion de parcours Retenir Un parcours est un algorithme qui appelle une fonction, méthode où procédure sur tous les noeuds (ou les sous arbres) d’un arbre. L’ordre sur les nœuds dans lequel la procédure est appelée doit être fixé. Il y a de nombreux choix possibles. Exemple de fonctions : affichage, liste des valeurs, accumulation. . . Retenir Un parcours est dit en profondeur lorsque, systématiquement, si l’arbre n’est pas vide, le parcours de l’un des deux sous-arbres est terminé avant que ne commence celui de l’autre.
  • 45. 26 de 1 Parcours préfixe, infixe, postfixe Parcours en profondeur de gauche à droite (on applique F sur tous les sous-arbres) : Préfixe : 1 application de F à la racine, 2 parcours préfixe du sous-arbre gauche, 3 parcours préfixe du sous-arbre droit. Infixe (ou symétrique) : 1 parcours infixe du sous-arbre gauche, 2 application de F à la racine, 3 parcours infixe du sous-arbre droit. Postfixe : 1 parcours postfixe du sous-arbre gauche, 2 parcours postfixe du sous-arbre droit, 3 application de F à la racine. Les parcours droite-gauche se déduisent par symétrie.
  • 46. 26 de 1 Parcours préfixe, infixe, postfixe Parcours en profondeur de gauche à droite (on applique F sur tous les sous-arbres) : Préfixe : 1 application de F à la racine, 2 parcours préfixe du sous-arbre gauche, 3 parcours préfixe du sous-arbre droit. Infixe (ou symétrique) : 1 parcours infixe du sous-arbre gauche, 2 application de F à la racine, 3 parcours infixe du sous-arbre droit. Postfixe : 1 parcours postfixe du sous-arbre gauche, 2 parcours postfixe du sous-arbre droit, 3 application de F à la racine. Les parcours droite-gauche se déduisent par symétrie.
  • 47. 27 de 1 Exemple Pour l’arbre : les ordres de traitement des nœuds sont, selon les parcours : 1 2 3 4 5 2 1 5 4 3 5 1 4 3 2 préfixe infixe postfixe
  • 48. 28 de 1 Parcours en largeur Retenir Un parcours est dit en largeur lorsqu’il procède en croissant selon les niveaux. Voici un parcourt en largeur de gauche à droite : 1 2 3 4 5 6 7
  • 49. 29 de 1 Algorithme de parcours en largeur Idée : on remplace la pile d’appels par une file d’attente dans l’algorithme de parcours préfixe. Algorithme Entrée : un arbre binaire a, une procédure f Effet : appelle f sur tous les sous arbres p <- FileVide() p <- Enfile(p, a) tant que non EstVideFile(p) faire ssa, p <- Defile(p) si non EstVide(ssa) f(ssa) p <- Enfile(p, SAG(ssa)) p <- Enfile(p, SAD(ssa))
  • 50. 30 de 1 Définition (Type abstrait arbre binaire valué ABinV(T)) Opérations : Videval : {} → ABinV(T) EstVideval : ABinV(T) → Booleen Noeudval : T × ABinV(T) × ABinV(T) → ABinV(T) SAGval , SADval : ABinV(T) → ABinV(T) Val : ABinV(T) → T Préconditions : SAD(t), SAG(t), Val(t) défini seulement si non EstVide(t) Axiomes : EstVide(Vide()) = VRAI EstVide(Noeud(v, g, d)) = FAUX SAG(Noeud(v, g, d)) = g SAD(Noeud(v, g, d)) = d Val(Noeud(v, g, d)) = v Noeud(Val(t), SAG(t), SAD(t)) = t si non EstVide(t).
  • 51. 31 de 1 Arbres valués et non valués Retenir Les définitions de taille, hauteur, chemin, interne, externe et numéro s’applique également pour les arbres binaires valués. Définition (Forme d’une arbre binaire valués) On défini récursivement la forme d’un binaire valués par Forme : ABinV(T) → ABin ; Forme(Videval ()) = Vide() ; Forme(Noeudval (v, g, d)) = Noeud(Forme(g), Forme(d)).
  • 52. 32 de 1 Arbres binaires de recherche Définition Un arbre binaire de recherche (ABR ; ou arbre binaire ordonné, ABO) est un ABV qui, s’il n’est pas vide, est tel que : ses sous-arbres gauche et droit sont des ABR ; les valeurs des nœuds du sous-arbre gauche sont strictement inférieures à la valeur du nœud-racine de l’arbre ; les valeurs des nœuds du sous-arbre droit sont strictement supérieures à la valeur du nœud-racine de l’arbre. Les valeurs des nœuds dans un ABR sont donc deux à deux distinctes. Autrement dit, la qualitificatif « ordonné » est à prendre au sens strict.
  • 53. 32 de 1 Arbres binaires de recherche Définition Un arbre binaire de recherche (ABR ; ou arbre binaire ordonné, ABO) est un ABV qui, s’il n’est pas vide, est tel que : ses sous-arbres gauche et droit sont des ABR ; les valeurs des nœuds du sous-arbre gauche sont strictement inférieures à la valeur du nœud-racine de l’arbre ; les valeurs des nœuds du sous-arbre droit sont strictement supérieures à la valeur du nœud-racine de l’arbre. Les valeurs des nœuds dans un ABR sont donc deux à deux distinctes. Autrement dit, la qualitificatif « ordonné » est à prendre au sens strict.
  • 54. 33 de 1 Exemple d’arbre binaire de recherche 3 4 6 7 9 11 12 15 22 25 28 29 30 31 33 48 croissance stricte
  • 55. 34 de 1 ABR et ordre infixe Théorème (caractérisation rapide des ABR) Un ABV est un ABR si seulement si la liste des valeurs des nœuds établie dans l’ordre infixe est strictement croissante. Exemple Avec T = Naturel, l’ABV : 2 4 7 12 20 est un ABR. La liste des valeurs de ses nœuds, établie dans l’ordre infixe, est strictement croissante : h2, 4, 7, 12, 20i.
  • 56. 34 de 1 ABR et ordre infixe Théorème (caractérisation rapide des ABR) Un ABV est un ABR si seulement si la liste des valeurs des nœuds établie dans l’ordre infixe est strictement croissante. Exemple Avec T = Naturel, l’ABV : 2 4 7 12 20 est un ABR. La liste des valeurs de ses nœuds, établie dans l’ordre infixe, est strictement croissante : h2, 4, 7, 12, 20i.
  • 57. 35 de 1 Opérations sur les ABR On veux implanter les opérations suivantes : recherche d’un élément : EstDansABR ; insertion d’un élément : InsertABR ; suppression d’un élément : SupprimeABR ; rotation (rééquilibrage). Note : il y a plusieurs manières d’insérer et de supprimer un éléments. D’autre opérations plus complexes existent (fusion, partition).
  • 58. 35 de 1 Opérations sur les ABR On veux implanter les opérations suivantes : recherche d’un élément : EstDansABR ; insertion d’un élément : InsertABR ; suppression d’un élément : SupprimeABR ; rotation (rééquilibrage). Note : il y a plusieurs manières d’insérer et de supprimer un éléments. D’autre opérations plus complexes existent (fusion, partition).
  • 59. 35 de 1 Opérations sur les ABR On veux implanter les opérations suivantes : recherche d’un élément : EstDansABR ; insertion d’un élément : InsertABR ; suppression d’un élément : SupprimeABR ; rotation (rééquilibrage). Note : il y a plusieurs manières d’insérer et de supprimer un éléments. D’autre opérations plus complexes existent (fusion, partition).
  • 60. 36 de 1 Recherche d’un élément dans un ABR Algorithme (EstDansABR) Entrée : un ABR a et un élément e Sortie : VRAI si e apparaît dans a, FAUX sinon si EstVide(a) alors retourner FAUX sinon si e = Val(a) alors retourner VRAI sinon si e < Val(a) alors retourner EstDansABR(SAG(A)) sinon retourner EstDansABR(SAD(A)) ⇒ Complexité : O(Hauteur(a)) ⊆ O(Taille(a)).
  • 61. 37 de 1 Insersion aux feuilles Algorithme (InsertABR) Entrée : un ABR a et un élément e Sortie : un ABR a0 si EstVide(a) alors retourner Noeud(a, Vide(), Vide()) sinon si e = Val(a) alors retourner a sinon si e < Val(a) alors retourner Noeud(Val(a), InsertABR(SAG(a)), SAD(a)) sinon retourner Noeud(Val(a), SAG(a), InsertABR(SAD(a))) ⇒ Complexité : O(Hauteur(a)) ⊆ O(Taille(a)).
  • 62. 38 de 1 Correction de InsertABR Proposition Soit a ∈ ABR(T) un ABR et e ∈ T un élément. Soit a0 = InsertABR(a, e). Alors, pour tout x ∈ T on a EstDansABR(a0 , x) = EstDansABR(a, x) ou (e = x) . Autrement dit, Valeurs(a0 ) = Valeurs(a) ∪ {e} où Valeurs(a) désigne l’ensemble des valeurs qui apparaissent dans l’arbre a.
  • 63. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide :
  • 64. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 4
  • 65. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 4 20
  • 66. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 4 12 20
  • 67. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 2 4 12 20
  • 68. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 2 4 7 12 20
  • 69. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 2 3 4 7 12 20
  • 70. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 2 3 4 6 7 12 20
  • 71. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 0 2 3 4 6 7 12 20
  • 72. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 0 2 3 4 6 7 12 15 20
  • 73. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 0 1 2 3 4 6 7 12 15 20
  • 74. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 0 1 2 3 4 6 7 12 13 15 20
  • 75. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 0 1 2 3 4 6 7 12 13 14 15 20
  • 76. 39 de 1 Exemples d’insertions Exemple Insertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dans l’ABR vide : 0 1 2 3 4 6 7 12 13 14 15 20
  • 77. 40 de 1 Bilan On a donc une structure de donnée pour laquelle les coût de l’insertion et la recherche sont en O(Hauteur(a)) : Retenir Dans le pire des cas (arbre filiforme), le coût est en O(Taille(a)). En moyenne, le coût est en O(log(Taille(a))). De plus, en utilisant la rotation (voir G.M. Adelson-Velskii et E.M. Landis 1962, arbre AVL, arbre rouge-noir), on peut s’assurer que Hauteur(a) reste inférieur à logΦ(n + 2) − 1 ≈ 1.44 log2(n + 2) − 1 où Φ = 1+ √ 5 2 est le nombre d’or et n = Taille(a).
  • 78. 41 de 1 Arbres équilibrés Définition L’équilibre d’un arbre binaire est un entier qui vaut 0 si l’arbre est vide et la différence des hauteurs des sous-arbres gauche et droit de l’arbre sinon. Un arbre binaire est équilibré lorsque l’équilibre de chacun de ses sous-arbres non vides n’excède pas 1 en valeur absolue.
  • 79. 41 de 1 Arbres équilibrés Définition L’équilibre d’un arbre binaire est un entier qui vaut 0 si l’arbre est vide et la différence des hauteurs des sous-arbres gauche et droit de l’arbre sinon. Un arbre binaire est équilibré lorsque l’équilibre de chacun de ses sous-arbres non vides n’excède pas 1 en valeur absolue.
  • 80. 42 de 1 Exemple L’équilibre de chacun des sous-arbres non vides est indiqué sur la gauche ou la droite de son nœud-racine : +1 −1 0 0 −1 +1 0 −1 0 −1 0 équilibré équilibré +4 −3 +2 −1 0 +1 +2 −1 0 0 0 0 non équilibré non équilibré
  • 81. 43 de 1 Rotations a b A B C rotation droite − − − − − − − − − − → ← − − − − − − − − − − rotation gauche a b A B C Proposition Après une insertion où une suppression, il suffit de deux rotations pour ré-équilibrer un arbre. Le maintient de l’équilibre est possible en temps constant.