Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f...

42
Algorithmique P2 Algorithmique P2 Algorithmique P2 Algorithmique P2 Les Arbres Renaud Dumont, Ulg 2009-2010

Transcript of Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f...

Page 1: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

Algorithmique P2Algorithmique P2Algorithmique P2Algorithmique P2Algorithmique P2Algorithmique P2Algorithmique P2Algorithmique P2Les Arbres

Renaud Dumont, Ulg2009-2010

Page 2: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Ouvrages◦ Algorithmes et structures de données génériques, Divay M.,

2004, Dunod◦ Data Structures and Algorithm Analysis in C++, MA Weiss,

1998, Pearson Ed.

� Cours

Biblio. supplémentaireBiblio. supplémentaireBiblio. supplémentaireBiblio. supplémentaire

� Cours◦ Cours d'algorithmique en langage C, Jean-Eric Pin, LIAFA,

1998◦ Algorithmique 4, Dominique Seret, Univ. Paris Descartes,

2008◦ Programmation avancée, T. Lecroq, Univ. Rouen◦ Arbres de recherche, Sylvie Hamel, Université de Montréal,

2009

Page 3: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Un graphe est un couple G = (S, A) ◦ S est l'ensemble des sommetssommetssommetssommets◦ A est un sous-ensemble de S x S, l'ensemble des

arêtesarêtesarêtesarêtes.

GraphesGraphesGraphesGraphes

◦ A = {(1, 2), (1, 4), (2, 4), (3, 3), (4, 3)}

� Deux arêtes (s, t) et (s', t') sont consécutivesconsécutivesconsécutivesconsécutivessi t = s'◦ Arêtes consécutives (1, 2) et (2, 4)

Page 4: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Un cheminchemincheminchemin dans un graphe est une suite d'arêtes consécutives.◦ (1,2)(2,4)(4,3) est un chemin◦ (1,4)(4,3)(3,3)(3,3) est un autre chemin◦ …

GraphesGraphesGraphesGraphes

◦ …

� Graphe non dirigé (non orienté) non dirigé (non orienté) non dirigé (non orienté) non dirigé (non orienté) : ◦ si (s, t) est une arête, (t, s) est une arête

Page 5: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Arbre (libre)◦ Graphe non-dirigé (non-orienté) non-vide, connexe

et sans circuit (acyclique)

� Arbre enraciné

ArbresArbresArbresArbres

� Arbre enraciné◦ Graphe non-dirigé muni d'un sommet distingué (la

racineracineracineracine) et tel qu'il existe un chemin unique de la racine à un sommet quelconque.

Page 6: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Expression arithmétique ◦ ((a+b) * (c-d) – e)

Arbres Arbres Arbres Arbres –––– Exemples d'utilisationExemples d'utilisationExemples d'utilisationExemples d'utilisation

� Chaine de caractères◦ mais, mars, mer, mon� Permet de mémoriser les caractères déjà rencontrés

Page 7: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Structure grammaticale

Structure d'un livre, classifications biologiques, …

Arbres Arbres Arbres Arbres –––– Exemples d'utilisationExemples d'utilisationExemples d'utilisationExemples d'utilisation

� Structure d'un livre, classifications biologiques, …� Système de répertoires/fichiers d'un OS, interface

fenêtrée d'un logiciel

� Un arbre, c'est une structure de données non linéaire permettant de hiérarchiser les données◦ Relation inter-éléments = "est parent de"

Page 8: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Nœud, racine, fils ◦ éventuellement qualifiés "à gauche" ou "à droite"

pour les arbres binaires (voir suite)

Arbres Arbres Arbres Arbres ---- VocabulaireVocabulaireVocabulaireVocabulaire

Nœud Nœud –

Racine

Nœud-

Fils (à gauche)

Nœud-

Fils (à droite)

Page 9: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Ancêtre, descendant, père, fils◦ x descendant (propre) et fils (à droite) de y◦ y ancêtre (propre) et père de x� "propre" : si x est différent de y, tel qu'ici

� Tous les nœuds d'un arbre ont un et un seul

Arbres Arbres Arbres Arbres ---- VocabulaireVocabulaireVocabulaireVocabulaire

