1 / 45

Structures hiérarchiques: Arbre

Structures hiérarchiques: Arbre. Chapitre 04. Introduction. La structure d'arbre est l'une des plus importantes et des plus spécifiques de l'informatique. Par exemple : représentation d'une table de matières, d'un questionnaire, d'un arbre généalogique,… .

brasen
Download Presentation

Structures hiérarchiques: Arbre

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Structures hiérarchiques: Arbre Chapitre 04

  2. Introduction • La structure d'arbre est l'une des plus importantes et des plus spécifiques de l'informatique. Par exemple : • représentation • d'une table de matières, • d'un questionnaire, • d'un arbre généalogique,… . • Organisation des répertoires pour un système d’exploitation • Tri et recherche • Analyse des expressions arithmétiques • Arbre lexicographique • Arbre de raisonnement en Intelligence Artificielle • Arbre de programme utilisé en compilation • Arbre d’analyse syntaxique en compilation

  3. Introduction (exemple)

  4. Définition • On appelle arbre de type T, une structure formée d’une donnée particulière de type T appelée racine de l’arbre et d’un ensemble fini de taille variable, éventuellement vide, d’arbres de type T appelés sous-arbres de l’arbre. T étant le type de base des éléments de l’arbre.

  5. Définition • Définition informelleun arbre est un ensemble de nœuds organisé de façon hiérarchique tel que : • il existe un nœud unique appelé racine de l'arbre qui n'a pas de supérieur • tous les autres nœuds sont atteints à partir de la racine par une unique voie hiérarchique (une branche, un chemin) • Définition récursive (et constructive)un arbre est la donnée d'une racine et d'une liste (éventuellement vide) d'arbres disjoints appelés sous-arbres A = < r > ou < r, (A1, …An) > , Ai arbres disjoints • un nœud de l'arbre est la racine d'un sous-arbre

  6. Définition • Racine : C'est le nœud qui n'a pas de prédécesseur. La racine constitue la caractéristique d'un arbre. Dans l'exemple c'est a • Fils d'un noeud : ce sont ses successeurs. Dans l'exemple, c, d et e sont les fils du nœud b. • Feuille : c'est le nœud qui n'a pas de successeur. Une feuille est aussi appelée un nœud externe. Dans l'exemple, les feuilles sont : c, i, j, e, g et h.  • Nœud interne:c'est tout nœud qui admet au moins un successeur. Dans l'exemple, les nœuds internes sont : a, b, f et d. 

  7. Définition • Frères:ce sont les successeurs issus d'un même nœud. Dans l'exemple, c, d et e sont des frères. • Père:c'est un nœud qui admet au moins un successeur. Dans l'exemple, b est le père des nœuds c, d et e.  • Sous arbre:C'est une portion de l'arbre. Dans l'exemple, le noeud f avec ces deux fils g et h constituent un sous arbre. • Descendants d'un nœud:ce sont tous les nœuds du sous arbre de racine nœud. Dans l'exemple, les descendants de h sont c, d, e, i et j.

  8. Définition • Ascendants d'un nœud: ce sont tous les noeuds se trouvant sur la branche de la racine vers ce noeud. Dans l'exemple, les ascendants de d sont b et a. Les ascendants de g sont f et a.  • Branche : Les ascendants d'une feuille constituent une branche de l'arbre. Dans l'exemple, les branches de l'arbre sont a-b-c, a-b-d-i, a-b-d-j, a-b-e, a-f-g et a-f-h.  • Degré d'un noeud : C'est le nombre de ses fils. Dans l'exemple, le degré de b est 3. 

  9. Définition • Niveau d'un noeud :On dit que la racine a le niveau 0, ses fils ont le niveau 1, les fils des fils ont le niveau 2. etc...  Dans l'exemple, a est de niveau 0, d est de niveau 2 et j est de niveau 3. • Profondeur de l'arbre : C'est le niveau maximal des feuilles de l'arbre. L'arbre de l'exemple est de profondeur 3. • Forêt : C'est un ensemble d'arbres.

  10. Définition • Taille d’un arbre: c’est le nombre de nœud de l’arbre. La taille de l’arbre en exemple est de 10. • Mot des feuilles: c’est la chaîne formée des valeurs des feuilles (nœuds terminaux) de l’arbre de gauche à droite. Dans l’exemple: « cijegh» est le mot feuille

  11. Définition • Arbre n-aire: lorsqu’un arbre admet pour chaque nœud n descendants au plus, il est dit n-aire (ou général). Les arbres généraux sont , dans la plus part du temps représentés en machine par les arbres binaires. • Arbre binaire: c’est un arbre d’ordre 2; chaque nœud admet au plus zéro, un ou deux fils appelés respectivement fils gauche et fils droit.

  12. Arbres Binaires • Dans ce qui suit, on s'intéresse dans un premier temps aux arbres binaires. Les arbres n-aires d'ordre n seront traités plus loin.

  13. racine SAG SAD Arbres Binaires • définition informelle • dans un arbre binaire tout nœud a au plus deux fils • un arbre binaire non vide possède exactement deux sous-arbres (éventuellement vides) gauche et droit. • définition récursive (et constructive) • Un arbre binaire est • soit vide • soit composé d'une racine r et de deux arbres binaires SAG et SAD disjointsSAG : Sous-arbre binaire gaucheSAD : Sous-arbre binaire droit

  14. Arbres Binaires(Description fonctionnelle) 1. Primitives d’accès à un arbre binaire 2. Primitives de Mise à jour 3. Parcours d’un arbre binaire

  15. Arbres Binaires(Description fonctionnelle) 1. Primitives d’accès à un arbre binaire Dans un arbre binaire, un nœud est composé d’une valeur et de deux adresses repérant les sous-arbre gauche et le sous-arbre droit. Le nœud vide est représenté par « NIL». V : Ensemble des valeurs. P : Ensemble des positions (ou @ ) des nœuds de l’arbre)

  16. Arbres Binaires(Description fonctionnelle) L’accès aux valeurs des nœuds s’effectue à l’aide de la primitive: Valeur : P-{Nil}  V L’accès au sous-arbre gauche d’un nœud s’effectue à l’aide de la primitive: Gauche : P-{Nil}  P L’accès au sous-arbre droit d’un nœud s’effectue à l’aide de la primitive: Droit : P-{Nil}  P Ces primitives ne sont pas définies pour le nœud vide.

  17. Arbres Binaires(Description fonctionnelle) 2. Primitives de Mise à jour: On définit en plus trois primitives qui permettent la modification dans un arbre binaire (suppression, insertion et modification d’une valeur d’un nœud ), ces primitives sont: AffValeur(position, valeur): affecte une valeur à un nœud d’@ position. AffDroit(nœud, position): permet d’affecter une référence (position) au fils droit d’un nœud. AffGauche(nœud, position): permet d’affecter une référence (position) au fils gauche d’un nœud.

  18. Arbres Binaires(Description fonctionnelle) 3. Parcours d’un arbre binaire: parcours : examiner les nœuds d’un arbre pour effectuer un traitement. 2 types de parcours classiques sur les arbres binaires en profondeur (récursif par nature) et en largeur (itératif par nature) • parcours en profondeur • algorithme récursif général • parcours préfixe, infixe, postface • parcours en largeur (par niveaux, hiérarchique) :

  19. A B D C E Arbres Binaires(Parcours Préfixe ) 1. Le Parcours Préfixé ou en préordre • Il consiste en : • l’énumération de la racine • l’énumération du sous-arbre gauche • l’énumération du sous-arbre droit. • RGD • Dans l’exemple: A B D C E

  20. A B D C E Arbres Binaires(Parcours infixe ) 2. Le parcours infixé ou en inordre Il consiste en : • l’énumération du sous-arbre gauche • l’énumération de la racine • l’énumération du sous-arbre droit. • GRD • Dans l’exemple: B A C D E

  21. A B D C E Arbres Binaires(Parcours postfixe ) 3. Le parcours postfixé ou en postordre Il consiste en : • l’énumération du sous-arbre gauche • l’énumération du sous-arbre droit. • l’énumération de la racine. • GDR • Dans l’exemple: B C E D A

  22. Arbres Binaires(Description fonctionnelle) Procédure Préfixé( Entrée Racine:<type>); Début Si racine<>Nil AlorsEcrire (Valeur(racine)); Préfixé(Gauche(racine)); Préfixé(Droit(racine)); Fsi; Fin;

  23. Arbres Binaires(Description fonctionnelle) Procédure Infixé( Entrée Racine:<type>); Début Si racine<>Nil AlorsInfixé(Gauche(racine)); Ecrire (Valeur(racine)); Infixé(Droit(racine)); Fsi; Fin;

  24. Arbres Binaires(Description fonctionnelle) Procédure Postfixé( Entrée Racine:<type>); Début Si racine<>Nil Alors Postfixé(Gauche(racine)); Postfixé(Droit(racine)); Ecrire (Valeur(racine)); Fsi; Fin;

  25. Arbres Binaires(Implémentation) • Par tableau (cases contiguës) • Par cases chaînées • Par faux pointeurs • Par pointeurs

  26. Représentations contiguës (1) • un arbre est un tableau où sont mémorisés les nœuds • La racine est le nœud d’indice 1 • un nœud est une structure à 3 champs • l'étiquette ( Valeur) du nœud • les indices de ses fils gauche et droit (ou -1 si pas de fils) • inconvénients • définition non récursive (arbre  sous-arbre) • utilisée uniquement si on traite un arbre unique

  27. 1 2 3 4 5 6 7 8 9 10 11 12 13 a b c e f g h i j Représentations contiguës (2) Un arbre est un tableau • L’étiquette de la racine est à l’indice 1 • Si l’étiquette d’un nœud est à l’indice i alors l’étiquette du fils gauche est à l’indice 2i et l’étiquette du fils droit est à l’indice 2i + 1

  28. Représentation par curseurs (faux pointeurs) • utilisation d'une variable globale de type tableau pour simuler la mémoire où sont mémorisés les nœuds • un arbre est l'indice de sa racine dans le tableau (ou -1 s'il est vide) • un nœud (une case du tableau) est une structure à 3 champs • l'étiquette (valeur) du nœud • les indices de ses fils gauche et droit (ou -1 si pas de fils) • 2 stratégies de gestion des cellules disponibles • chaîner entre elles les cellules disponibles • marquer les cellules libres et parcourir le tableau pour trouver la 1re place libre • Inconvénient : connaître à l’avance le nombre de noeuds

  29. a b c d e f g Exemples Mémoire Mémoire 5 A1 A2 2 A1 A2 O arbre 2 arbres

  30. Représentation chaînée • un arbre binaire est • soit un pointeur sur le nœud racine (arbre non vide) • soit le pointeur NIL (arbre vide) • un nœud est une structure à trois champs • une étiquette (Valeur) • le sous-arbre gauche et le sous-arbre droit • avantages • définition récursive • simple à programmer • la plus utilisée

  31. Représentation chaînée inconvénients : consomme de la mémoire dynamique et elle est plus coûteuse en temps d’accès qu’une représentation contiguë, mais elle permet plusieurs types de parcours sans modification algorithmique importante.

  32. Exercices • Ecrire le corps de chacune des primitives pour la manipulation d’un arbre binaire pour les différentes implémentations données ci-dessus.

  33. Quelques déf. • Niveau • Complet • Ordonnée • Dégénéré • Equilibré • N-aire • ……………..sur tableau…………………..

  34. Arbre n-aire(Planaire général) • Le nombre de fils de chaque nœud n’est pas limité à deux. La notion du gauche et droit pour les fils et les sous-arbres n’existe plus. Dans ce type d’arbres, les fils et les sous-arbres des nœuds sont ordonnés et on parle du premier fils, 2ème fils,… . • Le parcours d’un arbre n-aire est une extension du parcours des arbres binaires: en profondeur et en largeur.

  35. indice 1 2 3 4 5 6 7 8 Valeur a b c d e f g h père 0 1 1 1 1 2 5 5 Représentation d’un arbre n-aire • Il peut être représenter selon différentes représentations: • Représentation par tableau: • un arbre est un tableau qui contient la valeur d'un nœud et l‘indice de son père. • représentation économique en mémoire, utilisée si l'arbre n'est jamais modifié

  36. Arbres par liste des fils • un arbre est la donnée • de la valeur de sa racine • de la liste de ses fils représentée • par tableau, • par pointeurs • par curseurs NIL

  37. Arbres par listes des fils : tableau • un arbre est un pointeur sur une structure composée de 2 champs : • un tableau de nœuds • indice de la racine dans le tableau • un nœud est une structure à deux champs • l'étiquette de la racine • la liste de ses fils • la liste des fils est une liste simplement chaînée sans en-tête des indices dans le tableau des fils • la liste des fils est un pointeur sur une cellule à deux champs • un entier (l’ indice du nœud) dans le tableau • un pointeur sur la cellule suivante

  38. Tableau de pointeurs sur liste des fils

  39. Arbres par liste des fils (pointeurs) • un arbre est un pointeur sur une structure formée • de la valeur de la racine • et de la liste de ses fils • une listes d'arbres est un pointeur sur une cellule composée • d'un arbre • et d'un pointeur sur la cellule suivante.

  40. Arbre par liste des fils

  41. Arbres par tableau de pointeurs • quand on connaît le nombre maximum de fils (n) • un arbre est un pointeur sur une structure à n + 1 champs • l' étiquette de la racine • le premier sous-arbre, le deuxième... le nième

  42. Arbres généraux par arbre binaire • représentation par premier fils et frère droit • un arbre est représenté par une structure à trois champs • La valeur de la racine • le premier fils de la racine • le frère droit de la racine • tous les arbres n-aires peuvent être représentés par des arbres binaires

  43. Arbres généraux par arbre binaire NIL NIL NIL NIL NIL

  44. 1 2 3 5 4 6 9 7 8 10 13 11 14 12 Équivalence arbre général/arbre binaire

  45. Un autre exemple

More Related