Arbres et application
1 Arbres et graphes
1.1 Un arbre est un graphe particulier
D´
efinition : on appelle arbre tout graphe non orient´e, connexe et sans cycle.
Voici un exemple d’arbre
k
kkk
k k k
AAA
Dans les arbres selon cette d´efinition, aucun sommet n’est privil´egi´e ; il n’y a ainsi pas de notion de
racine, de p`ere ou de fils. Ce n’est donc pas tout `a fait la vision qui est celle adopt´ee dans le programme
et, en particulier, celui de premi`ere ann´ee. Pour mieux comprendre les liens entre les repr´esentations,
nous commen¸cons par ´enoncer (et prouver) quelques propri´et´es des graphes acycliques ou connexes.
Proposition : un graphe (non orient´e et simple) connexe d’ordre nposs`ede au moins n1 arˆetes.
On peut, par exemple, prouver le r´esultat par r´ecurrence sur l’ordre du graphe (i.e. son nombre de
sommets).
- Le r´esultat est imm´ediat si n= 1.
- Supposons le r´esultat vrai `a un rang n1. Soit Gconnexe d’ordre n+ 1. Si Gposs`ede un
sommet de degr´e 1alors le graphe G0obtenu en retirant ce sommet a au moins n1arˆetes
par hypoth`ese de r´ecurrence (car on a supprim´e une unique arˆete sans perdre la connexit´e) et
Ga donc narˆetes au moins. Sinon, tous les sommets sont de degr´e 2et comme la somme
des degr´es des sommets est le double du nombre d’arˆetes, il y a encore au moins narˆetes.
Proposition : un graphe (non orient´e et simple) d’ordre net sans cycle poss`ede au plus n1 arˆetes.
A nouveau, on propose une r´ecurrence sur l’ordre du graphe.
- Le r´esultat est imm´ediat si n= 1.
- Supposons le r´esultat vrai `a un rang n1. Soit Gd’ordre n+ 1 et sans cycle. Je pr´etends qu’il
existe au moins un sommet de degr´e 1. En effet, sinon en consid´erant un chemin v1, . . . , vk
de longueur maximale (cela existe car l’ensemble des chemins est fini), vkn’a, par maximalit´e,
aucun voisin diff´erent des autres viet comme il est de degr´e 2il a au moins un moins un
voisin parmi ces vice qui donne un cycle. En retirant ce sommet et l’arˆete associ´ee (si elle
existe) on se ram`ene au cas d’un graphe acyclique d’ordre n1et on conclut.
Th´
eor`
eme : soit Gun graphe d’ordre n. Les trois propositions suivantes sont ´equivalentes
i. Gest un arbre
ii. Gest connexe et a n1 arˆetes
iii. Gest acyclique et a n1 arˆetes
Les arbres sont donc parmi les graphes connexes ceux avec un minimum d’arˆetes ou parmi les graphes
acycliques ceux avec un maximum d’arˆetes.
Si Gest un arbre d’ordre nil est connexe et acyclique et, avec les propositions, il poss`ede n1arˆetes.
Il nous reste `a prouver l’´equivalence de ii et de iii (puisque si ii et iii sont vraies, i est imm´ediatement
vrai par d´efinition des arbres).
1
- Soit Gun graphe connexe `a n1arˆetes. Si, par l’absurde, il ´etait cyclique, on obtiendrait un
graphe connexe d’ordre net `a n2arˆetes en supprimant une arˆete d’un cycle et la premi`ere
proposition montre que c’est impossible.
- Soit Gun graphe acyclique `a n1arˆetes. Supposons, par l’absurde, que Gn’est pas connexe. Il
y a donc au moins deux composantes connexes. En ajoutant une arˆete entre un sommet d’une
des composantes et un sommet d’une autre, on garde l’absence de cycle et on a narˆetes ce qui
est impossible par la seconde proposition.
Ex 1 Dans cet exercice, on consid`ere des graphes dont l’ensemble des sommets est S={0,1, . . . , n1}.
On suppose de plus que n3.
1. Soit G= (S, A) un arbre. Montrer que Gposs`ede un sommet de degr´e 1 et que le graphe obtenu
en supprimant un tel sommet et l’arˆete associ´ee est encore un arbre.
2. A un arbre G= (S, A) on peut alors associer un n2 uplet d’´el´ements de [|0, n 1|] par
l’algorithme suivant
On part d’un uplet L vide
Pour k de 1 `a n-2, faire
Noter i le plus petit sommet de degr´e 1
Ajouter au uplet L le voisin de i
Supprimer i de G
Renvoyer L
Donner le 6-uplet associ´e `a l’arbre
4
k
6
k0
k7
k1
k
2
k5
k3
k
AAA
3. Justifier l’injectivit´e de l’application qui `a l’arbre associe le n2-uplet.
4. Justifier la bijectivit´e en donnant un algorithme permettant de reconstruire l’arbre `a partir du
n2-uplet (on ne demande pas de preuve). Appliquer au uplet (1,1,0,2,2,0,3,3).
5. Impl´ementer les deux algorithmes pr´ec´edents en Caml. On repr´esentera les graphes par une
matrice d’adjacence et les uplets par des tableaux.
6. D´eterminer le nombre des arbres dont l’ensemble des sommets est S.
1.2 Arbre couvrant d’un graphe connexe
Soit G= (S, A) un graphe suppos´e connexe. L’ensemble {card(A0)/ A0A, (S, A0) connexe}est
alors non vide et inclus dans N. Il poss`ede donc un minimum. On peut donc trouver un sous graphe
connexe G0= (S, A0) tel que la suppression d’une arˆete deconnecte G0.G0est donc acyclique et c’est
ainsi un arbre.
On appelle arbre couvrant de Gtout sous-graphe de Gqui est un arbre et qui a les mˆemes sommets.
On vient de voir que tout graphe connexe admet au moins un arbre couvrant. Consid´erons le graphe
suivant :
2
0