� Tous les nœuds d'un arbre ont un et un seul parent, sauf la racine.◦ Propriété du chemin unique

� Frère, sœur ◦ Nœuds de même parent

r

a y

xh

b

Page 10: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Feuille = nœud sans fils� Racine = le seul nœud sans père� Degré d'un nœud = nombre de ses enfants

Arbres Arbres Arbres Arbres ---- VocabulaireVocabulaireVocabulaireVocabulaire

Racine,Nœud interneinterne

-r

Feuille-a

Nœud interne

-y

Feuille-x

Feuille -h

Nœud interne

-b

Feuille-b

Page 11: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Profondeur d'un nœud = longueur du chemin entre la racine et ce nœud

� Hauteur d'un arbre = profondeur maximale de ses nœuds/hauteur de sa racine

� Hauteur d'un nœud = longueur maximale du chemin entre ce nœud et une feuille

Arbres Arbres Arbres Arbres ---- VocabulaireVocabulaireVocabulaireVocabulaire

r-

Prof. = 0Prof. = 0Haut. = 2

a-

Prof. = 1Haut. = 0

y-

Prof. = 1Haut. = 1

x-

Prof. = 2Haut. = 0

h-

Prof. = 2Haut. = 0

H(Arbre) = 2

Page 12: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Niveau L dans un arbre = ensemble des nœuds de profondeur L

� Taille d'un arbre = nombre de ses nœuds

Arbres Arbres Arbres Arbres ---- VocabulaireVocabulaireVocabulaireVocabulaire

r-

Prof. = 0Prof. = 0Niv. = 0

a-

Prof. = 1Niv. = 1

y-

Prof. = 1Niv. = 1

x-

Prof. = 2Niv. = 2

h-

Prof. = 2Niv. = 2

T(A) = 5Niveau 0 contient 1 nœud

Niveau 1 contient 2 nœudsNiveau 2 contient 2 nœuds

Page 13: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Définition récursive◦ Un nœud seul est un arbre dont la racine est ce

nœud.◦ Etant donnés un nœud r et k arbres T0,T1,…,Tk-1

ayant des racines notées respectivement r0,r1, …, rk-1, on construit un nouvel arbre de racine r en posant

Arbre enracinéArbre enracinéArbre enracinéArbre enraciné

on construit un nouvel arbre de racine r en posant que r est le parent de r0,r1, …, rk-1. T0,T1,…,Tk-1 sont alors appelés les soussoussoussous----arbresarbresarbresarbres de r dont les racines r0,r1, …, rk-1 sont les enfants de r.

� Arbre vide = Arbre ne contenant aucun nœud◦ N'est pas considéré comme un arbre

Page 14: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Quels sont les sous-arbres de l'arbre suivant ?

Arbres Arbres Arbres Arbres ---- VocabulaireVocabulaireVocabulaireVocabulaire

AB C

B C

GED F

D GE F

GED F

Le chemin C-E est-il sous-arbre de A ?

Page 15: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Un arbre ordonné est un arbre enraciné dans lequel tous les fils de chaque nœud sont ordonnés

Arbres ordonnésArbres ordonnésArbres ordonnésArbres ordonnés

