algorithmique les arbres
TRANSCRIPT
![Page 1: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/1.jpg)
1 de 1
AlgorithmiqueLes arbres
Florent Hivert
Mél : [email protected] personnelle : http://www.lri.fr/˜hivert
![Page 2: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/2.jpg)
2 de 1
Algorithmes et structures de données
La plupart des bons algorithmes fonctionnent grâce à une méthodeastucieuse pour organiser les données. Nous allons étudier quatregrandes 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.
![Page 3: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/3.jpg)
3 de 1
Problème de la recherche
On aimerai avoir une structure de donnée où l’insertion et larecherche 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)
![Page 4: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/4.jpg)
4 de 1
Représentations graphiques d’arbres binaires et vocabulaire
154
333
911
287
21
25
12
2915
7
65
nœuds
branches
une branche gaucheune branche droite
valeurs
Ici :arbre, nœuds, branches ;arbre binaire, branches gauches, branches droites ;valeurs (ou étiquettes) des nœuds.
![Page 5: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/5.jpg)
4 de 1
Représentations graphiques d’arbres binaires et vocabulaire
154
333
911
287
21
25
12
2915
7
65
nœuds
branches
une branche gaucheune branche droite
valeurs
Ici :arbre, nœuds, branches ;arbre binaire, branches gauches, branches droites ;valeurs (ou étiquettes) des nœuds.
![Page 6: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/6.jpg)
4 de 1
Représentations graphiques d’arbres binaires et vocabulaire
154
333
911
287
21
25
12
2915
7
65
nœuds
branches
une branche gaucheune branche droite
valeurs
Ici :arbre, nœuds, branches ;arbre binaire, branches gauches, branches droites ;valeurs (ou étiquettes) des nœuds.
![Page 7: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/7.jpg)
5 de 1
Définition récursive
154
333
911
287
21
25
12
2915
7
65
nœud-racine
arbre videsous-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.
![Page 8: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/8.jpg)
5 de 1
Définition récursive
154
333
911
287
21
25
12
2915
7
65
nœud-racine
arbre videsous-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.
![Page 9: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/9.jpg)
5 de 1
Définition récursive
154
333
911
287
21
25
12
2915
7
65
nœud-racine
arbre videsous-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.
![Page 10: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/10.jpg)
6 de 1
Arbres binaires étendus
a15
v
4
e33
c3
-
9
d11
e
28
s7
-
21
f25
e12
u29
i
15l
7l
6
e5
s
feuilles
Ici :feuilles ;notion récursive d’arbre binaire étendu.
![Page 11: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/11.jpg)
6 de 1
Arbres binaires étendus
a15
v
4
e33
c3
-
9
d11
e
28
s7
-
21
f25
e12
u29
i
15l
7l
6
e5
s
feuilles
Ici :feuilles ;notion récursive d’arbre binaire étendu.
![Page 12: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/12.jpg)
7 de 1
Vocabulaire
hauteur
taille
Ici :structure d’arbre binaire ;dimensions : taille, hauteur ;équilibre ;chemin issu de la racine, longueur d’un chemin.
![Page 13: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/13.jpg)
7 de 1
Vocabulaire
hauteur
taille
Ici :structure d’arbre binaire ;dimensions : taille, hauteur ;équilibre ;chemin issu de la racine, longueur d’un chemin.
![Page 14: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/14.jpg)
7 de 1
Vocabulaire
hauteur
taille
Ici :structure d’arbre binaire ;dimensions : taille, hauteur ;équilibre ;chemin issu de la racine, longueur d’un chemin.
![Page 15: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/15.jpg)
7 de 1
Vocabulaire
hauteur
taille
Ici :structure d’arbre binaire ;dimensions : taille, hauteur ;équilibre ;chemin issu de la racine, longueur d’un chemin.
![Page 16: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/16.jpg)
8 de 1
Arbre binaire de recherche
34
67
911
1215
22
25
28
2930
31
3348
croissance stricte
Ici :arbre binaire de recherche (ou ordonné) ;parcours infixe (ou symétrique) ;recherche, insertion, suppression.
![Page 17: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/17.jpg)
8 de 1
Arbre binaire de recherche
34
67
911
1215
22
25
28
2930
31
3348
croissance stricte
Ici :arbre binaire de recherche (ou ordonné) ;parcours infixe (ou symétrique) ;recherche, insertion, suppression.
![Page 18: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/18.jpg)
8 de 1
Arbre binaire de recherche
34
67
911
1215
22
25
28
2930
31
3348
croissance stricte
Ici :arbre binaire de recherche (ou ordonné) ;parcours infixe (ou symétrique) ;recherche, insertion, suppression.
![Page 19: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/19.jpg)
9 de 1
Arbre Tournoi
65
2125
1215
1148
3
7
9
2815
7
429
croissancelarge
Ici :arbre tournoi ;minimum, insertion, suppression du minimum.
![Page 20: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/20.jpg)
9 de 1
Arbre Tournoi
65
2125
1215
1148
3
7
9
2815
7
429
croissancelarge
Ici :arbre tournoi ;minimum, insertion, suppression du minimum.
![Page 21: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/21.jpg)
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.
![Page 22: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/22.jpg)
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 tamponsavec priorité.
![Page 23: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/23.jpg)
12 de 1
Spécification formelle
Définition (Type abstrait ABin)Opérations :
Vide : {} → ABinNoeud : ABin×ABin→ ABinEstVide : ABin→ BooleenSAG, SAD : ABin→ ABin
Préconditions :SAD(t), SAG(t) défini seulement si non EstVide(t)
Axiomes :EstVide(Vide()) = VRAI EstVide(Noeud(g , d)) = FAUXSAG(Noeud(g , d)) = g SAD(Noeud(g , d)) = dNoeud(SAG(t), SAD(t)) = t si non EstVide(t).
![Page 24: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/24.jpg)
13 de 1
Voici la liste de tous les arbres jusqu’à la taille 3 :
![Page 25: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/25.jpg)
13 de 1
Voici la liste de tous les arbres jusqu’à la taille 3 :
![Page 26: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/26.jpg)
14 de 1
Voici la liste de tous les arbres de taille 4 :
![Page 27: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/27.jpg)
15 de 1
Liste de tous les arbres à n Nœuds
Algorithme
Entrée : un entier positif ou nul nSortie : une liste d’arbres
res <- listeVide()si n = 0 alors
ajoute(res, arbreVide())retourner res
pour i de 0 à n-1 fairelg <- ALGO(i); ld <- ALGO(n-1-i)pour g dans lg faire
pour d dans ld faireajoute(res, Noeud(g,d))
retourner res
![Page 28: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/28.jpg)
16 de 1
Nombre de Catalan
PropositionLe nombre d’arbres binaires à n nœuds est appelé n-ième nombrede Catalan noté Cn. Les nombre de Catalan vérifient la récurrence :
C0 = 1 Cn =n−1∑i=0
CiCn−1−i .
On en déduitCn = (2n)!
n!(n + 1)! .
Voici les premières valeurs :
C0 = 1, C1 = 1, C2 = 2, C3 = 5, C4 = 14, C5 = 42, c6 = 132 .
![Page 29: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/29.jpg)
17 de 1
taille et hauteur
DéfinitionOn définit deux fonctions sur les arbres binaires :Le nombre de noeuds appelé Taille :
Taille(Vide) = 0Taille(Noeud(a0, a1)) = 1 + Taille(a0) + Taille(a1)
Le nombre de noeuds du plus long chemin appelé Hauteur :Hauteur(Vide) = 0Hauteur(Noeud(a0, a1)) = 1+max{Hauteur(a0), Hauteur(a1)}
![Page 30: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/30.jpg)
18 de 1
Comparaison taille/hauteur
PropositionPour tout arbre binaire de taille n et de hauteur h :
h 6 n 6 2h − 1 .
![Page 31: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/31.jpg)
19 de 1
Noeuds
RetenirUn noeud est dit interne s’il a deux fils non vide. Sinon il est ditexterne.
internes
externes
![Page 32: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/32.jpg)
20 de 1
RetenirUne branche relie un noeuds à l’un des deux sous-arbres. Unebranche est soit la branche gauche soit la branche droite d’unnœud.Une branche est interne lorsqu’elle relie deux nœuds ; elle estexterne 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.
![Page 33: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/33.jpg)
21 de 1
Nombre de branches
PropositionTout arbre binaire de n nœuds possède 2n branches.Plus précisément, lorsque n > 1, il possède n − 1 branches interneset n + 1 branches externes.
![Page 34: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/34.jpg)
22 de 1
RetenirUn chemin de longueur k issu de a est un couple de la forme :
(a, 〈b1, b2, . . . , bk〉)
pour lequel il existe t1, t2, . . . , tk tels que :
en posant t0 = a, tj est le sous-arbre gauche ou droit de a′j−1 selonque 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, 〈〉) mène de a à lui-même.
0 1
0 1
0 10 1
0 1
chemin (a, 〈0, 1, 0, 0〉)
a = t0
t1
t2
t3
t4
Un chemin est interne lorsqu’il mène à un nœud ; il est externe sinon.
![Page 35: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/35.jpg)
22 de 1
RetenirUn chemin de longueur k issu de a est un couple de la forme :
(a, 〈b1, b2, . . . , bk〉)
pour lequel il existe t1, t2, . . . , tk tels que :
en posant t0 = a, tj est le sous-arbre gauche ou droit de a′j−1 selonque 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, 〈〉) mène de a à lui-même.
0 1
0 1
0 10 1
0 1
chemin (a, 〈0, 1, 0, 0〉)
a = t0
t1
t2
t3
t4
Un chemin est interne lorsqu’il mène à un nœud ; il est externe sinon.
![Page 36: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/36.jpg)
22 de 1
RetenirUn chemin de longueur k issu de a est un couple de la forme :
(a, 〈b1, b2, . . . , bk〉)
pour lequel il existe t1, t2, . . . , tk tels que :
en posant t0 = a, tj est le sous-arbre gauche ou droit de a′j−1 selonque 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, 〈〉) mène de a à lui-même.
0 1
0 1
0 10 1
0 1
chemin (a, 〈0, 1, 0, 0〉)
a = t0
t1
t2
t3
t4
Un chemin est interne lorsqu’il mène à un nœud ; il est externe sinon.
![Page 37: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/37.jpg)
22 de 1
RetenirUn chemin de longueur k issu de a est un couple de la forme :
(a, 〈b1, b2, . . . , bk〉)
pour lequel il existe t1, t2, . . . , tk tels que :
en posant t0 = a, tj est le sous-arbre gauche ou droit de a′j−1 selonque 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, 〈〉) mène de a à lui-même.
0 1
0 1
0 10 1
0 1
chemin (a, 〈0, 1, 0, 0〉)
a = t0
t1
t2
t3
t4
Un chemin est interne lorsqu’il mène à un nœud ; il est externe sinon.
![Page 38: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/38.jpg)
23 de 1
PropositionPour tout nœud a′ d’un arbre binaire non vide a, il existe ununique chemin menant de la racine a de l’arbre au nœud a′.
PropositionLa hauteur d’un arbre binaire a est la longueur du plus long cheminissu de la racine a.
PropositionTout arbre binaire de n nœuds possède 2n + 1 chemins distinctsissus de sa racine. Parmi ceux-là, n sont internes et n + 1 sontexternes.
![Page 39: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/39.jpg)
24 de 1
DéfinitionSoit (a, 〈b1, b2, . . . , bk〉) le chemin menant de a à a′.Le numéro de a′ relativement à a, noté Numa(a′), 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:815above:4
below:9
4above:2
below:4033
above:20
below:823
above:41
below:83
9above:10
below:4211
above:21
below:43
28above:5
below:227
above:11
below:23
21above:1
below:1225
above:6
below:5212
above:26
below:21229
above:106
below:213
15above:53
below:107
7above:13
below:27
6above:3
below:145
above:7
below:15
![Page 40: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/40.jpg)
24 de 1
DéfinitionSoit (a, 〈b1, b2, . . . , bk〉) le chemin menant de a à a′.Le numéro de a′ relativement à a, noté Numa(a′), 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:815above:4
below:9
4above:2
below:4033
above:20
below:823
above:41
below:83
9above:10
below:4211
above:21
below:43
28above:5
below:227
above:11
below:23
21above:1
below:1225
above:6
below:5212
above:26
below:21229
above:106
below:213
15above:53
below:107
7above:13
below:27
6above:3
below:145
above:7
below:15
![Page 41: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/41.jpg)
24 de 1
DéfinitionSoit (a, 〈b1, b2, . . . , bk〉) le chemin menant de a à a′.Le numéro de a′ relativement à a, noté Numa(a′), 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:815above:4
below:9
4above:2
below:4033
above:20
below:823
above:41
below:83
9above:10
below:4211
above:21
below:43
28above:5
below:227
above:11
below:23
21above:1
below:1225
above:6
below:5212
above:26
below:21229
above:106
below:213
15above:53
below:107
7above:13
below:27
6above:3
below:145
above:7
below:15
![Page 42: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/42.jpg)
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éedoit être fixé. Il y a de nombreux choix possibles.
Exemple de fonctions : affichage, liste des valeurs, accumulation. . .
RetenirUn parcours est dit en profondeur lorsque, systématiquement, sil’arbre n’est pas vide, le parcours de l’un des deux sous-arbres estterminé avant que ne commence celui de l’autre.
![Page 43: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/43.jpg)
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éedoit être fixé. Il y a de nombreux choix possibles.
Exemple de fonctions : affichage, liste des valeurs, accumulation. . .
RetenirUn parcours est dit en profondeur lorsque, systématiquement, sil’arbre n’est pas vide, le parcours de l’un des deux sous-arbres estterminé avant que ne commence celui de l’autre.
![Page 44: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/44.jpg)
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éedoit être fixé. Il y a de nombreux choix possibles.
Exemple de fonctions : affichage, liste des valeurs, accumulation. . .
RetenirUn parcours est dit en profondeur lorsque, systématiquement, sil’arbre n’est pas vide, le parcours de l’un des deux sous-arbres estterminé avant que ne commence celui de l’autre.
![Page 45: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/45.jpg)
26 de 1
Parcours préfixe, infixe, postfixe
Parcours en profondeur de gauche à droite (on applique F sur tousles 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.
![Page 46: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/46.jpg)
26 de 1
Parcours préfixe, infixe, postfixe
Parcours en profondeur de gauche à droite (on applique F sur tousles 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.
![Page 47: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/47.jpg)
27 de 1
ExemplePour l’arbre :
les ordres de traitement des nœuds sont, selon les parcours :
12 3
45
21 5
43
51 4
32
préfixe infixe postfixe
![Page 48: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/48.jpg)
28 de 1
Parcours en largeur
RetenirUn parcours est dit en largeur lorsqu’il procède en croissant selonles niveaux.
Voici un parcourt en largeur de gauche à droite :
12 3
4 5 67
![Page 49: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/49.jpg)
29 de 1
Algorithme de parcours en largeurIdée : on remplace la pile d’appels par une file d’attente dansl’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))
![Page 50: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/50.jpg)
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).
![Page 51: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/51.jpg)
31 de 1
Arbres valués et non valués
RetenirLes définitions de taille, hauteur, chemin, interne, externe etnumé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)).
![Page 52: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/52.jpg)
32 de 1
Arbres binaires de recherche
DéfinitionUn 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 strictementinférieures à la valeur du nœud-racine de l’arbre ;les valeurs des nœuds du sous-arbre droit sont strictementsupérieures à la valeur du nœud-racine de l’arbre.
Les valeurs des nœuds dans un ABR sont donc deux à deuxdistinctes. Autrement dit, la qualitificatif « ordonné » est à prendreau sens strict.
![Page 53: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/53.jpg)
32 de 1
Arbres binaires de recherche
DéfinitionUn 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 strictementinférieures à la valeur du nœud-racine de l’arbre ;les valeurs des nœuds du sous-arbre droit sont strictementsupérieures à la valeur du nœud-racine de l’arbre.
Les valeurs des nœuds dans un ABR sont donc deux à deuxdistinctes. Autrement dit, la qualitificatif « ordonné » est à prendreau sens strict.
![Page 54: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/54.jpg)
33 de 1
Exemple d’arbre binaire de recherche
34
67
911
1215
22
25
28
2930
31
3348
croissance stricte
![Page 55: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/55.jpg)
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
AvecT = Naturel,l’ABV :
24
712
20
est un ABR. La liste desvaleurs de ses nœuds,établie dans l’ordreinfixe, est strictementcroissante :〈2, 4, 7, 12, 20〉.
![Page 56: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/56.jpg)
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
AvecT = Naturel,l’ABV :
24
712
20
est un ABR. La liste desvaleurs de ses nœuds,établie dans l’ordreinfixe, est strictementcroissante :〈2, 4, 7, 12, 20〉.
![Page 57: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/57.jpg)
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).
![Page 58: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/58.jpg)
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).
![Page 59: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/59.jpg)
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).
![Page 60: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/60.jpg)
36 de 1
Recherche d’un élément dans un ABR
Algorithme (EstDansABR)
Entrée : un ABR a et un élément eSortie : VRAI si e apparaît dans a, FAUX sinon
si EstVide(a) alorsretourner FAUX
sinon si e = Val(a) alorsretourner VRAI
sinon si e < Val(a) alorsretourner EstDansABR(SAG(A))
sinonretourner EstDansABR(SAD(A))
⇒ Complexité : O(Hauteur(a)) ⊆ O(Taille(a)).
![Page 61: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/61.jpg)
37 de 1
Insersion aux feuilles
Algorithme (InsertABR)
Entrée : un ABR a et un élément e
Sortie : un ABR a′
si EstVide(a) alorsretourner Noeud(a, Vide(), Vide())
sinon si e = Val(a) alorsretourner a
sinon si e < Val(a) alorsretourner Noeud(Val(a), InsertABR(SAG(a)), SAD(a))
sinonretourner Noeud(Val(a), SAG(a), InsertABR(SAD(a)))
⇒ Complexité : O(Hauteur(a)) ⊆ O(Taille(a)).
![Page 62: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/62.jpg)
38 de 1
Correction de InsertABR
PropositionSoit a ∈ ABR(T ) un ABR et e ∈ T un élément. Soita′ = InsertABR(a, e). Alors, pour tout x ∈ T on a
EstDansABR(a′, x) = EstDansABR(a, x) ou (e = x) .
Autrement dit,
Valeurs(a′) = Valeurs(a) ∪ {e}
où Valeurs(a) désigne l’ensemble des valeurs qui apparaissent dansl’arbre a.
![Page 63: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/63.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
![Page 64: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/64.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
4
![Page 65: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/65.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
420
![Page 66: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/66.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
4
1220
![Page 67: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/67.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
24
1220
![Page 68: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/68.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
24
712
20
![Page 69: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/69.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
23
4
712
20
![Page 70: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/70.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
23
4
67
1220
![Page 71: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/71.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
02
3
4
67
1220
![Page 72: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/72.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
02
3
4
67
1215
20
![Page 73: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/73.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
01
23
4
67
1215
20
![Page 74: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/74.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
01
23
4
67
12
1315
20
![Page 75: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/75.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
01
23
4
67
12
1314
15
20
![Page 76: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/76.jpg)
39 de 1
Exemples d’insertions
ExempleInsertions successives de 4, 20, 12, 2, 7, 3, 6, 0, 15, 1, 13, 14 dansl’ABR vide :
01
23
4
67
12
1314
15
20
![Page 77: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/77.jpg)
40 de 1
BilanOn a donc une structure de donnée pour laquelle les coût del’insertion et la recherche sont en O(Hauteur(a)) :
Retenir
Dans le pire des cas (arbre filiforme), le coût est enO(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 queHauteur(a) reste inférieur à
logΦ(n + 2)− 1 ≈ 1.44 log2(n + 2)− 1
où Φ = 1+√
52 est le nombre d’or et n = Taille(a).
![Page 78: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/78.jpg)
41 de 1
Arbres équilibrés
DéfinitionL’équilibre d’un arbre binaire est un entier qui vaut 0 si l’arbre estvide et la différence des hauteurs des sous-arbres gauche et droitde l’arbre sinon.
Un arbre binaire est équilibré lorsque l’équilibre de chacun de sessous-arbres non vides n’excède pas 1 en valeur absolue.
![Page 79: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/79.jpg)
41 de 1
Arbres équilibrés
DéfinitionL’équilibre d’un arbre binaire est un entier qui vaut 0 si l’arbre estvide et la différence des hauteurs des sous-arbres gauche et droitde l’arbre sinon.
Un arbre binaire est équilibré lorsque l’équilibre de chacun de sessous-arbres non vides n’excède pas 1 en valeur absolue.
![Page 80: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/80.jpg)
42 de 1
ExempleL’équilibre de chacun des sous-arbres non vides est indiqué sur lagauche ou la droite de son nœud-racine :
+1−1
00
−1+1
0−1
0 −10
équilibré équilibré
+4−3
+2−1
0
+1+2
−10
00 0
non équilibré non équilibré
![Page 81: Algorithmique Les arbres](https://reader031.vdocuments.net/reader031/viewer/2022022418/58a2d59e1a28ab2e3b8bc090/html5/thumbnails/81.jpg)
43 de 1
Rotations
ab
A BC
rotation droite−−−−−−−−−−→←−−−−−−−−−−rotation gauche
ab
AB C
PropositionAprès une insertion où une suppression, il suffit de deux rotationspour ré-équilibrer un arbre. Le maintient de l’équilibre est possibleen temps constant.