Graphes
Graphes
I Graphes simples
II Multigraphes
III Chaînes et cycles
IV Arbres
I Graphes simples
I-1 Définitions
I-2 Bestiaire
I-3 Sous-graphes, le théorème de Turán
I-4 Colorations
I-5 Graphes planaires
I-1 Définitions
Un
graphe simple est un couple
G=(
S,
A) d'ensembles finis. L'ensemble
S des
sommets est supposé non vide. Son cardinal, le nombre
n de sommets est appelé l'
ordre du graphe
G.
L'ensemble
A des
arêtes est un sous-ensemble quelconque de l'ensemble des parties à deux éléments ou
paires de sommets. Les deux éléments d'une arête
a sont ses
extrémités. Comme il y a
paires de sommets, il y a entre
0 et
arêtes.
On dit que deux sommets
s et
s' sont
voisins si
est une arête. Le nombre de voisins du sommet
s est appelé son
degré et est souvent noté
d(
s). Un
sommet isolé est un sommet de degré 0, c'est-à-dire sans voisin.
Donnons tout de suite un résultat fondamental
Théorème
Le nombre d'arêtes d'un graphe simple est égal à la demi-somme des degrés de ses sommets:
Démonstration
Notons
B l'ensemble des bouts, couples
tels que
. Comme chaque arête a deux bouts, on a
par le principe des bergers. D'autre part, chaque sommet
s appartient à
d(s) arêtes. On a donc
, d'où le résultat.
En conséquence
Corollaire
Le nombre de sommets de degré impair d'un graphe simple est pair.
On utilise souvent des raccourcis, parlant du graphe plutôt que de ses sommets ou de ses arêtes. Par exemple, le
degré minimum, respectivement
maximum, du graphe
G est défini comme
respectivement
Si ces deux nombres sont égaux, c'est-à-dire si tous les sommets ont le même degré
k, on dit que le graphe est
k-
régulier.
Une
représentation plane du graphe
G=(
S,
A) est un dessin plan, comportant
points étiquetés par les éléments de
S et pour chaque arête
, une courbe simple, par exemple un segment de droite, joignant les sommets étiquetés
s et
s'. Les croisements entre ces représentations des arêtes ne sont pas significatifs. Toutefois, il est souvent préférable de les éviter si possible.
Un
graphe planaire est un graphe qui admet une représentation plane sans croisement, mais cette notion ne jouera pas un rôle central dans ce cours.
Voici deux représentations du graphe
et
Un
isomorphisme du graphe simple
G=(
S,
A) sur le graphe simple
G'=(
S',
A') est une bijection
telle que
Il est facile de voir que cela définit une relation d'équivalence sur les graphes.
Par exemple, il y a
8 graphes distincts dont l'ensemble des sommets est
:
Ils se répartissent en quatre classes d'isomorphisme. On dit qu'il y a,
à isomorphisme près, 4 graphes simples d'ordre 3 distincts:
En effaçant les étiquettes des sommets, on obtient une représentation plane d'un graphe à isomorphisme près.
I-2 Bestiaire
Nous allons donner des exemples de (classes d'isomorphismes de) graphes simples naturels.
I-3 Sous-graphes, le théorème de Turán
Le
graphe complémentaire du graphe simple
G=(
S,
A) est un graphe
qui a les mêmes sommets que
G, mais dans lequel deux sommets distincts sont voisins si et seulement si ils ne le sont pas dans
G. En d'autre termes, on a
. Un graphe est
auto-complémentaire si et seulement si il est isomorphe à son complémentaire. Les deux figures plus haut pour
C5 et
K5 montrent que
C5 est auto-complémentaire.
Un
sous-graphe d'un graphe simple
G=(
S,
A) est un graphe
G'=(
S',
A') tel que
et
. On dit que c'est un sous-graphe
couvrant
si
S'=
S. Pour toute partie
S' de
S, on définit le
sous-graphe de
G induit par
S' et on note
G(
S') le graphe
G(
S')=(
S',
A'), où
est l'ensemble des arêtes de
A dont les deux extrémités sont dans
S'.
On dit que
G contient le graphe
G' s'il existe un sous-graphe de
G isomorphe à
G'. Nous allons prouver le
Théorème [de Turán]
Soit
et
des entiers. Si le graphe simple
G=(
S,
A) d'ordre
n ne contient pas de
p-clique, alors
Démonstration
Par récurrence sur
n et
p. Pour
n=1 ou
p=2, il n'y a rien à démontrer. Soit donc
n>1 et
p>2 deux entiers, et supposons le résultat vrai pour
p'<
p ou
n'<
n. On considère un graphe simple
G=(
S,
A) d'ordre
n qui ne contient pas de
p-clique.
Si
G ne contient pas de
(
p-1)-clique, on peut appliquer l'hypothèse de récurrence avec
p'=
p-1. On a donc
Nous pouvons donc supposer que
G contient une
(
p-1)-clique, c'est-à-dire qu'il existe une partie
S' de
S de cardinal
p-1 telle que tous les éléments de
S' sont voisins entre eux. Notons
. Si
S'' est vide, le graphe
G est la clique
, on a
n=
p-1 et
Sinon, le graphe induit
G''=
G(
S'') ne contient pas non plus de
p-clique et a un ordre
n''=
n-
p+1<
n. On peut lui appliquer l'hypothèse de récurrence et on a
Les arêtes de
G sont de trois sortes: celles qui ont leurs deux extrémités dans
S', au nombre de
, celles dont les deux extrémités sont dans
S'', au nombre de
majoré ci-dessus, et celles dont une extrémité est dans
S' et l'autre dans
S''. Pour chaque sommet
s de
S'', il y a au moins un sommet
t de
S' qui n'est pas voisin de
s, puisque autrement
serait une
p-clique de
G. Il y a donc au plus
p-2 arêtes de la troisième espèce qui ont
s pour extrémité, et il y a au plus
(
p-2)
n'' arêtes de troisième espèce en tout. Au total, on a
On remarque que si
n=
q(
p-1) est un multiple de
p-1, on peut construire un graphe d'ordre
n de la façon suivante: on répartit les sommets en
p-1 groupes de
q éléments et deux sommets quelconques sont voisins si et seulement si ils n'appartiennent pas au même groupe. Voici l'exemple
p=5,
q=3:
Il est clair que ce graphe ne contient pas de
p-clique puisque d'après le principe des tiroirs toute partie de
S de cardinal
p contient deux sommets de même groupe, donc non voisins. Comptons les arêtes du graphe. Il y a
paires de groupes et
q2 arêtes entre éléments de cette paire de groupes. On a donc
et la borne donnée par le théorème de Turán est atteinte.
I-4 Colorations
Une application
de l'ensemble des sommets d'un graphe simple
G=(
S,
A) est une
coloration du graphe si l'image par
f d'une arête est toujours un ensemble à 2 éléments. On appelle
couleur du sommet
s l'élément
f(
s) de
C et la condition s'exprime sous la forme ``Si deux sommets sont voisins, ils sont de couleurs différentes''.
Le plus souvent, on ne s'intéresse pas aux couleurs, mais seulement à la répartition des sommets en couleurs distinctes.
Les sommets d'une couleur donnée forment un
stable de
G, c'est-à-dire une partie de
S qui ne contient aucune paire de sommets voisins.
Si
, on dit que la coloration utilise
k couleurs. Les ensembles de sommets des différentes couleurs forment une
partition de
S en
k
stables. On dit que le graphe
G est
k-
parti (
biparti pour
k=2,
triparti si
k=3, etc.) s'il existe une telle partition, ou encore
s'il existe une coloration de
G qui utilise exactement
k couleurs. Nous verrons plus loin une caractérisation simple des graphes bipartis.
Nous ajoutons ici un spécimen dans notre bestiaire. Soit
un entier et
une famille d'entiers non nuls. On définit le
graphe multiparti complet
de la manière suivante. L'ensemble
S des sommets a
éléments. Il est partitionné en
k parties
, avec
pour tout
i. Deux sommets sont voisins si et seulement si ils n'appartiennent pas à la même partie. C'est, bien sûr, un graphe
k-parti. Le graphe
est représenté plus haut dans la discussion du théorème de Turán. Voici une représentation de
Il est clair que l'application identique
IS est une coloration de
G qui utilise
n couleurs.
Il est alors naturel de se demander combien de couleurs sont nécessaires pour colorier un graphe
G.
Le
nombre chromatique
du graphe
G est le plus petit entier
k pour lequel il existe une coloration de
G utilisant
k couleurs.
La proposition suivante donne les nombres chromatiques associés aux graphes vus plus haut.
Proposition
-
si et seulement si
G est un
n-stable,
-
si et seulement si
G est une
n-clique,
-
pour
,
-
-
pour
,
-
,
-
.
La preuve de cette proposition sera faite en exercice.
À chaque numérotation
des sommets, on fait naturellement correspondre une coloration par des entiers naturels non
nuls grâce à l'
algorithme glouton:
pour i allant de 1 à n faire
colorier le sommet i avec la première couleur parmi 1,2,3...
qui n'est pas déjà utilisée par un voisin du sommet i
fin faire
Ainsi, le sommet
s1 est colorié avec la couleur 1, le sommet
s2 est colorié avec la couleur 2 s'il est voisin de
s1 et avec
c1 sinon, etc.
Dans la figure suivante, nous avons appliqué cet algorithme deux fois au même graphe, mais avec des numérotations différentes des sommets. Entre parenthèses les numéros des couleurs sont indiqués. On voit que la première numérotation utilise 4 couleurs en tout alors que la deuxième en utilise 5. On peut montrer qu'il existe toujours une numérotation des sommets telle que l'algorithme glouton utilise
couleurs, mais cela n'a rien d'évident.
Rappelons que nous avons défini le
degré maximum
d'un graphe
G comme le maximum des degrés des sommets de
G.
On a la
Proposition
Le nombre chromatique d'un graphe simple vérifie
Démonstration
En fait, quel que soit l'ordre choisi sur les sommets, l'algorithme glouton utilise au maximum
couleurs distinctes. Soit en effet
k le numéro de la plus haute couleur utilisée, et
s un sommet qui a cette couleur. L'algorithme glouton attribue la couleur
k à
s parce que les voisins de
s déjà coloriés occupent toutes les couleurs de
1 à
k-1. Donc
s a au moins
k-1 voisins distincts, et
, d'où
.
I-5 Graphes planaires
On rappelle qu'un graphe est
planaire s'il admet une représentation plane dans laquelle les courbes qui représentent les arêtes ne se croisent pas.
On dit que le graphe
K est un
mineur du graphe
G si on peut obtenir un graphe isomorphe à
K à partir de
G en effectuant une suite d'opérations dont chacune est de l'un des trois types suivants:
- ablation d'une arête
- ablation d'un sommet et de toutes les arêtes dont ce sommet est une extrémité.
- suture d'une arête: on identifie les deux extrémités de l'arête, et on efface la boucle et les arêtes multiples qui découleraient de cette identification.
Par exemple, par ablation des sommets 3 et 6 et suture de l'arête
, on voit que le graphe
K3 est un mineur du graphe suivant.
On peut montrer qu'un graphe
G est planaire si et seulement si ni
K5 ni
ne sont des mineurs de
G.
Considérons une carte de géographie, divisée en un certain nombre de pays d'un seul tenant. On lui associe un graphe de la manière suivante: dans chaque pays, on met un sommet, et les sommets associés à deux pays sont voisins si ces pays ont une frontière commune --- pas seulement un point commun, une certaine longueur de frontière.
Aux deux cartes suivantes,
on associe donc les deux graphes suivants:
Le graphe obtenu est planaire, et à une coloration de ce graphe on associe un coloriage de la carte dans lequel deux pays limitrophes ont des couleurs différentes.
En 1976, Appel et Haken ont démontré le
Théorème [des quatre couleurs]
Toute carte de géographie plane peut être coloriée avec quatre couleurs de façon que deux pays limitrophes aient toujours des couleurs différentes.
Les considérations ci-dessus montrent que cet énoncé est équivalent au suivant:
Théorème
Si
G est un graphe simple planaire,
.
La démonstration a fait sensation à l'époque, non seulement parce que le problème datait de plus d'un siècle, mais aussi parce qu'elle se décomposait en environ 1500 cas, ce qui avait rendu nécessaire d'en faire écrire et vérifier une partie essentielle par des machines.
II Multigraphes
Un
multigraphe est la donnée d'un couple
G=(
S,
A) d'ensembles finis,
avec
S non vide, ainsi que d'une application
qui à chaque
arête fait correspondre un ensemble de 1 ou 2
sommets, ses
extrémités. Si
est un singleton, on dit que l'arête
a est une
boucle de
base
s. On parlera en général du multigraphe
G=(
S,
A), en oubliant la fonction
.
Les
représentations des multigraphes utilisent des lignes courbes. Voici un exemple de multigraphe
À tout multigraphe
G=(
S,
A), on fait correspondre le graphe simple
sous-jacent
G'=(
S,
A'), où
en d'autres termes, on efface les boucles et on consolide les
arêtes multiples en une seule. Le graphe simple sous-jacent au multigraphe ci-dessus
est donc
Dans toute la suite, nous utiliserons le terme
graphe pour désigner un multigraphe, pour signifier qu'en réalité la situation ne concerne que le graphe simple sous-jacent.
On définit de façon naturelle un isomorphisme entre
G=(
S,
A) et
G'=(
S',
A') comme un couple
(
f,
g), où
f est une bijection de
S sur
S',
g est une bijection de
A sur
A' telle que
Un
sous-graphe d'un multigraphe
(
S,
A) est un multigraphe
(
S',
A') tel que
,
et
. Un tel sous-graphe est
couvrant si
S'=
S. Le
sous-graphe induit par
est le multigraphe
(
S',
A'), avec
On peut encore dire qu'un multigraphe en
contient un autre s'il admet un sous-graphe isomorphe à cet autre. Par exemple, le multigraphe
G contient
si et seulement si il existe dans
G deux boucles de même base.
II-1 Matrices d'incidence et d'adjacence
II-2 Chaînes dans un multigraphe
II-3 Algorithmes de Moore et de Dijkstra
II-1 Matrices d'incidence et d'adjacence
On numérote les sommets et arêtes d'un multigraphe
G=(
S,
A):
La
matrice d'incidence
M du graphe est une matrice
définie par
La somme des éléments de la colonne d'indice
j vaut 2. La somme des éléments de la ligne
i est, par définition, le
degré de
si: les boucles de base
si comptent pour 2, les autres arêtes d'extrémité
si pour 1. On peut alors énoncer la même relation fondamentale que pour les graphes simples:
Théorème
Le nombre d'arètes d'un multigraphe est égal à la demi-somme des degrés de ses sommets:
Démonstration
Ce nombre est égal à la somme de tous les éléments de la matrice
M:
Et on a encore le
Corollaire
Le nombre de sommets de degré impair d'un multigraphe est pair.
La
matrice d'adjacence
AG du graphe
G est une matrice
définie par
On voit que cette matrice est symétrique. La somme des éléments d'une ligne (ou colonne) n'est pas le degré du sommet correspondant puisque les boucles ne sont ici comptées qu'une fois.
Voici les matrices d'incidence et d'adjacence du multigraphe dessiné plus haut.
II-2 Chaînes dans un multigraphe
Soit
un entier naturel. Une
k-
chaîne, ou
chaîne de longueur
k d'un multigraphe est la donnée d'une famille
de
k+1 sommets et d'une famille
de
k arêtes telles que pour tout
, on ait
. On note
On dit que la chaîne
visite chacun des
vi et des
ei.
Le sommet
v0 est l'
origine de la chaîne
et
vk est son
extrémité.
En particulier, si
est un sommet,
(
s) est une
0-chaine, d'origine
s et extrémité
s.
Une chaîne est
fermée si
v0=
vk. Elle est
simple si les arêtes
sont distinctes. Elle est
élémentaire si les sommets
sont distincts.
Dans un graphe simple, on a forcément
. On se contente donc de noter les sommets et on écrit
.
Il y a des opérations naturelles sur les chaînes:
Si l'extrémité de
est égale à l'origine de
, c'est-à-dire si
vk=
w0, on peut définir la
concaténation
en posant
et
pour
.
On peut aussi définir la chaîne
qui est ``
parcourue dans l'autre sens'' en posant
et
.
Théorème
Soit
G=(S,A) un multigraphe, et
AG sa matrice d'incidence. Pour tout
et tout couple
, le coefficient
de la puissance
k-ième de
AG est égal au nombre de
k-chaînes d'origine
si et extrémité
sj.
Démonstration
Par récurrence sur
k. La matrice
AG0 est la matrice identité
In, et il est clair que le nombre de 0-chaînes d'origine
si et extrémité
sj vaut 1 si
i=
j et 0 sinon. La propriété est donc vraie pour
k=0. Supposons-la vraie pour
k. Une
k+1-chaîne d'origine
si et extrémité
sj s'écrit
, avec
v0=
si et
. Si
vk=
sl,
est une
k-chaîne d'origine
si et extrémité
sl et
vérifie
. L'hypothèse de récurrence dit qu'il y a
possibilités pour la première partie et la définition de
AG dit qu'il y a
possibilités pour la seconde.
Le nombre de
k+1-chaînes d'origine
si, extrémité
sj et telles que le sommet
vk soit
sl vaut donc
. le nombre total de
k+1-chaînes d'origine
si et extrémité
sj est donc
II-3 Algorithmes de Moore et de Dijkstra
On définit une fonction
appelée
distance sur
G de la façon suivante. S'il existe une chaîne d'origine
s et extrémité
t,
D(
s,
t) est la longueur minimale d'une telle chaîne. S'il n'en existe pas, on pose
.
Cette fonction n'est pas une distance au sens usuel puisque elle peut prendre la valeur
. Mais il est facile de voir que la fonction
est une distance sur
S. Dans la pratique, on préfère utiliser
D, qui prend des valeurs entières.
Donnons un algorithme classique de calcul de
D(
s,
t), pour un sommet fixé et tout sommet
t, l'
algorithme de Moore:
Données: Un sommet s d'un graphe (S,A)
Sortie: Pour tout dans S, D[t] contient D(s,t)
D[s] <- 0
Pour tout t dans S faire
D[t] <- infini
fin pour
k <- 0
V <- {s} (V est un ensemble de sommets, au départ un singleton)
tant que V n'est pas vide faire
k <- k+1
W <- {} (ensemble vide)
pour tout x dans V faire
pour tout y voisin de x et tel que D[y] = infini faire
D[y] <- k
W <- W union {y} (on ajoute y à l'ensemble W)
fin pour
fin pour
V <- W
fin tant que
En d'autre termes,
s est étiqueté 0, les voisins de
s étiquetés 1, les voisins des voisins de
s sauf
s lui-même sont étiquetés 2, et si
t est étiqueté
k, ses voisins non encore étiquetés seront étiquetés
k+1, etc. Voici un exemple d'exécution de l'algorithme de Moore
Il existe une généralisation naturelle de cette notion de distance sur un graphe. Un
graphe valué
est la donnée d'un multigraphe
G=(
S,
A) et d'une fonction
appelée
coût ou
poids ou
longueur... Le coût d'une chaîne
est alors défini par
. On définit la distance
C(
s,
t) entre deux sommets d'un graphe valué comme le minimum des coûts des chaînes d'origine
s et extrémité
t s'il en existe, et
s'il n'en existe pas. Pour déterminer
C(
s,
t) pour un sommet fixé
s et chaque sommet
t, on peut utiliser l'
algorithme de Dijkstra:
Données: Un sommet s d'um graphe valué (S,A,m),
Sortie: Pour tout t dans S, C[t] contient C(s,t)
Si 0 < C[t] < infini, T[t] contient la première étape
dans une chaîne de coût minimal menant de t à s.
Pour tout t dans S faire
C[t] <- infini
fin pour
C[s] <- 0
V <- {} (ensemble vide)
W <- S (tous les sommets)
tant qu'il y a dans W un sommet t tel que C[t] est fini faire
u <- un sommet de W tel que C[u] soit minimal
V <- V union {u}
W <- W \ {u} (On transfère u de W vers V)
pour chaque voisin x de u faire
si C[u] + m({u, x}) < C[x] faire
C[x] <- C[u] + m({u, x})
T[x] <- u
fin si
fin pour
fin tant que
Pour montrer que cet algorithme est correct, il suffit de vérifier que l'
invariant de boucle suivant est maintenu: si
est dans
V, un chemin de moindre coût de
t à
s commence par
T[t] est reste dans
V. On peut montrer que la complexité de cet algorithme est en
, où
n est le nombre de sommets et
m le nombre d'arêtes.
Voici par exemple les étapes de l'algorithme sur une valuation du cube
Q3.
Les étiquettes des sommets représentent le tableau
C et le tableau
T
est représenté par des flèches qui pointent de
t vers
T[t]. Si un sommet est dans
V, le point qui le marque est plus gros.
Pour trouver comment rejoindre le coin en bas à gauche à moindre coût, suivre les flèches.
III Chaînes et cycles
III-1 Connexité
III-2 Cycles
III-3 Graphes eulériens
III-4 Graphes hamiltoniens
III-1 Connexité
Si
s et
t sont deux sommets d'un graphe
G=(
S,
A), on dira que
s est
relié à
t et on écrira
s'il existe une chaîne de
G dont l'origine est
s et l'extrémité
t. Cela revient à dire que
D(
s,
t) est fini.
Théorème
La relation
est une relation d'équivalence sur
S.
Démonstration
Un graphe sera dit
connexe si deux sommets quelconques sont toujours reliés. Il revient au même de dire que
D ne prend que des valeurs finies, ou encore que le
diamètre
du graphe
G est fini.
À toute relation d'équivalence sur un ensemble
S, on associe une
partition de
S en
classes d'équivalence. On a donc une partition
. Si deux sommets sont voisins, ils sont reliés. Toute arête de
G relie donc deux sommets qui appartiennent à la même classe.
En posant
, on a donc montré que
A est réunion disjointe des
Ai. Les multigraphes
Gi=(
Si,
Ai) ont la propriété que deux
sommets quelconques de
Gi sont reliés dans
Gi. Ils sont donc connexes, et on a montré le
Théorème
Pour tout graphe
G=(S,A), il existe une partition unique de
S en
parties non vides telle que les sous-graphes induits
Gi=G(Si)
soient connexes et que toute arête de
G appartienne à un des
Gi.
Les
Gi sont appelés les
composantes connexes de
G et
p est le
nombre des composantes connexes de
G.
La fonction
D induit une distance sur chaque composante connexe de
G.
Il est facile de voir que tous les graphes du bestiaire sont connexes, sauf le stable
Sn pour
n>1, qui a
n composantes connexes.
Théorème
Un graphe
G=(S,A) est connexe si et seulement si pour toute partition de
S en 2 parties (non vides)
S' et
S'', il existe une arête
dont une extrémité est dans
S' et l'autre dans
S''.
Démonstration
Suppossons d'abord
G connexe. Considérons une partition
S en 2 parties (non vides)
S' et
S''. Comme
S' et
S'' sont non vides, on peut choisir
et
. Comme
G est connexe, il existe une chaîne
d'origine
s et extrémité
t. L'ensemble
n'est pas vide puisque
, et ne contient pas
0 puisque
. Notons
r>0 son plus petit élément. On a
, donc
et
. L'arête
er a une extrémité dans
S' et une autre dans
S''.
Réciproquement, supposons que pour toute partition de
S en 2 parties (non vides)
S' et
S'', il existe une arête
dont une extrémité est dans
S' et l'autre dans
S''. Considérons deux sommets
s et
t de
S. Notons
S' l'ensemble des extrémités des chaînes d'origine
s, et
S'' le complémentaire de
S' dans
S. Supposons que
. Ni
S' ni
S'' ne sont alors vides. On applique l'hypothèse sur
G: il existe une arête
, avec
u dans
S' et
. Il existe une chaîne
d'origine
s et extrémité
u, alors, l'existence de
, d'origine
s et extrémité
v montre que
, une contradiction. On a donc montré que
, il y a une chaîne d'origine
s et extrémité
t. On en déduit que
G est connexe.
III-2 Cycles
Pour
un
k-
cycle ou
cycle de longueur
k d'un multigraphe
G est une
k-chaîne simple fermée de
G. Un
k-cycle est dit
élémentaire si les sommets
sont tous distincts. L'origine (et extrémité) du cycle est plutôt appelée sa
base.
Remarquons qu'un
1-cycle est associé à une boucle et qu'un 2-cycle est associé à une arête double. On en déduit que dans un graphe simple, la longueur d'un cycle est au moins 3.
Proposition
De tout cycle, on peut extraire un cycle élémentaire.
Démonstration
Si
est un
k-cycle, l'ensemble des couples d'entiers
(i,j) tels que
et
vi=vj n'est pas vide,
puisqu'il contient
(0,k). Il existe donc un tel couple
(i,j) avec
j-i minimal. On voit que
est un cycle élémentaire.
Proposition
De toute chaîne fermée de longueur impaire, on peut extraire un cycle de longueur impaire.
Démonstration
Par récurrence sur la longueur
k de la chaîne fermée. Si
k=1, la 1-chaîne fermée
(
s,
a,
s) est un 1-cycle. Supposons la propriété vraie pour toute
k'-chaîne fermée, avec
k'<
k impair.
Si la
k-chaîne fermée
est simple, c'est un cycle. Sinon, il existe
(
i,
j), avec
tel que
ei=
ej. On en déduit que les ensembles
et
sont égaux. Il y a deux possibilités:
-
et
vi=vj. Posons alors
et
Ce sont deux chaînes fermées extraites de
. La première a pour longueur
k1=j-i>0 et la seconde
k2=(k-j+1)+(i-1)>0. On
a
k1+k2=k impair, donc l'un des deux est impair, strictement plus petit que
k. On peut appliquer l'hypothèse de récurrence à
ou
pour
obtenir un cycle impair extrait de
.
-
et
. Posons alors
et
Ce sont deux chaînes fermées extraites de
. La première a pour longueur
k1=j-i-1 et la seconde
k2=(k-j)+(i-1). On
a
k1+k2=k-2 impair, donc l'un des deux est impair, strictement plus petit que
k. On peut appliquer l'hypothèse de récurrence à
ou
pour
obtenir un cycle impair extrait de
.
Théorème
Si le degré minimum
d'un multigraphe
G vaut au moins 2, alors il existe un cycle dans
G.
Démonstration
Soit
une chaîne simple de longueur
k maximale. Comme il y a au moins un sommet, et que son degré n'est pas nul, il y a au moins une arête, et
.
Si
ek est une boucle,
(vk,ek,vk) est un cycle. Sinon, comme
d(vk)>1, il existe une arête
e d'origine
vk et différente de
ek. Notons
u le sommet tel que
.
La chaîne
a pour longueur
k+1. Elle n'est donc pas simple. On en déduit qu'il existe
i, avec
tel que
ei=e. Il existe donc
j, avec
j=i ou
j=i-1 tel que
j<k et
vj=vk. On a donc un cycle
.
Théorème
Si le degré minimum
d'un graphe simple
G vaut au moins 2, alors il existe dans
G un cycle élémentaire de longueur au moins égale à
.
Démonstration
Soit
une chaîne élémentaire de longueur
k maximale. Comme il y a au moins un sommet, et que son degré n'est pas nul, il y a au moins une arête, et
.
Soit
u un voisin de
v0. La chaîne
a pour longueur
k+1, et n'est donc pas élémentaire. On en déduit que
u est égal à l'un des
vi, pour un
, que nous appellerons l'indice du voisin
u. Chacun des voisins de
v0 a un indice différent. L'un d'eux au moins a donc un indice
. Puisque
vi est voisin de
v0,
est un cycle élémentaire, et sa longueur vaut au moins
.
Donnons enfin la caractérisation des graphes bipartis en termes de cycles:
Théorème
Un multigraphe
G=(S,A) différent du 1-stable est biparti si et seulement si il n'existe pas dans
G de cycle
de longueur impaire. En particulier, il ne doit pas avoir de boucle.
Remarquons que le nombre chromatique
est inférieur ou égal ou égal à 2 si et seulement si
G est biparti ou 1-stable.
Démonstration
Si
G est biparti, il existe une partition
telle que toute arête ait une extrémité dans
S' et une autre dans
S''. Si
est un
k-cycle et si
, on voit, par récurrence sur
i, que
pour
i pair et
pour
i impair. On sait que
. Donc
k est pair.
Réciproquement, supposons que
G n'admette pas de cycle impair.
Commençons par supposer que
G est connexe et
.
Choisissons un sommet
. Notons
Comme
G est connexe, il est clair que
. D'autre part, tout voisin d'un élément de
S' est dans
S'' et tout voisin d'un élément de
S'' est dans
S'. Comme
, on voit que ni
S' ni
S'' ne sont vides. Il reste donc à prouver que
.
Si
il existe une chaîne paire
et une chaîne impaire
d'origine
s et extrémité
t. La concaténation
de ces deux chaînes est une chaîne fermée de longueur impaire. On peut donc en extraire un cycle impair, une contradiction.
Dans le cas où
G n'est pas connexe, on voit que chacune des composantes connexes de
G est bipartie ou
1-stable et
G lui-même est donc biparti ou 1-stable.
III-3 Graphes eulériens
Un
cycle eulérien d'un multigraphe
G est un cycle qui visite toutes les arêtes et tous les sommets de
G. Un
graphe eulérien est un multigraphe qui admet un cycle eulérien. Une
chaîne eulérienne est une chaîne simple qui visite toutes les arêtes et tous les sommets de
G. Un graphe
semi-eulérien est un multigraphe qui admet une chaîne eulérienne.
Notons que ces chaînes passent une fois et une seule par chaque arête, et au moins une fois par chaque sommet, mais qu'elles peuvent passer plusieurs fois par le même sommet. Des trois graphes suivants, le premier est eulérien, le second est semi-eulérien sans être eulérien, et le troisième n'est pas semi-eulérien.
Théorème
Soit
G un multigraphe d'ordre au moins 2. Le multigraphe
G est eulérien si et seulement si il est connexe et tous ses sommets sont de degré pair.
Démonstration
Remarquons d'abord qu'en ajoutant ou effaçant une boucle, on ne change pas la connexité, ni la parité du degré des sommets, ni l'existence d'un cycle eulérien. Nous pouvons donc supposer que
G n'a pas de boucle.
Si
G est eulérien, soit
une chaîne eulérienne. Elle visite tous les sommets, donc pour tout couple
(
s,
t) de sommets, elle induit une chaîne d'extrémités
s et
t. Le graphe
G est donc connexe. Soit
s un sommet de
G,
As l'ensemble des arêtes incidentes à
s et
. L'application
qui à une arête
a incidente à
s fait correspondre l'unique entier
tel que
s=
vi et (
a=
ei ou
) vérifie
On déduit alors du principe des bergers que
est pair.
Réciproquement, supposons que
G est connexe et que tous les sommets de
G sont de degré pair. Considérons une chaîne simple de longueur
k maximale
. Nous allons montrer que
est un cycle eulérien.
Supposons d'abord que
ne soit pas fermée, c'est-à-dire que
. Posons
s=
vk et définissons
As l'ensemble des arêtes incidentes à
s visitées par
,
Is et
fs comme ci-dessus. On voit que
est un singleton et
vaut 2 pour
i<
k. On en déduit que
est impair. Comme
s est de degré pair, il existe une arête
a incidente à
s=
vk qui n'est pas visitée par
et
est une
k+1-chaîne simple, une contradiction. On a donc montré que
est un cycle.
Supposons maintenant qu'il existe une arête
a non visitée par
, et posons
. Comme
G est connexe, il existe une chaîne
d'origine
w0=
v0 et extrémité
wl=
u. Posons
et
. Notons
i le plus petit élément de
tel que
fi ne soit pas visité par
. Il est clair que
est visité par
. Il existe donc
tel que
. On voit que
est une
k+1-chaîne simple, une contradiction.
Supposons enfin qu'il existe un sommet
s non visité par
. Comme
G est connexe, il existe une arête
e incidente à
s, et cette arête n'est pas visitée par
, ce qui est impossible comme on vient de le voir.
Corollaire
Soit
G un multigraphe d'ordre au moins 2. Le multigraphe
G est semi-eulérien si et seulement si
il est connexe et le nombre de ses sommets de degré impair est
0 ou
2.
Démonstration
Si
est une chaîne eulérienne de
G=(
S,
A) dont les extrémités sont
u et
v, considérons le graphe
G' obtenu en ajoutant à
G une arête
e d'extrémités
u et
v. La chaîne
est un cycle eulérien de
G'. On en déduit que les degrés de tous les sommets de
G (autres que
u et
v si
) sont pairs. La connexité de
G est évidente exactement comme dans la démonstration du théorème.
Réciproquement, si
G a deux sommets distincts de degré impair,
u et
v, le graphe
G' défini comme ci-dessus a tous ses sommets de degré pair. Si
G est connexe,
G' l'est aussi et on peut appliquer le théorème à
G'. Si
est un cycle eulérien de
G', il visite forcément
e et, en retirant
e de
, on obtient une chaîne eulérienne de
G.
III-4 Graphes hamiltoniens
Un
cycle hamiltonien est un cycle élémentaire qui visite tous les sommets d'un graphe. Sa longueur est donc l'ordre
n du graphe. Une
chaîne hamiltonienne est une chaîne élémentaire qui visite tous les sommets d'un graphe. Sa longueur est donc
n-1. Un
graphe hamiltonien est un multigraphe qui admet un cycle hamiltonien.
Proposition
Les graphes simples
Cn et
Kn sont hamiltoniens si et seulement si
.
En effet, dans un graphe simple, la longueur d'un cycle est au moins 3.
Théorème
Si
G=(S,A) est un graphe simple d'ordre
tel que
pour toute paire
(u,v) de sommets non voisins, on a
, alors
G est hamiltonien.
Démonstration
Considérons dans
G une chaîne élémentaire de longueur maximale
. On voit facilement que
1<
k<
n et que les voisins de
v0 et ceux de
vk sont tous visités par
. Deux cas se présentent:
- Si
v0 et
vk sont voisins, posons
- Si
v0 et
vk ne sont pas voisins,
posons
et
On a
et
.
D'après l'hypothèse sur
G, on a
, donc
I et
J ont un élément commun
i, avec
1<i<k. Posons alors
Dans tous les cas,
est un cycle élémentaire de longueur
k+1, que nous réécrivons
, avec
. Nous allons montrer que
est un cycle hamiltonien.
Soit
s un sommet qui n'est pas visité par
. S'il est voisin d'un des
wi, alors
est une chaîne élémentaire de longueur
k+1, une contradiction. On en déduit que les voisins de
s ne rencontrent pas les
k+1 sommets visités par
, donc
. De même, les voisins de
w0 sont parmi les
k sommets visités par
autres que
w0, et
. On a donc
d(
s)+
d(
w0)<
n, ce qui mène à une contradiction avec le fait que
s et
w0 ne sont pas voisins.
Corollaire
Si
G est un graphe simple d'ordre
tel que
, alors
G est hamiltonien.
IV Arbres
Une
forêt est un multigraphe sans cycle. En particulier, c'est un graphe simple. Un
arbre est un graphe connexe sans cycle.
Voici quelques arbres.
Le théorème suivant montre que les arbres ont une position centrale.
Nous aurons besoin de quelques propositions préliminaires.
IV-1 Préliminaires
IV-2 Caractérisation des arbres
IV-3 Arbres couvrants
IV-4 Théorème de Cayley
IV-1 Préliminaires
Un
sommet pendant d'un graphe est un sommet de degré 1. Si
s est un sommet pendant, il existe une arête
e incidente à
s et une seule.
Proposition
Si
G=(
S,
A) est une forêt, et si
A n'est pas vide, alors il y a au moins deux sommets pendants dans
G.
Démonstration
On rappelle que
G est un graphe simple.
Soit
une chaîne élémentaire de longueur
k maximale. Comme
A n'est pas vide, il y a au moins une arête, donc
k>0.
Le seul voisin de
v0 est
v1. En effet, si
u est un autre voisin de
v0, soit
u est l'un des
vi, avec
i>1 et
est un cycle, une contradiction, soit non, auquel cas
est une une chaîne élémentaire de longueur
k+1, encore une contradiction.
On en déduit
d(
v0)=1, et de même
d(
vk)=1.
Corollaire
Si
G=(
S,
A) est un arbre d'ordre
, il y a dans
A exactement
n-1 arêtes.
Démonstration
Par récurrence sur
n. Pour
n=1, il n'y a pas de boucle, donc
et
. Si
n>1, il y a au moins deux sommets. Comme
G est connexe, il y a au moins une chaîne qui les joint, donc
A n'est pas vide. Il y a donc aumoins un sommet pendant
s. Soit
e l'unique arête adjacente à
s. Le graphe
est un arbre d'ordre
n-1. On peut lui appliquer l'hypothèse de récurrence. On a donc
donc
m=
n-1.
Proposition
Soit
et
deux chaînes simples distinctes d'origine
u et extrémité
v dans un multigraphe
G. De la chaîne fermée
, on peut extraire un cycle.
Démonstration
Par récurrence sur
p=
k+
l. Si
p=0, il n'est pas possible que
, il n'y a donc rien à démontrer.
Supposons la propriété vraie si la somme des longueurs est strictement plus petite que
p>0. Si
est simple, c'est un cycle. Sinon, il existe une arête visitée deux fois par
. Comme
et
sont simples, une des visites est dans
et l'autre dans
: il existe
et
tels que
ei =
fj. Il y a deux possibilités:
-
et
vi=wj. On a alors soit
soit
. Dans les deux cas on peut appliquer l'hypothèse de récurrence pour obtenir un cycle extrait de
.
-
et
. On a alors soit
soit
. Dans les deux cas on peut appliquer l'hypothèse de récurrence pour obtenir un cycle extrait de
.
Corollaire
Dans un multigraphe
G=(S,A), il existe un cycle si et seulement si il existe deux chaînes simples distinctes qui ont même origine et même extrémité.
Enfin, dans un graphe connexe
G=(
S,
A), un
isthme est une arête
e telle que le graphe
ne soit pas connexe.
Proposition
Dans un graphe connexe, une arête est un isthme si et seulement si elle n'est visitée par aucun cycle.
Démonstration
Supposons d'abord que
e est visité par un cycle. On peut écrire
), avec
vk=
v0. Soit
u et
v deux sommets de
G. Comme
G est connexe, il existe une chaîne simple
Si
ne visite pas
e, on pose
. Dans le cas contraire, il existe un unique
tel que
fi=
e. On ``remplace
e dans
par le grand arc de
'', c'est-à-dire qu'on pose
si
et
wi=
v=0, et
si
et
wi=
v1. Il existe dans tous les cas une chaîne
de
, d'origine
u et extrémité
v. On en déduit que
est connexe et
e n'est pas un isthme.
Réciproquement, si
e n'est pas un isthme, notons
u et
v les extrémités de
e. Comme
est connexe, il existe une chaîne simple
de
d'origine
v et extrémité
u. La chaîne
est fermée et simple: c'est un cycle qui visite
e.
Corollaire
Soit
G1=(
S1,
A1) et
G2=(
S2,
A2) deux arbres, composantes connexes distinctes d'une forêt
G=(
S,
A). Soit
et
. Posons
.
Le graphe simple
est encore une forêt.
En effet,
e est un isthme du graphe connexe
. Un cycle de
G' doit visiter
e donc rester dans
G'', une contradiction.
IV-2 Caractérisation des arbres
On rappelle sans démonstration un théorème classique:
Théorème
Soit
E un
K-espace vectoriel de dimension
n, et
une famille finie d'éléments de
E. Les propriétés suivantes sont équivalentes:
-
B est une base de
E.
- Pour tout vecteur
, il existe une famille
de scalaires telle que
et une seule.
-
B est une famille génératrice de
E et pour tout
la famille obtenue en enlevant
bi à
B ne l'est pas (
B est génératrice minimale).
-
B est libre et quelle que soit la valeur de
, la famille
ne l'est pas (
B est libre maximale).
-
B est une famille génératrice de
E et
m=n.
-
B est une famille libre et
m=n.
Le théorème suivant est tout-à-fait analogue au théorème précédent:
Théorème
Soit
G=(
S,
A) un multigraphe. On note
son ordre et
le nombre de ses arêtes. Les propriétés suivantes sont équivalentes:
-
G est un arbre.
- Pour tout couple
(u,v) de sommets, il existe une chaîne simple d'origine
u et extrémité
v et une seule.
-
G est connexe, et toute arête de
G est un isthme (
G est connexe minimal).
-
G est une forêt, et pour toute arête
,
admet un cycle (
G est une forêt maximale).
-
G est connexe et
m=n-1.
-
G est une forêt, et
m=n-1.
Démonstration
- [
] La connexité est équivalente à l'existence de chaînes simples de
u à
v pour tous sommets
u et
v.
D'autre part, grâce au lemme
allerretour
, on voit que l'existence d'un cycle équivaut à celle de deux chaînes simples ayant même origine et même extrémité.
- [
] D'après la proposition
isthme
, dans un graphe connexe, l'existence d'un isthme est équivalente à la non-existence d'un cycle.
- [
] D'après le corollaire
ajout
, si une forêt n'est pas connexe, on peut lui ajouter une arête sans créer de cycle. Réciproquement, si
G est un arbre et
, alors il existe une chaîne simple d'origine
u et extrémité
v dans
G,
(u,e,v) en est une autre dans
, ce qui, grâce à la proposition
allerretour
montre que
n'est pas une forêt.
- [
] C'est une conséquence du corollaire
nombre
.
- [
] Parmi les sous-graphes couvrants de
G qui sont connexes, il y en a au moins un
G'=(S,A') qui est minimal. C'est un arbre. D'après
, on a
. Or
. On en déduit
A'=A.
- [
] Une forêt est un graphe simple. On en déduit que parmi les forêts sur
S dont
G est un graphe couvrant, il en existe une
G'=(S,A') qui est
maximale. C'est un arbre. D'après
, on a
. Or
. On en déduit
A'=A.
IV-3 Arbres couvrants
Un
arbre couvrant d'un multigraphe
G est un sous-graphe couvrant de
G qui est un arbre. Si un graphe a un arbre couvrant, il est connexe. Le théorème précédent montre que la réciproque est vraie. Nous présentons deux algorithmes naturels pour trouver un arbre couvrant d'un multigraphe
G connexe.
Données: Un multigraphe connexe G = (S,A)
Sortie: Une partie A' de A telle que G'=(S, A') est un arbre.
A' <- {}
tant que $G'$ n'est pas connexe
choisir une composante connexes C de G'
choisir une arête e de A liant C et S \ C
faire A' <- A' union {e}
fin tant que
L'existence de l'arête
e est due au fait que
G est connexe. L'adjonction de
e à
A' ne change pas le fait que
G' est une forêt.
L'algorithme s'arrête donc bien quand
G est un arbre.
Cet algorithme a une variante adaptée aux graphes valués: on définit le poids d'un sous-graphe comme la somme des coûts de toutes les arêtes de ce sous-graphe, et on cherche un arbre couvrant de poids minimal.
Données: Un multigraphe valué connexe G = (S,A,c)
Sortie: Une partie A' de A telle que G'=(S, A') est un arbre
et le poids total de A' est minimal.
numéroter les éléments de A par poids croissant:
c(e_1) <= ... <= c(e_m)
A' <- {}
pour i allant de 1 à m faire
si (e_i n'est pas une boucle et si) les extrémités de e_i
sont sur des composantes connexes différentes de G' faire
A' <- A' union {e_i}
fin si
fin tant que
Cet algorithme, qui prend en priorité les arêtes de poids faible, est appelé
glouton pour la même raison qui fait qu'en informatique
les arbres sont représentés avec leurs racines en haut et les feuilles en bas.
Il existe une méthode duale pour extraire un arbre couvrant, qui consiste à couper les cycles tant qu'il y en a. Nous allons l'énoncer pour un multigraphe quelconque.
Données: Un multigraphe G = (S,A) à e composantes connexes.
Sortie: A' est une partie de A telle que G'=(S,A')
est une forêt à e composantes connexes.
A' <- A
tant qu'il existe un cycle dans G'
choisir un cycle C dans G'
choisir une arête e visitée par C
faire A' <- A' \ {e}
fin tant que
Comme on l'a vu plus haut, le fait d'enlever une arête visitée par un cycle ne change rien à la connexité. Le nombre de composantes connexes de
G' est donc le même que celui de
G. En particulier, si
G est connexe,
G' est un arbre couvrant de
G.
En général, combien de fois la boucle interne de l'algorithme s'exécute-t'elle ? Appelons
p ce nombre. On voit que
est le nombre d'arêtes qu'on a enlevées. La proposition suivante montre que
p ne dépend pas des choix
faits dans l'algorithme, mais seulement du multigraphe
G. Nous appellerons
p le
nombre de cycles indépendants de
G.
Proposition
Dans l'algorithme précédent, la boucle interne s'exécute
p fois, avec
p = m-n+e
où
n est l'ordre de
G,
m son nombre d'arêtes, et
e son nombre de composantes connexes.
Démonstration
Notons
Gi=(
Si,
Ai) les
e composantes connexes d'une forêt
G=(
S,
A) à
n sommets et
m arêtes. Chaque
Gi est un arbre, on a donc
.
Comme
S est réunion disjointe des
Si et
A réunion disjointe des
Ai, on a
Si maintenant
G=(
S,
A) est un multigraphe quelconque et qu'on exécute l'algorithme, le résultat est une forêt
(
S,
A') qui a le même nombre
n de sommets et le même nombre
e de composantes connexes que
G. Son nombre d'arêtes est
m'=
m-
p. Or on vient de montrer que
m'=
n-
e, d'où le résultat.
IV-4 Théorème de Cayley
On s'intéresse ici aux arbres couvrants de la clique
Kn, ou plutôt à leur nombre. On voit facilement que
K1 et
K2 sont des arbres et que
K3 a trois arbres couvrants.
Il est plus difficile d'établir que les arbres couvrants de
K4 sont au nombre de 16, mais il n'y en a que deux à isomorphisme près.
Supposons désormais
.
Nous allons décrire une opération de codage qui à tout arbre
T dont l'ensemble des sommets est
fait correspondre une famille
de
n-2 éléments de
de la façon suivante.
Données: Un arbre T = (S, A) d'ensemble de sommets S = [1,n]
Sortie: le tableau b contient n-2 entiers de [1,n]
pour i de 1 à n-2 faire
s <- le plus petit sommet pendant de T
e <- l'arête incidente à s
b[i] <- le voisin de s dans T
S <- S \ {s}
A <- A \ {e}
fin pour
Voici la suite des opérations qui donne l'encodage d'un certain arbre couvrant de
K9.
Le résultat final est donc la famille
(4,6,6,5,4,4,5).
L'opération de décodage se décrit de la même façon:
Données: Un tableau b de n-2 entiers de [1,n]
Sortie: T = ([1,n], A) est un arbre
A <- {}
S <- [1,n]
pour i de 1 à n-2 faire
s <- le plus petit élément de S qui n'est égal
à aucun b[j] avec i <= j <= n-2.
A <- A union {{s,b[i]}}
S <- S \ {s}
fin pour
A <- A union {S}
Comme
S a
n-
i+1 éléments et
j ne prend que
n-
i-1 valeurs, on peut toujours trouver
s.
Pour prouver que le graphe obtenu est un arbre, il suffit de remarquer qu'à tout
moment
S contient un sommet et un seul dans chaque composante connexe de
T.
Comme
b[
i] n'a pas pu être enlevé de
S aux tours précédents, il est encore dans
S et
l'arête
réunit deux composantes connexes différentes: il ne peut se créer de
cycle. Après la fin de la boucle, S ne contient que deux éléments, appartenant aux deux composantes connexes de
.
Enfin,
T est une forêt à
n-1 arêtes, c'est donc bien un arbre.
Voici la suite d'opérations décrivant le décodage de
(4,6,6,5,4,4,5):
On voit que les opérations de codage et de décodage sont inverses l'une de l'autre. On a donc une bijection entre l'ensemble
Tn des arbres couvrants de
Kn et
. On a donc prouvé le
Théorème [de Cayley]
Pour tout
, une
n-clique a exactement
arbres couvrants.