GRAPHES
exercices
Ex 1
a. Relier, pour tout graphe non orient´e, la somme des degr´es des sommets et le nombre d’arˆetes.
b. En d´eduire qu’il est impossible d’organiser une rencontre entre cinq joueurs d’´echec o`u chaque
joueur joue contre exactement trois autres.
Ex 2 Montrer que dans une assembl´ee de npersonnes il y a toujours au moins deux personnes ayant
le mˆeme nombre de connaissances (on admet que si Aconnaˆıt Balors Bconnaˆıt A).
Ex 3 Un graphe non orient´e Gest dit biparti s’il existe une partition (X, Y ) de l’ensemble des sommets
telle que les graphes induits par Xet Ysont sans arˆetes.
a. Montrer que tout cyle d’un graphe biparti est de longueur paire.
b. Soit Gun graphe dans lequel on peut trouver un parcours ferm´e (circuit) de longueur impaire.
Montrer qu’il existe dans Gun cycle de longueur impaire.
c. Montrer la r´eciproque de la premi`ere question.
Ex 4 Etant donn´ee une suite croissante d= (d1, . . . , dn) d’entiers naturels, on cherche s’il existe un
graphes de sommets x1, . . . , xntel que pour tout ile degr´e de xisoit di. Si c’est le cas, on dira que la
suite dest r´ealisable.
a. Montrer que pour que dsoit r´ealisable, il faut que dnn1 et que card({i/ di2N+ 1})
soit pair. Montrer que ces conditions ne sont pas suffisantes.
b. Soit (d1, . . . , dn) une suite r´ealisable. Montrer qu’il existe un graphe de sommets x1, . . . , xntel
que pour tout ile degr´e de xisoit diet tel que xnait pour voisins les sommets xn1, . . . , xndn.
On pourra partir d’un graphe r´ealisant la suite et changer des arˆetes s’il ne convient pas.
c. Soit d= (d1, . . . , dn) une suite croissante d’entiers strictement positifs telle que dn< n. Soit
d0= (d0
1, . . . , d0
n1) la suite obtenue `a partir de den supprimant le dernier terme, en retranchant
1 aux dnderniers termes de la s´equence restante et en la r´eordonnant si besoin afin qu’elle soit
croissante. Montrer que dest r´ealisable si et seulement si d0l’est.
d. En d´eduire si les suites (1,2,2,4,4,5) et (1,1,2,2,2,3,3,4,4,5,7) sont r´ealisables. Dans l’affir-
mative, on dessinera un graphe associ´e.
Ex 5 Ecrire une fonction prenant en argument un graphe oriene et le transformant en le graphe non
oriene associ´e. Ecrire de mˆeme une fonction transformant un graphe non orient´e en le graphe orient´e
associ´e. Ces fonctions ont pour type graphe unit.
Ex 6 On identifie ici {0,1}et {true,false}de mani`ere usuelle. Sur l’ensemble Mn({0,1}), on d´efinit
une multiplication not´ee de la fa¸con suivante : si A, B ∈ Mn({0,1}), D= (di,j ) = ABv´erifie
di,j =0 si ai,kbk,j = 0 kS
1 sinon
Soit Gun graphe de matrice d’adjacence A. On note a(k)
i,j l’´el´ement d’indice (i, j) de A(k)(it´er´ee de
Apour ). Montrer que jest atteignable depuis idans Gsi et seulement si il existe m1 tel que
a(m)
i,j = 1.
Ex 7 Soit G= (S, A) un graphe orient´e avec S={0,1, . . . , n 1}. Un ordre topologique sur Gest
une bijection o:SStelle que pour toute arˆete (u, v) de G,o(u)< o(v) ; l’ordre oest repr´esene
par le tableau [|o.(0); . . . ;o.(n1)].
1
1. Donner un ordre topologique pour le graphe suivant.
0
k1
k
2
k3
k
6
-
@
@
@
@R
2. Montrer que Gadmet un ordre topologique si et seulement s’il est sans cycle. Dans le sens
r´eciproque, on donnera un algorithme constructif (sans se pr´eoccuper des structures de donn´ees).
3. Ecrire une fonction tri : graphe int vect prenant en argument la matrice d’adjacence
d’un graphe orient´e acyclique et renvoyant un ordre topologique de ce graphe. On impose une
complexit´e O(n2) o`u nest le nombre des sommets.
Ex 8 Ecrire une fonction prenant en argument un graphe repr´esent´e par le tableau des listes de
successeurs et renvoyant son graphe transpos´e c’est `a dire le graphe o`u toutes les arˆetes changent de
sens. La signature de cette fonction est graphe liste graphe liste. Quelle est sa complexit´e ?
Ex 9 Ecrire des fonctions de passage d’une repr´esentation des graphes `a l’autre.
Ex 10 On consid`ere dans cet exercice une nouvelle repr´esentation des graphes. On suppose que le
graphe poss`ede nsommets num´erot´es 0, . . . , n 1 et marˆetes. Le graphe est alors repr´esent´e par deux
tableaux d’entiers a, de taille m, et p, de taille n+ 1. Dans le tableau a, on trouve (dans cet ordre)
les successeurs de 0, puis ceux de 1,. . ., puis ceux de n1. Si in1, p.(i) est le num´ero de la case
de ao`u l’on trouve le premier successeur d’un sommet de num´ero i. Il est ainsi naturel de donner
`a p.(n) la valeur m. Le type Caml est le suivant :
type grapheFS = {A : int vect ; P : int vect} ;;
1. D´efinir en Caml le graphe suivant
2

0

3


4

6

1


5


 -