Page 16: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Un arbre binaire est un ensemble fini de nœuds◦ Vide (noté ε, qui n'est pas un arbre), ou◦ Constitué d'une racine et de deux arbres disjoints� Sous-arbre à gauche et sous-arbre à droite� Dont l'un des deux est éventuellement vide

Arbres binairesArbres binairesArbres binairesArbres binaires

� Dont l'un des deux est éventuellement vide

� Le degré d'un nœud d'un arbre binaire ne peut prendre que les valeurs 0, 1 ou 2◦ Chaque nœud possède 0,1 ou 2 fils.

Page 17: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� On représente souvent un arbre binaire par le triplet A = (Ag, r, Ad)

Arbres binairesArbres binairesArbres binairesArbres binaires

� Pour l'arbre de gauche, il vient◦ (Ø, 1,((Ø,3, Ø),2, Ø))

� Et pour l'arbre de droite ?◦ Rép. : ((Ø,2,(Ø,3, Ø)),1, Ø)

Page 18: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

Arbres binaires completsArbres binaires completsArbres binaires completsArbres binaires complets� Un arbre binaire est completcompletcompletcomplet si chaque niveau de

l'arbre est complètement rempli

� Pour un nœud numéroté i, 1� Pour un nœud numéroté i, ◦ Le fils à gauche est numéroté 2*i◦ Le fils à droite 2*i+1

� Propriétés :◦ Si H(A) = h, l'arbre possède n=2h+1-1 nœuds◦ Le nombre de feuilles est égal au nombre de nœuds

internes + 1

1

2

54

3

76

Page 19: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Un arbre binaire est localement complet localement complet localement complet localement complet si tout nœud a 0 ou 2 fils

Arbres binairesArbres binairesArbres binairesArbres binaires

� Un arbre binaire est partiellement complet partiellement complet partiellement complet partiellement complet si toutes les feuilles sont placées sur la gauche de l'arbre

Page 20: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Un arbre est dégénérédégénérédégénérédégénéré (filiforme) si tous ses nœuds ont exactement 0 ou 1 fils (à droite ou au gauche)◦ Un tel arbre de profondeur h possède h+1 noeuds

Arbres binairesArbres binairesArbres binairesArbres binaires

◦ Un tel arbre de profondeur h possède h+1 noeuds

Page 21: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Arbres binaires de 1, 2, 3 et 4 nœuds

Arbres binairesArbres binairesArbres binairesArbres binaires

� Lesquels sont ◦ complets? ◦ localement complets ?

Page 22: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Un arbre généalogique est-il un arbre binairebinairebinairebinaire ?

� Si ascendant, oui

Les arbres binairesLes arbres binairesLes arbres binairesLes arbres binaires

� Si descendant, non © JB Laurent

Page 23: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Équilibré : Pour chaque nœud, les hauteurs des sous-arbres gauche et droit diffèrent d'au plus une unité

� Parfaitement équilibré : Pour chaque nœud,

Arbres binaires équilibrésArbres binaires équilibrésArbres binaires équilibrésArbres binaires équilibrés

� Parfaitement équilibré : Pour chaque nœud, les nombres de nœuds de chaque sous-arbre gauche et droit diffèrent d'au plus une unité

Parfaitement Eq.Equilibré

Page 24: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Un parcours est une énumération des nœuds de l'arbre◦ De par cette énumération, chaque parcours définit un

ordre sur les nœuds

� On distingue ◦ les parcours de gauche à droite

Notions de parcours (∀arbres)Notions de parcours (∀arbres)Notions de parcours (∀arbres)Notions de parcours (∀arbres)

◦ les parcours de gauche à droite� Le fils à gauche précède le fils à droite dans l'énumération

◦ les parcours de droite à gauche� Le fils à droite précède le fils à gauche dans l'énumération

� Ensuite, on différencie◦ Les parcours en largeur◦ Les parcours en profondeur

Page 25: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Dans un parcours en largeur, on énumère les nœuds par ordre croissant de profondeur des nœuds� Autrement dit, de haut en bas, niveau par niveau (et de

gauche à droite)

Parcours en largeurParcours en largeurParcours en largeurParcours en largeur

Page 26: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Parcours préfixe, préfixe, préfixe, préfixe, préordrepréordrepréordrepréordre (NGD) :◦ tout Nœud est suivi des nœuds de son sous-arbre

Gauche puis des nœuds de son sous-arbre Droit

� Parcours infixe, symétriqueinfixe, symétriqueinfixe, symétriqueinfixe, symétrique (GND) : ◦ tout Nœud est précédé des nœuds de son sous-arbre

Gauche et suivi des nœuds de son sous-arbre Droit

Parcours en profondeurParcours en profondeurParcours en profondeurParcours en profondeur

Gauche et suivi des nœuds de son sous-arbre Droit

� Parcours suffixesuffixesuffixesuffixe, postfixepostfixepostfixepostfixe, , , , postordrepostordrepostordrepostordre (GDN) : ◦ tout Nœud est précédé des nœuds de son sous-arbre

Gauche et des nœuds de son sous-arbre Droit

� On parle aussi d'ordre préfixe, infixe et suffixe� On trouve aussi les parcours 'droite-gauche'

Page 27: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Soit l'arbre binaire suivant

� Parcours préfixe ◦ Nœud, Gauche, Droite◦ a, b, d, e, h, c, f, i, g, k

Parcours en profondeurParcours en profondeurParcours en profondeurParcours en profondeur

◦ a, b, d, e, h, c, f, i, g, k

� Parcours infixe◦ Gauche, Nœud, Droite◦ d, b, h, e, a, f, i, c, k, g

� Parcours suffixe◦ Gauche, Droite, Nœud◦ d, h, e, b, i, f, k, g, c, a

Page 28: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Chaque arête d'un arbre binaire A est étiqueté◦ Par 0 si f est un fils à gauche◦ Par 1 si f est un fils à droite

� L'étiquette du chemin reliant la racine à un nœud donné est le mot formé par les étiquettes des arêtes le composant.

Codage des arbres binairesCodage des arbres binairesCodage des arbres binairesCodage des arbres binaires

arêtes le composant.� Le code d'un arbre est l'ensemble des étiquettes

des chemins issus de la racine

� Le code de l'arbre ci-contre est◦ {ε, 0, 1, 00, 01, 10, 11, 010, 101, 110}◦ Fournit un ordre de parcours des noeuds

Page 29: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Séquence : a,b,d,e,h,c,f,i,g,k� Codes : ε, 0, 00, 01, 010,

1, 10, 101, 11, 110

Codage de parcours préfixeCodage de parcours préfixeCodage de parcours préfixeCodage de parcours préfixe

� Ordre lexicographique◦ Soit un ordre sur un alphabet : 0<1, a<b<c<d…◦ L'ordre lexicographique est défini par u <lex v ssi� u est un préfixe de v, ou� U=pau' et v=pbv' ou p est un mot, et a et b sont des

lettres telles que a<b

Page 30: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Séquence : d,h,e,b,i,f,k,g,c,a� Codes : 00,010,01,0,101,10,

110,11,1, ε

Ordre opposé de l'ordre lexicographique

Codage de parcours suffixeCodage de parcours suffixeCodage de parcours suffixeCodage de parcours suffixe

� Ordre opposé de l'ordre lexicographique obtenu en considérant 1<0

ÉtapeÉtapeÉtapeÉtape ssss

1 a b d e h c f i g k Ordre lexicographique

2 ε 0 00 01 010 1 10 101 11 110 Code

3 ε 1 11 10 101 0 01 010 00 001 Complément du code

4 ε 0 00 001 01 010 1 10 101 11 Complément, ordre lex.

5 a c g k f i b e h d Correspondance lignes 4-3-1

6 d h e b i f k g c a Ordre opposé

Page 31: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Séquence :d,b,h,e,a,f,i,c,k,g� Codes : 00,0,010,01,ε,

10,101,1,110,11

� Ordre des nombres croissantsOn associe à chaque nœud

Codage de parcours infixeCodage de parcours infixeCodage de parcours infixeCodage de parcours infixe

� On associe à chaque nœud son code concaténé à 1

� Le code obtenu est considéré comme la partie fractionnaire d'un nombre entre 0 et 1 en binaire

NœudNœudNœudNœud Code Code Code Code C.FracC.FracC.FracC.Frac.... P.FracP.FracP.FracP.Frac.... Ordre Ordre Ordre Ordre

a ε .1 8/16 5

b 0 .01 4/16 2

c 1 .11 12/16 8

d 00 .001 2/16 1

e 01 .011 6/16 4

f 10 .101 10/16 6

g 11 .111 14/16 10

h 010 .0101 5/16 3

i 101 .1011 11/16 7

k 110 .1101 13/16 9

Page 32: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Séquence : a,b,c,d,e,f,g,h,i,k� Codes : ε, 0, 1, 00, 01, 10,

11, 010, 101, 110

Codage de parcours en largeurCodage de parcours en largeurCodage de parcours en largeurCodage de parcours en largeur

� Ordre croissant des mots croisés (shortlex)� Défini par u<mc v ssi

� |u|<|v|, ou� |u|=|v| et u <lex v

Page 33: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Exemple : (a+b)-(c*d)� Arbre d'expression :

Codage de parcoursCodage de parcoursCodage de parcoursCodage de parcours

� Préfixe : -+ab*cd� Infixe : a+b-c*d� Postfixe : ab+cd*-

Page 34: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Soit un parcours préfixe◦ a, b, d, e, h, c, f, i, g, k

� Comment différencier les deux structures suivantes ?

Représentation Représentation Représentation Représentation paranthèséeparanthèséeparanthèséeparanthèsée

Page 35: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Comment spécifier la structure de l'arbre ?1. Ecrire la paranthèse ouvrante puis l'étiquette du

noeud2. Descendre sur le premier fils et réappliquer 1.3. Quand on ne sait plus descendre, on ferme la

paranthèse, on remonte d'un niveau et on traite le fils

Représentation Représentation Représentation Représentation paranthèséeparanthèséeparanthèséeparanthèsée

paranthèse, on remonte d'un niveau et on traite le fils suivant en réappliquant 1.

4. Une fois tous les fils traités, on ferme la paranthèse du noeud parent

◦ Ici, (a(b(d)(e(h)))(c(f(i))(g(k))))◦ RemarqueRemarqueRemarqueRemarque : perte des distinctions

fg ou fd dans un arbre binaire

Page 36: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Exercices

Représentation Représentation Représentation Représentation paranthèséeparanthèséeparanthèséeparanthèsée

a

b

fc

h

ig

� Réponses(a(b(d(e(h))))(c(f(i))(g(k))))

Et (a(b(c(d)(e))(f)(g))(h(i(j)(k)(l)(m))))

jed k l m

Page 37: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Soit l'arbre généalogique simplifié suivant

Représentation par une liste de fils

Représentation d'un arbre en Représentation d'un arbre en Représentation d'un arbre en Représentation d'un arbre en mémoiremémoiremémoiremémoire

� Représentation par une liste de fils◦ Difficulté pour ajouter des éléments (taille du

tableau)

Page 38: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Allocation contiguë (mémoire ou fichier)◦ Espace mémoire réservé à la compilation � perte

de place si grand nombre de fils pour un nœud◦ Les pointeurs sont ici les indices des lignes du

tableau

Représentation d'un arbre en Représentation d'un arbre en Représentation d'un arbre en Représentation d'un arbre en mémoiremémoiremémoiremémoire

Page 39: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Représentation par allocation dynamique◦ Calcul nécessaire du nombre de pointeurs de

chaque nœud� Pour un arbre généalogique, nombre difficile à préciser � perte parfois importante d'espace mémoire

Représentation d'un arbre en Représentation d'un arbre en Représentation d'un arbre en Représentation d'un arbre en mémoiremémoiremémoiremémoire

� perte parfois importante d'espace mémoire

◦ Optimal pour un arbre dont les nœuds ont un degré constant (ex : binaire complet)

Page 40: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Solution : une liste de listes de nœuds

Représentation d'un arbre en Représentation d'un arbre en Représentation d'un arbre en Représentation d'un arbre en mémoiremémoiremémoiremémoire

À partir de MA Weiss, voir Sources supp.

Page 41: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

� Expression Tree◦ Pile de pointeurs vers des arbres◦ Exemple : ab+cde+**

Représentation d'un arbre en Représentation d'un arbre en Représentation d'un arbre en Représentation d'un arbre en mémoiremémoiremémoiremémoire

MA Weiss, voir Sources supp.

Page 42: Algorithmique P2 - Montefiore Institute ULgdumont/pdf/ac6.pdf · ÉtapeÉtapes sss 1 a b d e h c f i g k Ordre lexicographique 2 ε 0 00 01 010 1 10 101 11 110 Code 3 ε 1 11 10 101

o Exemple : ab+cde+**

Représentation d'un arbre en Représentation d'un arbre en Représentation d'un arbre en Représentation d'un arbre en mémoiremémoiremémoiremémoire

MA Weiss, voir Sources supp.