1


2


3


4


8


5


7


6


@
@
@
@
@
@ @
@
@
@
@
@
@ @
@
@
Le graphe ci-dessous est un arbre qui couvre ce graphe.
0


1


2


3


4


8


5


7


6


@
@
@
@
@
@
@
@
@
@
@
@
@
Ex 2 Soit G= (S, A) un graphe connexe. Pour construire un arbre couvrant ce graphe, on peut partir
d’un graphe sans arˆete. On choisit arbitrairement un sommet. On ajoute alors une arˆete issue de ce
sommet (il en existe une). On a alors deux sommets “couverts”. On ajoute alors une arˆete entre un
sommet couvert et un autre non couvert (il en existe une par connexit´e). On poursuit le processus
jusqu’`a couvrir tous les sommets. On a alors ajout´e n1 arˆetes et on a un sous-graphe qui est un
arbre.
On choisit de repr´esenter les graphes en Caml grˆace au type suivant :
type arete == int*int ;;
type graphe = {N : int ; A : arete list} ;;
Le champ Nnous donne le nombre des sommets. Le champ Adonne la liste des arˆetes, une arˆete ´etant
ici un couple (x, y) avec x<y.
Ecrire une fonction arbrecouvrant : graphe graphe mettant en oeuvre l’algorithme pr´ec´edent.
1.3 Orientation d’un arbre
Soit G= (S, A) un arbre. Pour tous sommets x, y distincts, il existe un unique chemin d’extr´emit´es x
et y(existence par connexit´e et unicit´e par absence de cycle). Si on choisit un sommet rarbitrairement,
on peut alors orienter naturellement toutes les arˆetes :
- Une arˆete rx est orient´ee de rvers x(xest le fils de ret rest le p`ere de y).
- si xy est une arˆete avec x, y 6=ron peut trouver une unique chaˆıne de rvers x. Si yest sur
celle-ci, on oriente l’arˆete de yvers x(xest le fils de yet yle p`ere de x) et sinon, on l’oriente
de xvers y(yest le fils de xet xest le p`ere de y).
On obtient un arbre dont on dit qu’il est enracin´e et orient´e (l’enracinement entraˆınant naturellement
l’orientation des arˆetes).
D´
efinitions : soit G= (S, A) un arbre enracin´e et orient´e.
- Un sommet sans fils s’appelle une feuille (ou noeud terminal) ; les feuilles sont ainsi les noeuds
de degr´e 1 diff´erents de la racine (sauf si l’arbre est r´eduit `a cette racine) ;
- un sommet qui n’est pas une feuille (et qui poss`ede donc au moins un fils) s’appelle un noeud
int´erieur (ou noeud interne).
3
Ex 3 On veut compter le nombre Cnd’arbres diff´erents de sommets 0, . . . , n 1 (on parle ici d’arbres
non orienes ; le calcul a ´et´e effectu´e d’une autre mani`ere en exercice 1). Pour cela, on va transiter par
des arbres orienes (et donc aussi enracin´es). Pour construire un tel arbre orient´e, on doit choisir n1
arˆetes orient´ees. On appelle construction un n1 uplet d’arˆetes orient´ees donnant un arbre. Notez que
deux constructions peuvent donner le mˆeme arbre et que tout n1 uplet n’est pas une construction
(le choix des arˆetes pouvant ne pas mener `a un arbre oriene). On note Dnle nombre de constructions
dans le cas de nsommets (on compte donc le nombre de uplets et pas le nombre d’arbres orient´es).
1. Dans un premier compte, on choisit l’un des Cnarbres non orient´es. Choisir une racine oriente
chaque arˆete et il reste `a choisir l’ordre de ces arˆetes dans le uplet. En utilisant ce raisonnement,
montrer que Dn=n!Cn.
2. Dans un second temps, on part du graphe vide et on ajoute une arˆete orient´ee puis une seconde
puis une troisi`eme etc. Initialement, on a ncomposantes connexes formant une forˆet de narbres
r´eduits `a leurs racines. L’ajout de chaque arˆete orient´ee fusionne deux composantes. Quel est
le nombre de choix possibles pour la k-i`eme arˆete (lors de ce choix, on a nkcomposantes
connexes form´ees d’arbres orient´es et on doit en fusionner deux en gardant des arbres orient´es) ?
En d´eduire la valeur de Dn.
3. Conclure que Cn=nn2.
1.4 Arbre de parcours d’un graphe
Soit G= (S, A) un graphe connexe. Soit sun sommet donn´e. Lorsque l’on effectue un parcours
du graphe `a partir de s, on peut simultan´ement construire un arbre enracin´e en s. On d´ebute avec
l’arbre ({s},). Quand on d´ecouvre un sommet y`a partir d’un sommet x, on ajoute y`a l’ensemble
des sommets et l’arˆete (orient´ee) (x, y) `a l’ensemble des arˆetes. On obtient alors un graphe connexe
d’ordre kavec k1 arˆetes et c’est bien un arbre.
Consid´erons le graphe exemple suivant.
2