?
@
@
@I
6
-
?
2. Ecrire des fonctions de passage de cette repr´esentation `a celle avec matrice d’adjacence et
r´eciproquement.
Ex 11 On appelle coloration d’un graphe Gtoute application cde l’ensemble Sdes sommets de
Gdans l’ensemble des entiers naturels. Pour tout sommet s, l’entier c(s) s’appelle couleur de s
pour la coloration c. On choisit de repr´esenter une coloration par un tableau d’entiers (ayant pour
taille le nombre de sommets du graphe). Ainsi, si color repr´esente une coloration cdu graphe, on a
color.[s] = c(s) pour tout sommet s.
type Coloration == int vect;;
2
Une coloration cest une bonne coloration de Gsi pour toute arˆete {s, t}de Gon a c(s)6=c(t) ;
autrement dit, une coloration est une bonne coloration si les extr´emit´es de toute arˆete sont de couleurs
diff´erentes.
Ecrire une fonction testant si une coloration est bonne pour un graphe dans les deux cas suivants.
1. Le graphe est repr´esent´e par listes d’adjacences.
2. Le graphe est repr´esent´e par matrice d’adjacence.
Ex 12 La fonction de parcours en largeur s’´ecrit comme suit :
let largeur g s =
let n=vect_length g in
let b=make_vect n false in
b.(s) <- true ;
let e=queue__new() in
queue__add s e;
while queue_length e > 0 do
let x=queue__take e in
(* traitement de tous les fils de x *)
done;
b;;
1. On suppose le graphe repr´esent´e par sa matrice d’adjacence. Compl´eter la fonction.
2. On suppose le graphe repr´esene par un tableau de listes d’adjacences. Compl´eter la fonction en
commen¸cant par ´ecrire une fonction r´ecursive locale (situ´ee juste avant la boucle) et permettant
le parcours d’une des listes d’adjacence.
3. Calculer la complexit´e de ces fonctions et comparer ces complexit´es.
Ex 13 On consid`ere le graphe
C

A

D


E

G

B


F


 -
?
@
@
@I
6
-
?
Donner la suite des sommets dans un parcours en largeur puis en profondeur `a partir de A. On
privil´egiera les voisins dans l’ordre alphab´etique.
Ex 14 Un ordre de construction connexe d’un graphe Gest un ordre x1, . . . , xnde ses sommets
tel que le sous-graphe de Gengendr´e par les hpremiers sommets soit connexe pour tout h[1..n].
a. Montrer que Gest connexe si et seulement si il poss`ede un ordre de construction connexe. Dans
le sens direct, on donnera une preuve constructive.
b. En d´eduire qu’un graphe connexe d’ordre nposs`ede au moins n1 arˆetes.
Ex 15 Consid´erons un graphe orient´e. On dira que deux sommets xet ysont fortement reli´es s’il
existe un chemin de xvers yet un autre de yvers x. On d´efinit ainsi une relation d’´equivalence
sur l’ensemble des sommets dont les classes d’´equivalence s’appellent les classes de forte connexit´e du
graphe.
3
1. Si G= (X, U ) est graphe, on appelle fermeture transitive de Gle graphe G+= (X, U+) o`u
(x, y)U+quand il existe un chemin (non r´eduit `a un point) dans Gd’extr´emit´e initiale xet
d’extr´emit´e finale y. On veut ici construire la matrice d’adjacence de G+connaissant celle de
G.
On note Θpl’ensemble des arcs (x, y)X2tels qu’il existe un chemin de x`a ydans Gne
passant que par les sommets x0, . . . , xp1(c’est `a dire tels que les sommets interm´ediaires entre
xet ysont de num´ero p1). On a bien sˆur Θ0=Uet Θn=U+. En remarquant que
Θp+1 = Θp∪ {(x, y)/ x 6=y, (x, xp)Θpet (xp, y)Θp}
´ecrire une fonction fermeture : bool vect vect bool vect vect de calcul de fermeture
transitive.
2. Ecrire une fonction composantesfortes : bool vect vect int vect calculant les com-
posantes fortement connexes d’un graphe. Le r´esultat sera un tableau ctel que c.(i) = c.(j) si
et seulement si iet jsont dans la mˆeme classe de forte connexit´e.
Ex 16 Un point d’articulation d’un graphe connexe est un sommet dont la suppression d´econnecte
le graphe. Montrer que tout graphe connexe ayant au moins une arˆete poss`ede au moins deux sommets
qui ne sont pas des points d’articulation.
Ex 17 Un isthme d’un graphe connexe est une arˆete dont la suppression d´econnecte le graphe. Soit
e={x, y}une arˆete d’un graphe connexe G. Montrer l’´equivalence des trois propri´et´es suivantes.
a. eest un isthme de G.
b. (x, y) est la seule chaˆıne de Greliant xet y.
c. en’appartient `a aucun cycle de G.
Ex 18 Etant donn´e un graphe non oriene G, on veut savoir s’il est possible de colorier les sommets de
Gavec deux couleurs en sorte que deux sommets adjacents aient des couleurs diff´erentes. On suppose
les graphes repr´esenes par listes d’adjacences. Une coloration sera un tableau d’entiers ´egaux `a 0 ou
1 (nos deux couleurs) :
type Graphe == (int list) vect;;
type Coloration == int vect;;
1. Ecrire une fonction color2 : Graphe Coloration telle que l’appel color2 g avec un
graphe suppos´e connexe et qui renvoie une 2-coloration quand elle existe et un message d’erreur
sinon.
2. Modifier votre fonction pour que l’on n’ait plus besoin de l’hypoth`ese de connexit´e.
4
1 / 4 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 !