Algorithmique Les arbres

81
1 de 1 Algorithmique Les arbres Florent Hivert Mél : [email protected] Page personnelle : http://www.lri.fr/˜hivert

Transcript of Algorithmique Les arbres

Page 1: Algorithmique Les arbres

1 de 1

AlgorithmiqueLes arbres

Florent Hivert

Mél : [email protected] personnelle : http://www.lri.fr/˜hivert

Page 2: Algorithmique Les arbres

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

13 de 1

Voici la liste de tous les arbres jusqu’à la taille 3 :

Page 25: Algorithmique Les arbres

13 de 1

Voici la liste de tous les arbres jusqu’à la taille 3 :

Page 26: Algorithmique Les arbres

14 de 1

Voici la liste de tous les arbres de taille 4 :

Page 27: Algorithmique Les arbres

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.