Télécharger la présentation
1
Algorithmique et Conception Objet
Structures de Données2 Algorithmique et Conception Objet
2
Chapitre III Conteneurs arborescents
définition notation et représentations algorithmes fondamentaux conclusion Structures de Données, 2
3
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion La structure d’arbre est une structure de données primordiale en informatique. Diverses variantes sont utilisées : arbres binaires, arbres binaires complets, arbres généralisés, forêts d’arbres, etc … De nombreuses informations peuvent être organisées sous forme arborescente : un arbre généalogique, un dictionnaire, une structure syntaxique, théorie des langages, compilation, etc ... Structures de Données, 3
4
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Représentation d’une relation d’inclusion entre plusieurs ensembles peut être représentée par un arbre. B A C F E D G H I J A B C D E F G I J H Structures de Données, 4
5
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Un type structuré dans tout langage de programmation peut être représentée sous forme d ’une arbre Etudiant Inscription Identité Date Naissance Lieu Naissance Université Lieu Nom Prénom Ville Département Jour Mois An Ville Département Structures de Données, 5
6
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Une expression arithmétique peut se représenter sous forme d ’une arborescence. Par exemple, en utilisant les priorités d’opérateurs usuelles, l’expression A+(B-1)*5 a pour représentation : + A * - 5 B 1 Structures de Données, 6
7
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion On peut, pour des raisons d’économie de place dans la représentation, mettre en facteur les préfixes communs des mots et construire ainsi un dictionnaire arborescent. Par exemple, le dictionnaire composé des mots [art, article, artiste, cou, cour, couteau, couve, couvent, couver] peut se représenter par : * art cle * i ste * ? * * r * cou nt * teau r * ve Structures de Données, 7
8
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Remarque On a constaté que les schémas récursifs simplifiaient beaucoup l’écriture d’algorithmes sur les listes chaînées. On utilisait pour cela, la définition récursive suivante : une liste est soit vide, soit constituée d’un élément chaîné à une liste. Il en va de même pour les arbres, où on peut donner la définition suivante : un arbre est soit vide soit constitué d’un élément auquel sont chaînés un ou plusieurs arbres. Structures de Données, 8
9
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Terminologie A B C D E F Chaque sommet ou nœud (A, B, C, D, E, F) possède une certain nombre de fils (B et C pour A). Inversement, A est le père de B et de C. Lorsqu’un nœud n’a pas de fils (D, E ou F), on dit que c’est une feuille de l’arbre ou encore un nœud terminal. Le nœud particulier A qui n ’a pas de père, est appelé racine. Une liaison entre deux nœuds est appelée arc ou branche. Tous nœuds, sauf la racine, n’ont qu’un seul père. Structures de Données, 9
10
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Terminologie B C D E F sont appelés des sous-arbres de l ’arbre présenté précédemment Structures de Données, 10
11
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Arbre n-aire, arbre binaire Un arbre qui admet pour chaque nœud, au plus n fils, l’arbre est dit n-aire. Pour n égal à deux, l’arbre est dit binaire. Les arbres généraux (arbres n-aire, n > 2) peuvent être représentés par des arbres binaires équivalents. Etude des ARBRES BINAIRES Pour les arbres binaires, on parlera de fils gauche et de fils droit ainsi que de sous-arbre gauche et de sous-arbre droit. Structures de Données, 11
12
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Arbre n-aire, arbre binaire Les algorithmes travaillant sur les arbres sont pour beaucoup d’entre eux des algorithmes récursifs. D’une écriture plus concise et naturelle (qu’une forme itérative), ils utilisent la définition suivante : un arbre binaire est soit vide soit composé d’un élément auquel sont chaînés un sous-arbres gauche et un sous-arbre droit (un sous-arbre est un arbre binaire). Structures de Données, 12
13
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Représentation d ’un Arbre binaire A B C D E F Graphique Parenthésée / Parenthésée compacte A ( B ( C ( ( ), ( ) ), D ( ( ) , ( ) ), E ( ( ), F ( ( ), ( ) ) ) ) A ( B ( C, D ), E ( , F ) ) Structures de Données, 13
14
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Numérotation de Dewey Pour tracer un parcours ou, plus généralement, un algorithme sur un arbre, on peut numéroter chaque nœud comme suit : la racine est numérotée 1, le sous-arbre gauche est numéroté 1, le sous-arbre droit est numéroté 2, les numéros sont séparés par des points. Structures de Données, 14
15
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Numérotation de Dewey Exemple : Pour l’arbre A ( B (C, D), E (, F (G, H(I, J)))) 1 A 1.1 B 1.1.1 C 1.1.2 D 1.2 E 1.2.2 F G H I J Structures de Données, 15
16
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Primitives d’accès Il est possible de choisir comme primitives les actions qui permettent d’accéder à la valeur, au fils gauche et au fils droit d’un nœud. On peut également choisir au autre jeu de primitives aussi naturelles, par exemple à la valeur, au fils et au frère d’un nœud. valeur A B C Fils gauche Fils droit Fils Frère Structures de Données, 16
17
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Représentation chaînée Racine A B F C G D E H L ’arbre A (B (C (D, E)), F (, G (H))) Structures de Données, 17
18
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Représentation d’un nœud On définit un nœud (sommet) dans le cas d’un arbre binaire, comme un triplet composé d’une information de type X et de deux pointeurs (nœud de élément de X) contenant l’adresse des fils gauche et droit. Nœud de X Adresse Pointeur de Nœud de X Adresse Pointeur de Nœud de X X Structures de Données, 18
19
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Niveau des nœuds On dit que deux nœuds sont à un même niveau dans un arbre, s’ils sont issus d’un même nœud après le même nombre de filiations. A B C D E F G D, E et F sont situés au même niveau. Ils « descendent » de A après deux filiations. Structures de Données, 19
20
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Niveau des nœuds On peut donner la définition suivante : le niveau de la racine de l’arbre est égal à un, le niveau d’un nœud, autre que la racine, est égal au niveau de son père plus un. On peut écrire des algorithmes de parcours d’un arbre en passant par tous les nœuds situés à un même niveau. Si on part de la racine et l’on traite tous les nœuds situés au niveau 2, puis tous les nœuds situés au niveau 3, etc … on dit qu’on utilise un parcours descendant par niveaux (ou en largeur). Structures de Données, 20
21
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Mot des feuilles d’un arbre binaire Le mot des feuilles d ’un arbre binaire est la chaîne formée, de gauche à droite, de la valeur des feuilles de l’arbre. A B C D E F G « G E F » Structures de Données, 21
22
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Arbre binaire complet Si chaque nœud autre qu’une feuille admet deux descendants et si toutes les feuilles sont au même niveau, on dit que l ’arbre binaire est complet. La taille de l’arbre est égale à 2k - 1où k est le niveau des feuilles A B C D E F G Structures de Données, 22
23
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Hauteur d’un nœud La hauteur d’un arbre est égale au maximum du niveau des feuilles. A B E C D F G H I J K 1 2 3 4 5 Structures de Données, 23
24
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Hauteur d’un nœud la hauteur d’un arbre est égale à la hauteur de sa racine, la hauteur d ’un arbre vide est nulle, la hauteur d’un nœud est égale au maximum des hauteurs du sous-arbre gauche et du sous-arbre droit plus un. Structures de Données, 24
25
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Facteur d’équilibre le facteur d’équilibre de chaque sous-arbre est associé à sa racine, le facteur d’équilibre d ’un nœud est égal à la hauteur du sous-arbre gauche moins la hauteur du sous-arbre droit. 4/-1 A 2/0 3/-1 B E 1/0 1/0 1/0 2/0 C D F G 1/0 1/0 H I Structures de Données, 25
26
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Arbre équilibré Un arbre est dit équilibré si pour tout nœud p de cet arbre la valeur absolue du facteur d ’équilibre est inférieur ou égale à un: facteur d’équilibre (p) 1 Structures de Données, 26
27
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Arbre dégénéré Un arbre est dit dégénéré si tous les nœuds de cet arbre ont au plus un descendant A C E B D L’arbre A (, B (C (D (, E)))) Un arbre dégénéré est équivalent à une liste Structures de Données, 27
28
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Arbre binaire ordonné Soit une relation d’ordre (notée ) sur l’ensemble des valeurs attachées aux nœuds d’un arbre binaire. Un arbre binaire est dit ordonné si la chaîne infixée des valeurs, correspondant au parcours infixé, est ordonnée. 34 11 62 5 19 50 90 15 30 38 58 70 34 58 Structures de Données, 28
29
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Parcours d’un arbre binaire Ce problème est analogue à celui du parcours séquentiel d’une liste chaînée. Les algorithmes de parcours sont très importants car il servent de base à l’écriture de la plupart des algorithmes opérant sur les arbres. Il y a plusieurs manières de parcourir un arbre suivant l’ordre dans lequel on énumère un nœud et ses sous-arbres gauche et droit. Nous nous limitons ici aux trois parcours classiques : préfixé infixé postfixé Structures de Données, 29
30
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Parcours d’un arbre binaire A B F C G D E H Structures de Données, 30
31
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Parcours préfixé (ou en préordre) Ce parcours consiste à effectuer dans l ’ordre : le traitement de la racine, le parcours du sous-arbre gauche, le parcours du sous-arbre droit. Pour l’arbre présenté sur la figure précédente, l’on traite les nœuds dans l’ordre : A B C D E F G H Structures de Données, 31
32
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Parcours infixé Ce parcours ou appelé projectif ou symétrique consiste à effectuer dans l ’ordre : le parcours du sous-arbre gauche, le traitement de la racine, le parcours du sous-arbre droit. Pour l’arbre présenté sur la figure précédente, l’on traite les nœuds dans l’ordre : D C E B A H G F Structures de Données, 32
33
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Parcours postfixé Ce parcours aussi appelé ordre terminal consiste à effectuer dans l ’ordre : le parcours du sous-arbre gauche, le parcours du sous-arbre droit, le traitement de la racine. Pour l’arbre présenté sur la figure précédente, l’on traite les nœuds dans l’ordre : D E C B H G F A Structures de Données, 33
34
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Parcours d’un arbre binaire pPréfixé (A) si A.racine alors traiter (A.racine) pPréfixé (A.racine.gauche) pPréfixé (A.racine.droit) pInfixé (A) si A.racine alors pInfixé (A.racine.gauche) traiter (A.racine) pInfixé (A.racine.droit) pRécursif (x) si condition(x) alors (x) pRécursif (f(x)) pPostfixé (A) si A.racine alors pInfixé (A.racine.gauche) pInfixé (A.racine.droit) traiter (A.racine) Structures de Données, 34
35
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Parcours d’un arbre binaire Même si la stratégie la plus commune en matière de parcours d ’un arbre binaire est basée sur une algorithmique récursive, on peut envisager d’autres approches comme : le remplacement de l ’appel récursif conditionnel par un schéma itératif équivalent, l’utilisation d’une pile. Il faut en effet pouvoir mémoriser l’environnement de l’appel récursif qui est indispensable à la poursuite de l’algorithme au retour de celui-ci. Structures de Données, 35
36
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Example d’un arbre binaire A B F C G D E H Structures de Données, 36
37
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Taille d’un arbre binaire / Schéma récursif Raisonnement par récurrence : A = <> résultat = 0 A <> résultat = 1 + Taille (SAG(A)) + Taille (SAD(A)) Structures de Données, 37
38
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Nombre de feuilles / Schéma récursif Raisonnement par récurrence : A = <> résultat = 0 A <> A est une feuille résultat = 1 A n’est pas une feuille résultat = nbfeuille (SAG(A)) + nbfeuille (SAD(A)) Structures de Données, 38
39
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Vérifier qu’un arbre binaire n’est pas dégénéré Raisonnement par récurrence : A = <> résultat = Faux A <> A a deux fils résultat = Vrai // l’arbre est normal SAG(A) est vide résultat = normal (SAD(A)) SAD(A) est vide résultat = normal (SAG(A)) Structures de Données, 39
40
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Recherche associative dans un arbre binaire Raisonnement par récurrence : A = <> val A résultat = Faux A <> Valeur(A) = val val A résultat = Vrai Valeur(A) val Rech (val, SAG(A)) val SAG(A) résultat = Vrai Non Rech (val, SAG(A)) val SAG(A) Rech (val, SAD(A)) Structures de Données, 40
41
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Recherche dans un arbre binaire ordonné Rappelons qu’un arbre ordonné est tel que la valeur associée à chaque nœud est supérieure à toutes les valeurs du sous-arbre gauche, et inférieure ou égale à toutes les valeurs du sous-arbre droit. SAG(A) < Valeur (A) SAD(A) val Structures de Données, 41
42
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Recherche dans un arbre binaire ordonné Raisonnement par récurrence : A = <> val A résultat = Faux A <> Valeur(A) = val val A résultat = Vrai Valeur(A) < val résultat = dicho (SAD(A), val) Valeur(A) > val résultat = dicho (SAG(A), val) Structures de Données, 42
43
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Insertion dans un arbre binaire ordonné Raisonnement par récurrence : A = <> créfeuille (elem, A) création d’une feuille d’adresse racine A <> Valeur(A) elem insère (SAD(A), elem) Valeur(A) > elem insère (SAG(A), elem) Structures de Données, 43
44
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Insertion d’un élément dans un arbre binaire 61 58 70 51 93 45 55 89 63 Nouvel élément Structures de Données, 44
45
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Suppression d’un élément dans un arbre binaire 61 58 70 51 93 45 55 89 Structures de Données, 45
46
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Suppression d’un élément dans un arbre binaire 61 58 70 93 51 89 45 55 Structures de Données, 46
47
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Suppression d’un élément dans un arbre binaire 61 58 70 93 45 55 89 51 Structures de Données, 47
48
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Représentation contiguë d’un arbre binaire La représentation chaînée utilisée jusqu’alors n’est pas l’unique moyen de représentation d’un arbre. Une solution alternative peut consister en l’emploi d’une table codant et réalisation le chaînage par une simple opération d’indexation dans cette même table. Cette table d’enregistrements contiendra pour chacun des éléments les informations suivantes : un champ gauche, un champ donnée (de type X) et un champ droit. Structures de Données, 48
49
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion A B F C D G E H Exemple de représentation contiguë gauche 3 -1 6 4 7 -1 -1 -1 ... val A F G B C E H D ... droit 1 2 -1 -1 5 -1 -1 -1 ... Structures de Données, 49
50
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Représentation contiguë d’un arbre binaire L’écriture des algorithmes ne pose pas de problème particulier. Il suffit de traduire : pointeur P par entier P P.val par T[P].val P.droite par T[P].droite P.gauche par T[P].gauche Structures de Données, 50
51
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Généralisation du concept d’arbre Les arbres binaires ne représentent qu’un type particulier de conteneurs arborescents. D’autres types de conteneurs existent et sont parfois dépendant du concept pour lequel ils opèrent. On peut citer à titre d’exemple : les arbres n-aires, les forêts d ’arbres, les arbres rouge-noir, les b-arbre Structures de Données, 51
52
Conteneurs Arborescents
Conteneurs Arborescents Conteneurs Ensembles définition notation / représentations algorithmes de référence conclusion Les arbres ont de très nombreuses applications en informatiques. Nous n’en avons signalé que quelques unes : recherche et mise à jour, analyse syntaxique, dictionnaire, etc … L’écriture fonctionnelle des algorithmes utilisant des schémas récursifs est bien adaptée aux traitements des arborescences et permet d’effectuer simplement la travail d’analyse préalable de l’algorithme. Structures de Données, 52
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.