0


6


3


1


4


5


7


8


@
@
@
 @
@
@
P
P
P
P
P
P
P
P
P
P
PPPPPPPPPP
On trouve ci-dessous l’abre de parcours en largeur (`a gauche) et en profondeur (`a droite) `a partir du
sommet 2 (en privil´egiant les sommets de petit num´ero en cas de choix possible).
2
k
0
k3
k
1
k4
k
5
k
6
k7
k
8
k
HHHj
@
@R
?
@
@R
?
2
k
0
k
1
k
4
k3
k
6
k
7
k
8
k
5
k
?
?
@
@R
?
-
?
4
Ex 4 Ecrire une fonction arbreDFS : graphe int graphe qui `a partir d’un graphe non orient´e
et d’un num´ero de sommet renvoie l’arbre orient´e de parcours en profondeur `a partir du sommet ar-
gument. On repr´esente ici les graphes par le tableau des listes d’adjacence.
2 Arbres binaires
Pour ce qui concerne les arbres, le programme se limite (si on sort de la repr´esentation pr´ec´edente sous
forme de graphe oriene ou non) au cas des arbres enracin´es (et donc orient´es) dont tous les noeud
internes sont exactement de degr´e 2. On parle alors d’arbre binaire ou encore d’arbre d’arit´e 2. On a
en r´ealit´e deux d´efinitions concurrentes selon que l’on se permet ou non l’utilisation de l’arbre vide.
2.1 Les deux repr´esentations possibles
Si on se limite aux arbres binaires stricts, on ne se permet pas l’utilisation de l’arbre vide et on d´efinit
deux constructeurs Feuille et Noeud selon le sch´ema suivant (o`u l’on ´etiquette les noeuds de l’arbre
par des ´el´ements de type ’a).
type ’a arbre =
| Feuille of ’a
| Noeud of ’a arbre * ’a * ’a arbre ;;
Dans certains cas, on veut travailler avec des arbres dont certains noeuds peuvent n’avoir qu’un seul
fils (le droit OU le gauche). On r`egle le probl`eme en se permettant l’utilisation d’un arbre vide selon
le type suivant
type ’a arbre =
| Nil
| Noeud of ’a arbre * ’a * ’a arbre ;;
Quand on utilise ce dernier type, ce que l’on fera car c’est le plus g´en´eral, il faut parfois ˆetre attentif
au cas particulier de l’arbre vide pour lequel certaines d´efinitions (comme la hauteur) peuvent ne pas
avoir de sens.
2.2 D´efinitions et preuves inductives
La structure d’arbre binaire ´etant d´efinie de fa¸con r´ecurrente, les d´efinitions et preuves naturelles sur
les arbres se feront par induction structurelle.
D´
efinition : on d´efinit la taille d’un arbre de fa¸con inductive par :
la taille de l’arbre vide est nulle ;
si get dsont deux arbres alors la taille de Noeud(g,x,d) vaut la somme des tailles de get de
dplus un.
De fa¸con plus informelle, la taille d’un arbre est ainsi ´egale `a son nombre de noeuds (internes ou
terminaux).
Quand on vous d´efinit informellement une notion sur les arbres, il convient (dans le but d’impl´ementation)
de traduire r´ecursivement cette d´efinition.
D´
efinition : on appelle hauteur d’un arbre la taille du plus long chemin dans l’arbre de la racine vers
une feuille.
La traduction r´ecursive n’est pas imm´ediate car la hauteur de l’arbre vide n’est alors pas d´efinie. On
peut prendre comme comme cas de base celui d’une feuille (deux fils vides) et distinguer trois cas
r´ecurrent (selon qu’il y a un fils `a droite ou un fils `a gauche ou deux fils). On peut aussi s’interroger
sur l’existence d’une convention naturelle pour la hauteur de l’arbre vide. En adoptant cette deuxi`eme
d´emarche, on d´efinit r´ecursivement la hauteur par
la hauteur de Nil vaut 1 ;
5
1 / 15 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !