Calendrier scolaire 2015-2016

Université François Rabelais de Tours
Laboratoire de Mathématiques et Physique Théorique
Mathématiques Discrètes et Algorithmique
Mimats
Semestre 9
2. Quelques graphes remarquables
2.1. Graphes bipartis et couplages. Tous les graphes considérés dans cette partie sont simples et
non-orientés.
Définition 2.1. Un graphe G = (V, E) est biparti s’il existe une partition V1 ∪ V2 de V telle que il n’existe
pas d’arête reliant deux sommets de V1 ou deux sommets de V2 .
On vérifie facilement qu’un graphe est biparti si on peut colorier ses sommets avec deux couleurs de telle
manière qu’aucun sommet de même couleur ne soit relié.
Exemple 2.2. Le graphe G est biparti de partition associée {a, b, d} et {c, e, f, g}. Le graphe H n’est pas
biparti.
Figure 1. Graphes G et H.
On désigne par Kn,m = (V, E) le graphe simple tel que :
• V = V1 t V2 , |V1 | = n et |V2 | = m,
• Pour tous (u, v) ∈ V1 × V2 , {u, v} ∈ E.
On a par exemple
Figure 2. Exemples de graphes complets bipartis.
Définition 2.3. Soit G = (V, E) un graphe simple.
• Un couplage C est un sous-ensemble de E tel que pour tout (a, a0 ) ∈ C 2 on a a ∩ a0 = ∅. En d’autres
termes, les sommets de a et a0 sont disjoints.
• Un couplage de X ⊂ V est un couplage C tel que
(a) ∀x ∈ X, ∃a ∈ C, x ∈ a ;
(b) ∀a ∈ C, a ∩ X 6= ∅.
• Un couplage parfait est un couplage de V .
Exemple 2.4. Le graphe de gauche admet un couplage parfait de V1 dans V2 (les arêtes bleues). Pas celui
de droite.
V2
V2
1
2
Théorème 2.5 (Lemme des mariages de Hall). Soit G = (V, E) un graphe biparti de partition associée
V = V1 ∪ V2 . Alors G admet un couplage de V1 si et seulement si
(∗)
∀A ⊂ V1 , |N (A)| ≥ |A|.
Démonstration. Si G possède un couplage de V1 , il est clair que pour tout A ⊂ V1 , on a |N (A)| ≥ |A|
puisque, par définition d’un couplage de V1 , chaque sommet de A est relié à un sommet différent de V2 par
une arête de C.
Supposons maintenant que pour tout A ⊂ V1 on a |N (A)| ≥ |A| et montrons que G possède un couplage
de V1 . On procède par récurrence forte sur le nombre de sommets dans V1 .
Initialisation. Si |V1 | = 1 alors V1 contient exactement 1 sommet v et comme |N (v)| ≥ |V1 | = 1, v est
connecté à au moins un sommet de V2 . Il suffit alors de choisir une arête adjacente à v pour obtenir un
couplage de V1 .
Hypothèse de récurrence. Soit k ≥ 1. Tout graphe biparti G = (V, E) de partition V1 t V2 tel que (1)
|V1 | ≤ k et (2) pour tout A ⊂ V1 on a |N (A)| ≥ |A|, possède un couplage de V1 .
Hérédité. Soit maintenant un graphe biparti G = (V, E) de partition associée V1 t V2 avec |V1 | = k + 1
et tel que pour tout A ⊂ V1 on a |N (A)| ≥ |A|. On veut montrer que G possède un couplage de V1 . On
distingue deux cas :
(a) Pour tout 1 ≤ j ≤ k, tout sous-ensemble A ⊂ V1 tel que |A| = j vérifie N (A) ≥ |A| + 1 = j + 1.
(b) Il existe 1 ≤ j ≤ k et A0 ⊂ V1 tel que |A0 | = j ≤ k et N (A) = j.
(On remarque que ces deux cas couvrent toutes les possibilités puisque (b) est la négation de (a).)
Cas (a). Soit v ∈ V1 et soit w ∈ N (v). On a w ∈ V2 . Soit G0 = (V 0 , E 0 ) le graphe induit par V 0 = V \{v, w}.
On voit que G0 est biparti de partition V10 t V20 où V10 = V1 \{v} et V20 = V2 \{w}. De plus |V10 | = k. Soit
A0 ⊂ V10 , on désigne par NG0 (A0 ) l’ensemble des voisins de A0 dans G0 . On voit facilement que
NG0 (A0 ) ≥ N (A0 ) − 1 ≥ (|A0 | + 1) − 1 = |A0 |
et on peut donc utiliser l’hypothèse de récurrence pour construire un couplage C 0 de V10 . On obtient un
couplage de V en ajoutant l’arête [v, w] à C 0 .
Cas (b). Soit A0 ⊂ V1 telle que |N (A0 )| = |A0 | = j ≤ k. Par hypothèse de récurrence, on peut construire un
couplage CA0 de A0 (dans le graphe induit par A0 ∪ N (A0 )). Soit G0 le graphe induit par V \(A0 ∪ N (A0 )).
On obtient un graphe biparti H de partition associée V10 t V20 ou V10 = V1 \A0 et V20 = V2 \N (A0 ). Montrons
que H satisfait les conditions (1) et (2) de l’hypothèse de récurrence. Pour (1) c’est clair. Si G0 ne satisfait
pas la condition (2), alors il existe un ensemble A à t éléments tel que 1 ≤ t ≤ k + 1 − j et N (A) < t. Mais
alors dans G, l’ensemble A ∪ A0 contiendrait strictement moins de j + t voisins, ce qui est impossible. Ainsi,
G0 satisfait (1) et (2) et par récurrence on peut trouver un couplage C 0 de V10 . On vérifie alors facilement
que C 0 ∪ CA0 est un couplage de V1 , ce qui complète la preuve.
Corollaire 2.6. G admet un couplage parfait si et seulement si
(†)
∀A ⊂ V tel que A ⊂ V1 ou A ⊂ V2 , on a |N (A)| ≥ |A|.
Démonstration. Supposons que G admet un couplage parfait C. Alors, puisque G est biparti on voit que
toute arête dans C a une extrémité dans V1 et l’autre dans V2 . Ainsi, C est à la fois un couplage de V1
et un couplage de V2 . En appliquant (∗) du théorème précédent deux fois, on obtient directement (†).
Réciproquement supposons que G satisfait (†). Alors, d’après (1), on voit que G possède un couplage C1
de V1 et un couplage C2 de V2 . On a à la fois |V1 | = |C1 | ≤ |V2 | et |V2 | = |C2 | ≤ |V1 |. Finalement |V1 | = |V2 |
et C1 et C2 sont en fait des couplages parfaits.
Corollaire 2.7. Soit G = (V, E) un graphe biparti k-régulier de partition V1 ∪ V2 . Alors G admet un
couplage parfait.
Démonstration. Soit X ⊂ V1 tel que |X| = t. Par régularité du graphe, il y a kt arêtes incidentes à un
sommet de X. On note A l’ensemble de ces arêtes. Chacune de ces arêtes est incidente à un sommet de
V2 . On rappelle que
N (X) = {v ∈ V2 | ∃a ∈ A tel que v ∈ a}.
Or le nombres d’arêtes incidentes à N (X) est k|N (X)| ≥ A = kt, d’où |N (X)| ≥ t = |X|.
3
2.2. Graphes et chemins eulériens. Dans cette partie nous ne considèrerons que des graphes nonorientés. Cependant les résultats peuvent s’étendre au cas des graphes orientés.
Soit G = (V, E, N ) un graphe non-orienté. On rappelle que
∗ Une chaîne est simple si elle ne contient pas deux fois la même arête.
∗ Une chaîne est fermée si ses deux extrémités coïncident.
∗ Un cycle est une chaine fermée simple.
Définition 2.8. Soit G = (V, E) un graphe. Une chaîne (resp. cycle) eulérienne de G est une chaîne (resp.
cycle) simple qui passe par toutes les arêtes de G. Un graphe eulérien est un graphe qui possède un cycle
eulérien.
Exemple 2.9. Les ouvrages de théorie des graphes reprennent toujours le célèbre exemple des ponts de
Königsberg. Nous ne dérogerons pas à cette règle. Au XVII-ième siècle, les habitants de Königsberg (actuel
Kaliningrad, ville de Russie proche de la Lituanie et de la Pologne où coule la rivière Pregel) voulaient se
promener le dimanche en passant une et une seule fois par chacun des sept ponts de la ville. Les ponts
étaient disposés comme dans la figure suivante :
Figure 3. Les ponts de Königsberg
Une modélisation du problème revient à considérer un graphe ayant comme sommets, les deux rives et les
deux îles et comme arêtes, les sept ponts. Puisqu’il n’y a aucune contrainte sur le sens de parcours des
ponts, on considère un graphe non orienté :
Figure 4. Modélisation du problème des ponts de Königsberg
La question générale sous-jacente est donc de déterminer pour un graphe donné s’il existe un cycle eulérien.
Lemme 2.10. Soit G = (V, E) un graphe connexe dont tous les sommets sont de degres supérieurs ou
égales à 2. Alors G contient un cycle.
Démonstration. La preuve utilise un algorithme de marquage. Initialement tous les sommets sont non
marqués. Un sommet x1 est marqué arbitrairement. On construit alors une séquence x1 , ..., xk de sommets
marqués en choisissant arbitrairement pour xi+1 un sommet non marqué adjacent à xi . L’algorithme
s’arrête lorsque xk ne possède plus de voisin non marqué. Puisque ce sommet est de degré au moins 2, il
possède, outre xk−1 , un autre voisin xj dans la séquence, j < k − 1. Alors (xk , xj , xj+1 , . . . , xk−1 , xk ) est
un cycle.
Théorème 2.11. Un graphe connexe G = (V, E, N ) d’ordre n est eulérien si et seulement si tous les
degrés de ses sommets sont pairs.
Démonstration. Supposons qu’un graphe G soit eulérien. Il existe alors un cycle c parcourant une et
une seule fois chaque arête. Le graphe G est donc connexe, puisque c relie tous les sommets entre eux.
Considérons un sommet x. Lors du parcours du cycle, à chaque fois qu’une arête est incidente à x, il faut
une autre arête incidente à x pour quitter x. Le sommet x est donc de degré pair.
Réciproquement considérons un graphe G connexe dont tous les sommets de degré pair. Montrons par
récurrence sur le nombre d’arêtes que G est eulérien.
Si G se réduit à un unique sommet isolé, il est évidemment eulérien.
Sinon tous les sommets de G sont de degré supérieur ou égal à 2. Ceci implique qu’il existe un cycle sur
4
G d’après le lemme précédent. Considérons le graphe partiel H constitué des arêtes en dehors du cycle.
Les sommets de H sont également de degré pair, le cycle contenant un nombre pair d’arêtes incidentes
pour chaque sommet. Par induction chaque composante connexe Hi de H est un graphe eulérien, et admet
donc un cycle eulérien . Pour reconstruire un cycle eulérien sur G, il suffit de fusionner le cycle avec les
différents cycles . Pour cela on parcours le cycle depuis un sommet arbitraire ; lorsque l’on rencontre pour
la première fois un sommet x appartenant à Hi , on lui substitue le cycle. Le cycle obtenu est un cycle
eulérien pour G, le cycle et les cycles formant une partition des arêtes.
Figure 5. Construction d’un cycle eulérien
On adapte facilement la preuve pour trouver le corollaire suivant.
Corollaire 2.12. Un graphe connexe possède une chaîne eulérienne joignant deux sommets a et b si et
seulement si a et b sont les deux seuls sommets de degré impair.
2.3. Graphes hamiltoniens. Dans cette section, on s’intéresse à la question (posée initialement par Sir
W. R. Hamilton) de l’existence d’un cycle élémentaire passant par tous les sommet d’un graphe donné.
Etonnamment il n’existe pas de méthode efficace permettant de répondre à cette question. Il est clair qu’il
est suffisant d’étudier les graphes simples.
Définition 2.13. Soit G = (V, E) un graphe simple. Un graphe hamiltonien est un graphe possédant un
cycle élémentaire.
Exemple 2.14. La question orginale de Hamilton était de trouver un chemin “hamiltonien” le long des
arêtes d’un Dodécaèdre. On peut se ramener au problème de trouver un chemin hamiltonien sur un graphe :
On commence par une condition nécessaire pour qu’un graphe soit hamiltonien.
Proposition 2.15. Soit G = (V, E) un graphe (simple et non orienté) hamiltonien. Alors pour tout sousensemble non vide S ⊂ V , le nombre de composantes connexes du graphe induit par V \{S} est inférieur
ou égal à |S|.
Démonstration. Soit S un sous-ensemble non vide de V et u un sommet de S et G0 le graphe induit par
V \{S}. Considérons un cycle hamiltonien C passant par u. On peut voir C comme une suite ordonnée de
sommets (u, w1 , . . . , wn−1 , u). Soient G1 , . . . , Gk , les k composantes connexes de G0 . Si k = 1, le résultat
est trivial. Supposons donc k > 1. Pour i = 1, . . . , k, désignons par ui le dernier sommet de Gi dans le
cycle C et vi , le sommet suivant ui dans ce même cycle.
Montrons que les sommets v1 , . . . , vk appartiennent à S. Raisonnons par l’absurde. Si vi n’appartient pas
à S, il n’est pas supprimé dans le graphe G0 . Les sommets ui et vi sont voisins (en effet, ils sont consécutifs
dans le chemin C). Par conséquent, vi doit appartenir à Gi . Or par définition de ui et de vi , ui est le dernier sommet de Gi dans la suite donnée par C donc vi ne peut pas appartenir à Gi . C’est une contradiction.
On conclut donc que v1 , . . . , vk sont des sommets distincts de S (ils appartiennent à C) et |S| ≥ k.
5
Exemple 2.16. On vérife avec cette proposition que le graphe suivant n’est pas hamiltonien. En effet en
choisissant la partie S composée des sommets encerclés dans le graphe ci-dessous, on obtient 3 composantes
connexes et |S| = 2.
Figure 6. Exemple d’utilisation de la Proposition 2.15
Théorème 2.17 (Dirac). Tout graphe simple G = (V, E) ayant n ≥ 3 sommets et tel que le degré de
chaque sommet est au moins égal à n/2 possède un cycle hamiltonien.
Démonstration. Notons δ = inf v∈V deg(v). Puisque δ ≥ dn/2e, on en conclut que G est connexe. En effet,
si ce n’était pas le cas, G possèderait au moins deux composantes connexes distinctes dont une contient
moins de bn/2c sommets. Or si δ ≥ dn/2e, alors un des sommets de cette composante doit être voisin d’un
sommet d’une autre composante, ce qui est impossible.
Soit C une chaîne élémentaire de longueur maximale. Puisque G est simple, C est entièrement définie par
une suite de sommets x0 , . . . , xk . Par maximalité, tous les voisins de x0 et de xk appartiennent à C (en
effet, sinon, on pourrait étendre C en une chaîne plus longue). Par conséquent, au moins dn/2e sommets
parmi x0 , . . . , xk−1 sont voisins de xk et au moins dn/2e sommets parmi x1 , . . . , xk sont voisins de x0 . De
plus, k + 1 ≤ n. On pose
I := {i | (x0 , xi+1 ) ∈ E}
et
J := {i | (xi , xk ) ∈ E}.
On a I, J ⊂ {0, . . . , k − 1} et |I|, |J| ≥ dn/2e. Ainsi, I et J ne peuvent être disjoint et il existe un indice
i < k tel que (x0 , xi+1 ) ∈ E et (xi , xk ) ∈ E.
Ainsi, le cycle x0 , x1 , . . . , xi , xk , xk−1 , . . . , xi+1 , x0 est un cycle passant une seule fois par chacun des sommets x0 , . . . , xk :
Figure 7. Construction d’un cycle hamiltonien
Montrons que c’est un cycle hamiltonien. En effet, supposons qu’il existe un sommet y n’appartenant pas
à ce cycle. Puisque G est connexe, il existe j ∈ {0, ..., k} tel que (xj , y) ∈ E. De là, on peut construire un
chemin passant par k + 2 sommets distincts. C’est impossible vu le choix de C (de longueur maximale). Le théorème suivant sera l’objet d’un exercice dans le Td 3.
Théorème 2.18 (Ore). Tout graphe simple G = (V, E) ayant n ≥ 3 sommets et tel que le deg(u)+deg(v) ≥
n pour toute paire de sommets non adjacents possède un cycle hamiltonien.