Vous êtes sur la page 1sur 9

TD1 graphes corrige

Renaud Chicoisne
September 2021

1 Exercice 1
Pour
Pun graphe G fini, non oriente et simple, exprimez en
Pfonction de m la valeur
de v∈V(G) d(v). Prouvons par recurrence sur m que v∈V(G) d(v) = 2m.
m = 0: si m = 0 il n’y a pas d’arete, tous les sommets sont isoles, et ont
donc un degre nul, i.e. d(v) = 0, pour tout v ∈ V(G):
X
d(v) = 0 = 2 × 0 = 2m
v∈V(G)

m + 1: Supposons que l’hypothese de recurrence est vraie pour tout graphe


ayant m aretes. Considerons un graphe G ayant m + 1 aretes, et le graphe
G0 defini comme G duquel une arete a ete enlevee (n’importe laquelle). G0 a
donc m aretes et nous pouvons lui appliquer l’hypothese de recurrence pour les
graphes ayant m aretes:
X
dG0 (v) = 2m (1)
v∈V(G0 )

Puisque G0 n’est autre que G auquel on a enleve une arete - disons l’arete (i, j) -
le degre des sommets de G est identique a celui des sommets de G0 , a l’exception
de i et j dont le degre a augmente de 1:
(
dG0 (v) if v ∈
/ {i, j}
dG (v) = (2)
dG0 (v) + 1 if v ∈ {i, j}

En utilisant (1) et (2) nous obtenons


X X
dG (v) = dG (v) + dG (i) + dG (j)
v∈V(G) v∈V(G)|{i,j}
X
= dG0 (v) + dG0 (i) + 1 + dG0 (j) + 1
v∈V(G)|{i,j}
X
= dG0 (v) + 2 = 2m + 2 = 2(m + 1)
v∈V(G)

1
2 Exercice 2
Montrez que dans un graphe non oriente simple, il y a un nombre pair de
sommets avec un degre impair.

2.1 Preuve par recurrence


Prouvons le par recurrence sur m.
m = 0: si m = 0 il n’y a pas d’arete, tous les sommets sont isoles, et ont
donc un degre nul, i.e. d(v) = 0, pour tout v ∈ V(G): Zero etant pair, il n’y a
donc pas de sommet de degre impair: il y a donc un nombre pair de sommets
de degre impair (zero).
m + 1: Supposons que l’hypothese de recurrence est vraie pour tout graphe
ayant m aretes. Considerons un graphe G ayant m + 1 aretes, et le graphe G0
defini comme G duquel une arete a ete enlevee (n’importe laquelle, disons (i, j)).
G0 a donc m aretes et nous pouvons lui appliquer l’hypothese de recurrence pour
les graphes ayant m aretes: G0 a donc un nombre pair de sommets de degre
impair. Comme mentionne dans l’exercice precedent, le degre des sommets
dans G est identique a leur degre dans G0 , a l’exception de i et j dont le degre
augmente de 1 dans G: Isolons quatre cas de figure possible:
1. dG0 (i) est pair et dG0 (j) est pair
2. dG0 (i) est impair et dG0 (j) est impair

3. dG0 (i) est pair et dG0 (j) est impair


4. dG0 (i) est impair et dG0 (j) est pair
apres rajout de (i, j) nous obtenons que

1. dG (i) est impair et dG (j) est impair


2. dG (i) est pair et dG (j) est pair
3. dG (i) est impair et dG (j) est pair
4. dG (i) est pair et dG (j) est impair

Dans les quatre cas de figure, le nombre de sommets de degre impair change de
+2,-2,0 et 0 respectivement, conservant donc la parite venant de l’hypothese a
m.

2.2 Preuve directe


De l’exercice precedent nous avons
X X X
2m = d(v) = d(v) + d(v) (3)
v∈V(G) v∈V(G):d(v) pair v∈V(G):d(v) impair

2
De plus, pour tout v ∈ V(G) definissons k(v) tel que
(
2k(v) Si d(v) est pair
d(v) =
2k(v) + 1 Si d(v) est impair

En remplacant cette derniere expression dans (3) on obtient:


X X X
2m = 2 k(v) + 2 k(v) + 1
v∈V(G):d(v) pair v∈V(G):d(v) impair v∈V(G):d(v) impair
X
=2 k(v) + nombre de sommets de degre impair
v∈V(G)

En d’autres termes, nous avons


 
X
nombre de sommets de degre impair = 2 m − k(v) 
v∈V(G)

3 Exercice 3
Quel est le nombre maximum d’aretes en fonction de n qu’un graphe simple non
oriente peut avoir? Donnez un exemple de famille de graphe qui realise cette
borne.
Chaque sommet d’un graphe simple ne peut etre connecte qu’aux n − 1
autres, i.e. d(v) 6 n − 1 pour tout v ∈ V(G). D’apres la question 1 nous avons
X X
2m = d(v) 6 (n − 1) = n2 − n
v∈V(G) v∈V(G)

En d’autres termes, nous avons donc m 6 n(n − 1)/2. Un graphe complet a n


sommets a exactement m = n(n − 1)/2 aretes.

4 Exercice 4
Soit T = (V, E) un arbre a n sommets. Exprimez m = |E| en fonction de n.
Par recurrence sur n, prouvons que m = n − 1:
n = 1: Un graphe simple ayant un unique sommet n’a pas d’arete donc
m = 0 = n − 1.
n+1: Considerons un arbre T ayant n+1 sommets et le graphe T 0 obtenu en
enlevant une feuille de T (i.e. un noeud de T de degre 1) et l’arete le reliant au
reste de T . T 0 est un arbre car il reste connexe. Il a n sommets et satisfait donc
l’hypothese de recurrence a n: |E(T 0 )| = n − 1. Puisque |E(T )| = |E(T 0 )| + 1,
on obtient le resultat.

3
5 Exercice 5
Soit G = (V, E) un graphe simple non oriente, ecrivez un algorithme qui deter-
mine si G est connexe. L’algorithme devra:
• Repondre oui si G est connexe

• Donner deux sommets appartenant a deux composantes connexes differ-


entes si G n’est pas connexe.

1. Ecrivez un algorithme qui realise les conditions demandees. Voir Algo-


rithme 1. Si σ(v) > 0 pour tout v ∈ V , G est connexe. Dans le cas

Algorithm 1: Parcours generique


Data: Un graphe non oriente simple G = (V, E) et un sommet s ∈ V
Result: σ : V → N
1 σ(v) = −1 pour tout v ∈ V ;
2 L ← {s};
3 i ← 0;
4 while L 6= ∅ do
5 v ← un element de L;
6 L ← L|{v};
7 σ(v) ← i;
8 for chaque voisin w de v qui n’est pas dans L et t.q. σ(w) = −1 do
9 L ← L ∪ {w};
10 i + +;
11 return σ

contraire, s et au moins un autre sommet v tel que σ(v) = −1 sont dans


deux composantes connexes differentes.

2. Montrez que l’algorithme est valide (correction) Quand l’algorithme ter-


mine, considerons un sommet v tel que σ(v) 6= −1. il a donc ete marque
par un de ses voisins, qui a lui meme ete marque par un de ses propres
voisins. De maniere recursive, il existe donc un chemin entre s et v, ce qui
implique qu’ils appartiennent tous deux a la meme composante connexe.
La contraposee est similaire et prouve l’equivalence s et v appartiennent a
la meme composante connexe si et seulement si σ(v) 6= −1. Si σ(v) 6= −1
pour tout v ∈ V , tous les sommets appartiennent donc a la meme com-
posante connexe et donc G est connexe.
3. Determinez la complexite de ce dernier Chaque sommet est inspecte une
fois et chaque arete sert a marquer un sommet une fois, donnant une
complexite totale de O(n + m).

4
6 Exercice 6
Soit G = (V, E) un graphe non oriente, ecrivez un algorithme qui renvoie les
differentes composantes connexes du graphe.

Algorithm 2: Identification de composantes connexes


Data: Un graphe non oriente simple G = (V, E)
Result: σ : V → N
1 σ(v) = −1 pour tout v ∈ V ;
2 i ← 0;
3 k ← 0;
4 while k < n do
5 s ← un sommet tel que σ(s) = −1;
6 L ← {s};
7 while L 6= ∅ do
8 v ← un element de L;
9 L ← L|{v};
10 σ(v) ← i;
11 for chaque voisin w de v qui n’est pas dans L t.q. σ(w) = −1 do
12 L ← L ∪ {w};
13 k + +;
14 i + +;
15 return σ

Voir Algorithme 2. Quand l’algorithme termine, σ(v) represente le numero


de la composante connexe a laquelle v appartient.

7 Exercice 7
Montrez que les enonces suivants sont equivalents:

1. T est un arbre
2. Entre toute paire de sommets (x, y) de V(T ), il existe un unique chemin
Pxy dans T entre x et y
3. T est minimalement connexe (i.e. T est connexe mais T − e ne l’est plus
pour tout e ∈ E(T )).

4. T est maximalement acyclique (i.e. T ne contient pas de cycle mais T +


(x, y) contient un cycle pour tout (x, y) ∈ (V(T ) × V(T ))|E(T )).
1 ⇒ 2: Par l’absurde, supposons qu’il existe une paire de sommets relies par
au moins deux chemins P ⊂ T et P 0 ⊂ T . les arcs P ∪ P 0 ⊂ T contiennent au
moins un cycle contenu dans T , qui n’est donc pas un arbre.

5
2 ⇒ 3: Pour toute paire de sommets (x, y) de T , il n’existe qu’un seul chemin
les reliant dans T . En particulier, considerons e = (x, y) ∈ E(T ). P = (x, y) est
l’unique chemin dans T reliant x et y. Sa supression de T coupe donc l’unique
chemin et deconnecte x de y.
3 ⇒ 4: Par contraposition, supposons que T contient un cycle ou qu’il existe
une arete (x, y) ∈
/ E(T ) tel que T + (x, y) ne contient pas de cycle. Si T contient
un cycle, le retrait de n’importe quelle arete de ce cycle maintient la connexite
de T , ce qui contradit la connexite minimale de T . Finalement, s’il existe une
arete (x, y) ∈
/ E(T ) tel que T + (x, y) ne contient pas de cycle, P = (x, y) est le
seul chemin reliant x et y dans T + (x, y) et que donc T n’etait pas connexe.
4 ⇒ 1: si T es maximalement acyclique, il est acyclique et pour tout (x, y),
l’ajout d’une arete (x, y) a l’arbre cree un cycle, ce qui implique qu’il y avait
deja un chemin entre x et y dans T , prouvant sa connexite.

8 Exercice 8
Soit G = (V, E) un graphe simple non oriente. Ecrivez un algorithme qui
determine si G est un arbre.
En utilisant l’algorithme de la question 5, il est facile de verifier la con-
nexite de T . En utilisant la caracterisation # 3 de la question precedente et
l’algorithme de la question 5, il suffit d’enlever chacune des aretes du graphe T
et verifier la connexite de T − e.
T est connexe et chaque T − e n’est pas connexe pour tout e ∈ E(T ) si et
seulement si T est un arbre.

9 Exercice 9
Pour chacune des representations vues en cours:
1. Matrice d’adjacence
2. Matrice d’incidence

3. Liste d’adjacence
Indiquez
1. La taille de la representation en memoire
2. Le temps necessaire pour determiner si deux sommets sont adjacents

La matrice d’adjacence est de taille n × n et vaut 1 si il existe un arc (i, j),


zero sinon. Elle prend n2 elements en memoire, et l’adjacence se determine en
inspectant le coefficient (i, j) en O(1).
La matrice d’incidence est de taille n × m et vaut 1 si le sommet i est une
extremite de l’arete e , zero sinon. Elle prend nm elements en memoire, et

6
l’adjacence se determine en inspectant les m coefficients de la ligne i et les m
coefficients de la ligne j en O(m).
La liste d’adjacence est de taille m et garde une liste des voisins de chaque
sommet. Elle prend m elements en memoire, et l’adjacence se determine en
inspectant les d(i) voisins de i. Dans le pire des cas O(m).

10 Exercice 10
Soit G = (X, Y, E) un graphe biparti:

1. Montrez que m 6 |X| × |Y |


Denotons p = |X| et q = |Y |. Puisque G est biparti, chaque sommet de X
ne peut etre relie qu’au maximum a tous les sommets de Y (q arcs) pour
chacun des p sommets de X: pq aretes au maximum: m 6 pq.
P P
2. Montrez que x∈X d(x) = y∈Y d(y)
Tous les arcs de G ont une extremite dans X et l’autre dans Y . Chaque
arete contribue donc d’egale maniere a un sommet de chaque cote, prou-
vant le resultat.
3. Montrez que m 6 n2 /4
Fixons n et cherchons comment repartir les noeuds de chaque cote de G
de maniere a maximiser le nombre d’aretes. Nous pouvons trouver de tels
p et q en resolvant le probleme d’optimisation suivant:

max {pq : p, q > 0, p + q = n} = max p(n − p)


p,q p∈[0,n]

Les conditions d’optimalite nous donnent p∗ = n/2 = q ∗ et la valeur


objectif est n2 /4. 

11 Exercice 11
Caracterisez les graphes k-reguliers pour k ∈ {0, 1, 2}.
Un graphe est k-regulier si tous ses sommets on le meme degre k.
1. k = 0: un graphe 0-regulier n’a pas d’arete, il est donc completement
compose de sommets isoles.
2. k = 1: un graphe 1-regulier est un graphe entierement compose d’aretes
isolees entre elles (i.e. c’est un matching), et ayant un nombre pair de
sommets.

3. k = 2: un graphe 2-regulier est un graphe entierement compose de cycles


disjoints.

7
12 Exercice 12
1. Si G est un graphe non oriente simple tel que δ(G) > n/2 − 1 alors G est
connexe.
δ(G) est le degre minimal de G defini par δ(G) = minv∈V(G) d(G). Par
l’absurde, supposons que G est separe en deux composantes non con-
nectees entre elles (V1 , E1 ) et (V2 , E2 ) ayant respectivement p sommets, q
aretes et n − p sommets, m − q aretes. D’apres la question 1, nous savons
que
X n−2
2q = d(v) > pδ(G) > p
2
v∈V1
X n−2
2(m − q) = d(v) > (n − p)δ(G) > (n − p)
2
v∈V2

D’apres l’exercice 3 nous avons aussi


2q 6 p(p − 1)
2(m − q) 6 (n − p)(n − p − 1)
Finalement, nous avons
n−2
p < 2q 6 p(p − 1)
2
n−2
(n − p) < 2(m − q) 6 (n − p)(n − p − 1)
2
En comparant les bornes, nous devons necessairement avoir, apres simpli-
fication, que n < 2p et n > 2p, ce qui est impossible. 
2. Pour n pair, trouvez un graphe (n/2 − 1)-regulier simple qui n’est pas
connexe. Le graphe compose de deux graphes complets disjoints a n/2
sommets chacun est bien (n/2 − 1)-regulier et n’est pas connexe.

13 Exercice 13
Soit G = (V, E) un graphe simple non-oriente et deconnecte.
1. Montrez que le complementaire de G, Ḡ = (V, Ē) est connexe. Con-
siderons deux sommets (i, j) ∈ V × V
(a) Si (i, j) ∈
/ E, alors (i, j) ∈ Ē et donc i et j sont connectes dans Ḡ.
(b) Si (i, j) ∈ E, alors ils appartiennent a une meme composante connexe
dans Ḡ. Puisque G n’est pas connexe, il existe un sommet k ∈ V
n’appartenant pas a la meme composante connexe que i et j dans
G. Cela implique que (i, k) ∈ / E et (j, k) ∈
/ E, impliquant a son tour
que (i, k) ∈ Ē et (j, k) ∈ Ē, et que donc le chemin (i, k, j) relie i et j
dans Ḡ.

8
Dans les deux cas, i et j sont connectes dans Ḡ. 
2. Qu’en est-il de la reciproque ? La reciproque est fausse: un chemin sur
quatre sommets et connexe, son complementaire est aussi un chemin sur
4 sommets, et est aussi connexe. 

14 Exercice 14
Ecrivez un algorithme qui prend pour entree un graphe non oriente G = (V, E)
et qui renvoie comme resultat un arbre couvrant T de G.
Cf. notes de cours.

15 Exercice 15
Concevez un algorithme qui, etant donne un graphe G non oriente, sera capable
de determiner si G est biparti.
Cf. notes de cours.

Vous aimerez peut-être aussi