Cours Graphes

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 57

Année universitaire 2007-2008

UNIVERSITÉ DE NANCY

Olivier GARET

Introduction aux Graphes


2
Table des matières

Table des matières i

1 Graphes 1
1.1 Graphes orientés . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Degrés d’un sommet, matrice d’adjacence . . . . . . . . 1
1.1.2 Morphismes de graphes orientés . . . . . . . . . . . . . 2
1.1.3 Graphe engendré par une partie . . . . . . . . . . . . . 3
1.2 Graphes non orientés . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Graphes orientés symétriques et graphes non-orientés . 4
1.2.2 Degrés d’un sommet, matrice d’adjacence . . . . . . . . 4
1.2.3 Morphismes de graphes non-orientés . . . . . . . . . . 5
1.2.4 Graphe engendré par une partie . . . . . . . . . . . . . 6
1.2.5 Notion de clique . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Graphes classiques . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.1 Graphe complet . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Graphe cyclique . . . . . . . . . . . . . . . . . . . . . . 7
1.3.3 Graphe biparti complet . . . . . . . . . . . . . . . . . . 7
1.4 Chemins dans un graphe orienté . . . . . . . . . . . . . . . . . 8
1.5 Chemin de longueur minimale . . . . . . . . . . . . . . . . . . 8
1.5.1 Cas où toutes les arêtes ont le même coût . . . . . . . 9
1.5.2 Cas général : algorithme de Dijkstra . . . . . . . . . . 10
1.6 Cycles eulériens, chaı̂nes eulérienne . . . . . . . . . . . . . . . 10
1.7 Matrice d’adjacence associée à un graphe . . . . . . . . . . . . 12
1.7.1 Nombre de chemins . . . . . . . . . . . . . . . . . . . . 12
1.7.2 La semi algèbre des matrices d’adjacences . . . . . . . 12
1.7.3 Application au calcul du diamètre d’un graphe . . . . . 13
1.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2 Coloriage des sommets 19


2.1 Partition en stables d’un graphe simple . . . . . . . . . . . . . 19
2.2 Coloriages propres . . . . . . . . . . . . . . . . . . . . . . . . 19

i
ii TABLE DES MATIÈRES

2.2.1 Coloriages propres et partitions en stables . . . . . . . 20


2.2.2 Graphes bipartis . . . . . . . . . . . . . . . . . . . . . 20
2.2.3 Nombre chromatique d’un graphe . . . . . . . . . . . . 21
2.3 Nombre de coloriages propres . . . . . . . . . . . . . . . . . . 21
2.3.1 Exemple : le graphe sans arêtes à n éléments Vn . . . . 21
2.3.2 Exemple : le graphe linéaire Ln . . . . . . . . . . . . . 21
2.3.3 Exemple : le graphe cyclique Cn . . . . . . . . . . . . . 22
2.3.4 Polynôme chromatique . . . . . . . . . . . . . . . . . . 22
2.4 Un exemple de calcul . . . . . . . . . . . . . . . . . . . . . . . 25
2.5 Algorithmes simples de coloriage . . . . . . . . . . . . . . . . . 27
2.5.1 algorithme optimiste . . . . . . . . . . . . . . . . . . . 27
2.5.2 algorithme glouton . . . . . . . . . . . . . . . . . . . . 27
2.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3 Jeux de blocage 33
3.1 Jeux sur un graphe . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Somme digitale . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.1 Développement binaire d’un entier . . . . . . . . . . . 35
3.2.2 Quelques propriétés de la différence symétrique . . . . 36
3.2.3 Application . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3 Noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4 Fonction de Grundy . . . . . . . . . . . . . . . . . . . . . . . 39
3.5 Jeux décomposables . . . . . . . . . . . . . . . . . . . . . . . . 42
3.5.1 Le théorème de Grundy . . . . . . . . . . . . . . . . . 42
3.5.2 Applications aux jeux de type Nim . . . . . . . . . . . 44
3.5.3 Étude d’un exemple . . . . . . . . . . . . . . . . . . . . 48
3.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Index 53
Chapitre 1

Graphes

1.1 Graphes orientés


On appelle graphe orienté le couple formé par un ensemble S et une partie
A ⊂ S × S. Les éléments de S sont appelés les sommets du graphe et les
éléments de A les arêtes. On dit que l’arête (a, b) va de a vers b, et que a et b
sont les extrémités de l’arête (a, b). Une arête du type (a, a) est appelée une
boucle.
Remarque : pour a et b distincts, (a, b) et (b, a) sont deux arêtes dis-
tinctes, puisque (a, b) va de a vers b et (b, a) de b vers a.
On dit qu’un graphe (S, A) est symétrique si il vérifie

(a, b) ∈ A ⇐⇒ (b, a) ∈ A.

On dit qu’un graphe est simple s’il ne comporte pas de boucle.

1.1.1 Degrés d’un sommet, matrice d’adjacence


On appelle degré sortant du sommet x ∈ S le nombre d’arêtes partant de
x. On le note d+
A (x). Ainsi, on a

A (x) = |{y ∈ S; (x, y) ∈ A}|.


d+
De même, on appelle degré entrant du sommet x ∈ S le nombre d’arêtes
arrivant en x. On le note d−
A (x). Ainsi, on a

d−
A (x) = |{y ∈ S; (y, x) ∈ A}|.

Le degré total d(x) du sommet x est défini par



dTA (x) = d+
A (x) + dA (x).

1
2 CHAPITRE 1. GRAPHES

Ainsi, dTA (x) est le nombre d’arêtes dont x est une extrémité, les boucles
étant comptées deux fois.
On appelle matrice d’adjacence du graphe G = (S, A) la matrice
M = (mi,j )(i,j)∈S 2 indexée par les sommets du graphe telle que
{
1 si (i, j) ∈ A
mi,j =
0 si (i, j) ∈
/A

(En d’autres termes mi,j = 11A (i, j).)


Il est facile de voir que l’on a

∀i ∈ S d+
A (i) = mi,j
j∈S

et ∑
∀j ∈ S d−
A (j) = mi,j .
i∈S

Comme chaque arête a exactement un sommet de départ, on a



|A| = d+
A (i).
i∈S

De même, comme chaque arête a exactement un sommet d’arrivée, on a



|A| = d−
A (i).
i∈S

En faisant la somme des deux identités, on obtient le théorème :


Théorème 1. Soit G = (S, A) un graphe. On a l’identité

2|A| = dTA (i).
i∈S

1.1.2 Morphismes de graphes orientés


Soit G = (S, A) et H = (T, B) deux graphes orientés. On dit qu’une
application ϕ de S dans T réalise un morphisme du graphe G vers le graphe
H si elle vérifie la propriété suivante :

(x, y) ∈ A =⇒ (ϕ(x), ϕ(y)) ∈ B.

Si ϕ est une application injective, on dit que le graphe G s’injecte dans le


graphe H. On dit aussi parfois que le graphe H contient le graphe G.
On dit que ϕ est un isomorphisme si il vérifie les deux conditions suivantes
1.2. GRAPHES NON ORIENTÉS 3

— ϕ réalise une bijection entre A et B.


— (x, y) ∈ A ⇐⇒ (ϕ(x), ϕ(y)) ∈ B.
Si ϕ est un isomorphisme de G dans lui-même, on dit que ϕ est un auto-
morphisme de G. On note Aut(G) l’ensemble des automorphismes de G.

Théorème 2. Soit G = (S, A) un graphe, T un ensemble, et ϕ une applica-


tion de S dans T . Alors, si l’on pose

Aϕ = {(ϕ(x), ϕ(y)); (x, y) ∈ A},

l’application ϕ réalise un morphisme du graphe G vers le graphe H = (T, Aϕ ).

1.1.3 Graphe engendré par une partie


Soit G = (S, A) un graphe orienté et ∅ ̸= T ⊂ S. On appelle sous-graphe
de G engendré par T le graphe

G[T ] = (T, A ∩ (T × T )).

Il a comme sommets les éléments de T et comme arêtes les arêtes de G


dont les extrémités sont dans T .
Remarque : Un sommet peut posséder des arêtes dans G et ne plus en
avoir dans G[T ].

1.2 Graphes non orientés


On appelle graphe non orienté le couple formé par un ensemble S et une
partie A ⊂ B1 (S) ∪ B2 (S). Les éléments de S sont appelés les sommets du
graphe et les éléments de A les arêtes. On dit que l’arête {a, b} relie a et b ;
a et b sont les extrémités de l’arête {a, b}. Une arête du type {a} est appelée
une boucle.
Remarque : {a, b} et {b, a} désignent la même arête.
On dit qu’un graphe est simple s’il ne comporte pas de boucle. En d’autres
termes, un graphe non-orienté G = (S, A) est simple si et seulement si
A ⊂ B2 (S).
Si G = (S, A) est un graphe simple, on appelle graphe complémentaire
de G et l’on note Gc le graphe

Gc = (S, B2 (S)\A).
4 CHAPITRE 1. GRAPHES

1.2.1 Graphes orientés symétriques et graphes non-


orientés
Théorème 3. Soit S un ensemble.
On considère l’application de P(B1 (S) ∪ B2 (S)) dans P(S × S) :

Sym : P(B1 (S) ∪ B2 (S)) → P(S × S)


A 7→ {(x, y) ∈ S × S {x} ∪ {y} ∈ A}

L’application Sym réalise une injection de l’ensemble des graphes non-


orientés dans l’ensemble des graphes orientés. Elle induit une bijection de
l’ensemble des graphes non-orientés dans l’ensemble des graphes orientés
symétriques.
On considère l’application de P(S × S) dans P(B1 (S) ∪ B2 (S)) :

Désor : P(S × S) → P(B1 (S) ∪ B2 (S))


A 7→ {{x} ∪ {y}; (x, y) ∈ A}

L’application Désor réalise une surjection de l’ensemble des graphes orientés


dans l’ensemble des graphes non-orientés. C’est une bijection de l’ensemble
des graphes orientés symétriques dans l’ensemble des graphes non-orientés.
On a
∀A ∈ P(B1 (S) ∪ B2 (S))(Désor ◦ Sym)(A) = A
et

∀A ∈ P(S × S) (S, A) symétrique ⇐⇒ (Sym ◦ Désor)(A) = A

1.2.2 Degrés d’un sommet, matrice d’adjacence


Si G = (A, S) est un graphe non-orienté, on définit le degré dA (x) du
sommet x ∈ S par dA (x) = d+Sym(A) (x) + 1
1A ({x}).
Remarque : il est facile de voir que l’on a aussi dA (x) = d− Sym(A) (x) +
11A ({x}).
En procédant comme dans la preuve du théorème 1, on a immédiatement :

Théorème 4. Soit G = (S, A) un graphe non-orienté. On a l’identité



2|A| = dA (i).
i∈S
1.2. GRAPHES NON ORIENTÉS 5

1.2.3 Morphismes de graphes non-orientés


Soit G = (S, A) et H = (T, B) deux graphes non-orientés. On dit qu’une
application ϕ de S dans T réalise un morphisme du graphe G vers le graphe
H si elle vérifie la propriété suivante :
v ∈ A =⇒ ϕ(v) ∈ B.
Si ϕ est une application injective, on dit que le graphe G s’injecte dans le
graphe H. On dit aussi parfois que le graphe H contient le graphe G.
On dit que ϕ est un isomorphisme si il vérifie les deux conditions suivantes
— ϕ réalise une bijection entre A et B.
— v ∈ A ⇐⇒ ϕ(v) ∈ B.
Exemple : les deux graphes suivants sont isomorphes.

Si ϕ est un isomorphisme de G dans lui-même, on dit que ϕ est un auto-


morphisme de G. On note Aut(G) l’ensemble des automorphismes de G.
Exemples :

Aut(G) ∼ Z/2Z Aut(G) ∼ Z/2Z × Z/2Z


Théorème 5. Soit G = (S, A) un graphe, T un ensemble, et ϕ une applica-
tion de S dans T . Alors, si l’on pose
Aϕ = {ϕ(v); v ∈ A},
6 CHAPITRE 1. GRAPHES

l’application ϕ réalise un morphisme du graphe G vers le graphe H = (T, Aϕ ).

1.2.4 Graphe engendré par une partie


Soit G = (S, A) un graphe non-orienté et ∅ ̸= T ⊂ S. On appelle sous-
graphe de G engendré par T le graphe

G[T ] = (T, A ∩ (B1 (T ) ∪ B2 (T ))).

Il a comme sommets les éléments de T et comme arêtes les arêtes de G


dont les extrémités sont dans T .

1.2.5 Notion de clique


Soit G = (S, A) un graphe non-orienté simple et ∅ ̸= T ⊂ S. On dit que
T est une clique de G si les sommets de T sont deux à deux reliés dans G.
Autrement dit, T est une clique si et seulement si G[T ] = (T, B2 (T )).

1.3 Graphes classiques


1.3.1 Graphe complet
On appelle graphe complet à n sommets tout graphe s’écrivant

G = (S, B2 (S)),

où S est un ensemble à n éléments.


Comme les graphes complets à n sommets sont isomorphes, on note Kn l’un
d’entre eux.

K3 K4
1.3. GRAPHES CLASSIQUES 7

1.3.2 Graphe cyclique


On appelle graphe cyclique à n sommets tout graphe isomorphe à

G = (Z/nZ, A),

où
A = {{x, y} ∈ B2 (Z/nZ), x − y ∈ {−1, +1}}.

C3 C5

1.3.3 Graphe biparti complet


On appelle graphe biparti complet tout graphe s’écrivant

G = (X ∪ Y, A),

où X et Y sont deux ensembles disjoints et où

A = {{x, y}, x ∈ X; y ∈ Y }.

Si l’on pose p = |X| et q = |Y |, on note Kp,q l’un d’entre eux.

K3,1 K3,2
Remarque : : les graphes Kp,q et Kq,p sont isomorphes.
8 CHAPITRE 1. GRAPHES

1.4 Chemins dans un graphe orienté


Soit n ∈ N. On dit qu’une suite (s0 , . . . , sn ) de points de S constitue une
chaı̂ne de longueur n allant de s0 à sn si

∀i ∈ {1, . . . , n} (si−1 , si ) ∈ A. (1.1)

On dit qu’une chaı̂ne s de longueur n ≥ 1 est élémentaire si

∀i, j ∈ {0, . . . , n − 1} i ̸= j =⇒ si ̸= sj (1.2)

Remarque : Il existe toujours une chaı̂ne de longueur zéro entre un point


et lui-même.
On dit qu’une chaı̂ne s de longueur n ≥ 1 est un cycle si s0 = sn .
On dit que des sommets x et y sont connectés et on note x ∼ y si il existe
une chaı̂ne allant de x à y et s’il existe une chaı̂ne allant de y à x.
Théorème 6. ∼ est une relation d’équivalence sur S
On appelle composantes connexes du graphe les classes d’équivalence in-
duites par la relation d’équivalence ∼.
On dit qu’un graphe est connexe si quels que soient les sommets x et y
du graphe, il existe une chaı̂ne allant de x à y. Autrement dit, un graphe est
connexe s’il est formé d’une unique composante connexe.
On appelle voisinage à droite de l’ensemble F ⊂ S l’ensemble

V + (F ) = {y ∈ S ∃x ∈ F (x, y) ∈ A}.

On appelle voisinage à gauche de l’ensemble F ⊂ S l’ensemble

V − (F ) = {x ∈ S ∃y ∈ F (x, y) ∈ A}.

Ces notions ont été présentées pour un graphe orienté. Elles s’étendent
aux graphes non-orientés sans difficulté.

1.5 Chemin de longueur minimale


On suppose qu’à chaque arête e d’un graphe (orienté ou non), on associe
un nombre µ(e) positif ou nul appelé coût de l’arête.
Si (s0 , . . . , sn ) est un chemin, on appelle coût du chemin la quantité

n
ℓ(s) = µ(si−1 , si ).
i=1
1.5. CHEMIN DE LONGUEUR MINIMALE 9

Deux sommets nous étant donnés, l’un appelé sommet de départ, l’autre
sommet d’arrivée, un problème est de déterminer un chemin de coût minimal
reliant le sommet de départ au sommet d’arrivée.
Afin de simplifier l’exposé, on supposera ici que l’on travaille avec un
graphe fini.

1.5.1 Cas où toutes les arêtes ont le même coût


On suppose ici que pour tout e ∈ A, µ(e) = 1. Ici la longueur d’un chemin
coincide donc avec son coût. On construit alors une suite Dn par récurrence
comme suit
— D0 = {le sommet de départ}
n
— Dn+1 = V + (Dn )\( ∪ Dk )
k=0
Par construction, les Dn sont disjoints. Comme les (Dn )n≥0 sont inclus
dans S qui est fini, seul un nombre fini de Dn est non-vide.
Comme Dn = ∅ =⇒ Dn+1 = ∅, la suite Dn est donc constamment vide à
partir d’un certain rang.
Par construction de (Dn )n≥0 , quel que soit x ∈ Dn , il existe un chemin
allant du sommet de départ à x de longueur n.
On va montrer maintenant qu’on ne peut pas fabriquer de chemin plus
cours.
Comme les Dn forment une partition de l’ensemble A des sommets acces-
sibles depuis le sommet de départ, on peut définir une application p de A dans
N par p(x) = n pour tout x dans Dn . On a par exemple p(le sommet de départ) =
0.
On peut donc reformuler ce que l’on a dit quelques lignes plus haut :
quel que soit x ∈ A, il existe un chemin allant du sommet de départ à x de
longueur p(x).
Si un point t est dans Dn et que (t, u) ∈ A, alors par construction de Dn ,
n
u est dans Dn+1 ou dans ∪ Dk . On a donc
k=0

(t, u) ∈ A =⇒ p(u) ≤ p(t) + 1.


Soit donc (s0 , . . . , sn ) un chemin de longueur n allant du sommet de départ
s0 à sn = x. On a ∀k ∈ {0, . . . n − 1} p(sk+1 ) ≤ p(sk ) + 1. On en déduit
p(x) = p(sn ) ≤ p(s0 ) + n = n, ce qui montre que la longueur de ce chemin
est au moins aussi grande que p(x).
La mise en œuvre concrète de cet algorithme est aisée : on commence
par marquer le sommet initial d’un zéro, puis, à chaque étape, on cherche les
sommets non marqués qui sont voisins à droite d’un sommet marqué, et on
10 CHAPITRE 1. GRAPHES

les marque alors de l’entier immédiatement supérieur à la marque des dits


voisins. On peut s’arrêter lorsque l’arrivée désirée a été atteinte
Pour obtenir un chemin minimal, on part alors du sommet d’arrivée que
l’on entoure. Parmi ses voisins à gauche, on cherche un sommet d’index
immédiatement inférieur, que l’on entoure. On recommence alors, jusqu’à
arriver au sommet de départ. En lisant la suite obtenue à l’envers, on a ainsi
un chemin de longueur minimal.

1.5.2 Cas général : algorithme de Dijkstra


L’algorithme se présente ainsi : on note en face de chaque sommet x le
coût l(x) du plus court chemin alors trouvé du sommet de départ jusqu’à
x, ainsi que l’étape précédente p(x) de ce chemin. Lorsqu’un des meileurs
chemins a été trouvé, on encadre le coût qui devient définitif.
1. On pose l(départ) = 0 et l(x) = +∞ pour les autres sommets. Aucun
sommet n’est entouré. Passer à l’étape suivante.
2. Trouver x0 réalisant le minimum de l(x) parmi les sommets non-
entourés. Entourer ce sommet. Si x0 est le sommet d’arrivée, s’arrêter,
sinon passer à l’étape suivante.
3. Pour tout y ∈ V + (x0 ) tel que l(x0 ) + µ(x0 , y) < l(y), remplacer l(y)
par l(x0 ) + µ(x0 , y) et p(y) par x. Retourner à l’étape précédente.
Remarques :
— À l’étape 2, l’ensemble des sommets non-entourés est non vide : c’est
vrai la première fois qu’on passe en deux, car nul sommet n’a été
entouré à l’étape 1. Les fois suivantes qu’on y passe, il reste encore des
sommets non-entourés, car sinon le sommet d’arrivée serait entouré et
on se serait arrêté avant.
— L’algorithme se termine bien, car à chaque fois que l’on passe à l’étape
2, le nombre de sommets non-entourés diminue d’une unité. Comme la
première fois, il y en a |S|, et que ce nombre est positif, cela implique
que l’on passe au plus |S| fois à l’étape 2.
Pour obtenir un chemin minimal allant du départ à l’arrivée, on pose
t0 = sommet d’arrivée et on définit tn+1 = p(tn ) si tn ̸= sommet de départ. Si
tn = sommet de départ, alors (tn , tn−1 , . . . , t0 ) est un chemin de coût minimal.

1.6 Cycles eulériens, chaı̂nes eulérienne


La présente section se situe dans le cadre des graphes non-orientés.
1.6. CYCLES EULÉRIENS, CHAÎNES EULÉRIENNE 11

On dit qu’une chaı̂ne d’un graphe G est eulériene si elle passe par tous
les points du graphe et utilise chaque arête une unique fois.
On dit qu’un cycle d’un graphe G est eulérien s’il passe par tous les points
du graphe et utilise chaque arête une unique fois.
Bien sûr, une chaı̂ne eulérienne ou un cycle eulérien ne peuvent exister
que sur un graphe connexe.
On dit qu’un graphe est eulérien s’il possède au moins un cycle eulérien

Théorème 7. Un graphe connexe est eulérien si et seulement si tous ses


points sont de degré pair.

Démonstration. Montrons d’abord que la condition est nécessaire. Supposons


que G est eulérien et soit γ un cycle eulérien. Soit y ∈ S. On note Iy l’ensemble
des arêtes incidentes à y. À toute arête e ∈ Iy , on peut associer une unique
arête f telle les arêtes e et f sont visitées successivement dans la chaı̂ne γ.
On a fabriqué ainsi une involution sans point fixe dans Iy , ce qui montre que
d(y) = |Iy | est paire.
Réciproquement, soit G un graphe connexe dont tous les sommets sont de
degré pair. Fixons e une arête du graphe et considérons le plus long chemin
dans G contenant e qui n’utilise aucune arête plus d’une fois. On note x l’ori-
gine de la chaı̂ne et y le bout de la chaı̂ne. Puisque cette chaı̂ne est maximale,
les points x et y sont tous les deux de degré 1 + 11{x=y} . L’hypothèse de pa-
rité impose que x = y. Ainsi, toute arête fait partie d’un cycle. Considérons
maintenant un cycle γ de longueur maximale. S’il ne contient pas toutes les
arêtes, considérons une arête f qui n’est pas dans dans le cycle mais sort
d’une arête du cycle (il en existe sinon le graphe n’est pas connexe). On peut
construire un cycle γ ′ contenant f . Maintenant, on peut construire à l’aide
de γ ′ et γ un nouveau cycle strictement plus grand que γ, ce qui contredit la
minimalité.

Théorème 8. Un graphe connexe contient une chaı̂ne eulérienne si et seule-


ment si il contient 0 ou 2 sommets de degré impair.

Démonstration. Si un graphe connexe contient 0 sommets de degré impair,


il contient un cycle lérien, donc une chaı̂ne eulérienne. Si un graphe connexe
contient 2 sommets impairs, rajoutons une arête entre ces deux points : on
obtient un graphe dont toutes les arêtes sont de degré pair, donc admettant
un cycle eulérien γ. Si on enlève l’arête {x, y} de ce cycle, on obtient une
chaı̂ne eulérienne dans le graphe initial.
Maintenant supposons qu’un graphe admette une chaı̂ne eulérienne. Si
son origine est son extrémité, c’est un cycle eulérien, donc tous les sommets
du graphe sont de degrés pairs. Sinon, rajoutons une arête entre l’origine
12 CHAPITRE 1. GRAPHES

et l’extrémité : on obtient alors un cycle eulérien dans le graphe augmenté,


donc tous les sommets du graphe augmenté sont de degrés pairs. Ainsi tous
les sommets du graphe originel sont de degré pair, sauf x et y qui sont de
degrés impairs.

1.7 Matrice d’adjacence associée à un graphe


On appelle matrice d’adjacence associée à un graphe G = (S, A) la ma-
trice M = (mi,j )(i,j)∈S×S dont les entrées mi,j sont définies par mi,j = 1 si il y
a une arête allant de i vers j dans graphe G, 0 sinon. La matrice d’adjacence
associée à un graphe non-orienté est toujours une matrice symétrique.
Un des intérêts de cette matrice est son usage dans des problèmes com-
binatoires de chemins sur le graphe.

1.7.1 Nombre de chemins


Théorème 9. Soit G = (S, A) de matrice d’adjacence M Soit n ≥ 1 et
considérons la matrice M n : pour i et j deux sommets de G, le coefficient
(M n )i,j représente le nombre de chemins de longueur n allant de i à j.
Démonstration.
∑ ∏
n−1
(M n )i,j = mki ,ki+1 ,
(k1 ,...,kn−1 )∈S n−1 i=0


où l’on a posé k0 = i et kn = j. Or n−1 i=0 mki ,ki+1 vaut 1 si et seulement si
k0 , k1 , . . . , kn est un chemin de i vers j. Dans le cas contraire, ce produit vaut
0. Comme on a énuméré toutes les listes de candidates potentielles pour être
une séquence de longueur n reliant i à j, le résultat s’ensuit.
Ainsi, il existe un chemin de longueur n de i vers j dans un graphe de
matrice d’adjacence M si et seulement si (M n )i,j > 0.

1.7.2 La semi algèbre des matrices d’adjacences


Cependant, si on s’intéresse juste à l’existence d’un chemin et non au
nombre de chemins, on peut utiliser la remarque suivante :
Pour A matrice à coefficients dans N, notons  la matrice définie par
(Â)i,j = min(1, ai,j ). Pour A et B deux telles matrices, on note
— A.B la matrice définie par A.B = AB d
— A ∨ B la matrice définie par (A ∨ B)i,j = min(max(ai,j , bi,j ), 1).
1.7. MATRICE D’ADJACENCE ASSOCIÉE À UN GRAPHE 13

On montre sans difficultés que


— A \ + B = Â ∨ B̂
— A.B = Â.B̂
— A ∨ B = Â ∨ B̂
— A.(C ∨ D) = A.C ∨ A.D
— (C ∨ D).A = C.A ∨ D.A
Ainsi, si l’on veut savoir si (M n )i,j > 0, il suffit de savoir si (Mˆ n )i,j > 0.
Mais Mˆ n = M̂ .n = M .n , ce qui est un calcul beaucoup plus simple.

1.7.3 Application au calcul du diamètre d’un graphe


On appelle diamètre d’un graphe connexe le maximum de la longueur du
plus court chemin entre i et j, où i et j décrivent l’ensemble des points du
graphe.
Ainsi le diamètre d’un graphe est égal à n si
— Pour tout i et j, il existe un chemin de i vers j de longeur inférieure
ou égale à n.
— Il existe i et j dans le graphe qui ne sont reliés par aucun chemin de
longueur inférieure ou égale à n.
Ainsi, si M est la matrice d’adjacence du graphe, le diamètre du graphe
est le plus petit entier tel que la matrice I + M + M 2 + · · · + M n ait toutes
ses entrées positives.

On peut donc utiliser cet algorithme :


— Poser U0 = I
— calculer Un+1 = I + M Un
— S’arrêter dès que le terme calculé a toutes ses entrées positives. Dans
ce cas, l’indice n + 1 et le diamètre du graphe.

À l’aide de la semi-algèbre (∨, .), on peut s’implifier l’algorithme.


— Poser V0 = I
— calculer Vn+1 = I ∨ M.Vn
— S’arrêter dès que le terme calculé a toutes ses entrées égales à un.
Dans ce cas, l’indice n + 1 et le diamètre du graphe.
En effet, il suffit de remarquer qu’on a pour tout n la relation Vn = Uˆn .
14 CHAPITRE 1. GRAPHES

1.8 Exercices
1. Montrer que, depuis l’apparition de l’homme sur terre, le nombre
d’hommes ayant serré la main d’un nombre impairs de personnes est
pair.
2. Soit X un ensemble à 5 éléments. Combien existe-t-il de graphes
simples orientés construits sur X ?
3. Pour n ≥ 2, on note En le graphe complémentaire de Cn . Pour n ∈
{2, . . . , 6}, représenter Cn et En .
4. Soit n ≥ 2. On pose S =∈ Z/nZ et l’on se fixe un a ∈ Z/nZ. On
définit un graphe orienté G = (S, A) sur S par
(x, y) ∈ A ⇐⇒ y = x + a.
(a) On rappelle que pour n entier admettant la décomposition en pro-
duits de facteurs premiers :
n = pα1 1 . . . pαk k ,
on a
ϕ(n) = pα1 1 −1 (p1 − 1) . . . pαk k (pk − 1),
où ϕ(n) désigne le nombre d’inversibles de Z/nZ (ou encore le
nombre d’entiers entre 1 et n qui sont premiers avec n).
Montrer que n ≥ 7 =⇒ ϕ(n) ≥ 4.
(b) Pour quelles valeurs de n a-t-on “G connexe =⇒ a ∈ {+1; −1} “ ?
5. Montrer que si un graphe G = (X, E) possède k composantes connexes,
on a
|X| ≤ |E| + k.
Suggestion : on pourra procéder par récurrence sur le nombre d’arêtes.
6. Un enseignant pose 24 exercices à ses étudiants. Chacun des exercices
vaut un point, et la note accordée à chaque exercice ne peut valoir
que 0 ou 1. Catastrophe ! Non seulement les étudiants ont tous 6/24,
mais pire, chaque exercice a été résolu par exactement deux étudiants !
Magnanime, l’enseignant leur propose alors de travailler par binômes :
chaque membre d’un binôme aura alors la note de leur copie commune.
On suppose que deux étudiants n’ont jamais plus d’un exercice réussi
en commun. Montrer qu’il est possible aux étudiants de s’associer de
telle manière que tout le monde ait la moyenne.
(Note : évidemment, la copie rendue par le binôme donne la bonne
réponse a un exercice donné si au moins l’un des deux membres
connaissait la bonne réponse.)
1.8. EXERCICES 15

7. Au cours d’une réception rassemblant n personnes, on se rend compte


que dans chaque groupe de 4 personnes, il y en a au moins une qui
connait les 3 autres. Montrer qu’il existe au moins n − 3 personnes
qui connaissent tout le monde.
8. 5 amis jouent des parties d’échecs. En tout, 14 parties sont jouées.
Montrer qu’au moins une des personnes a perdu au plus 2 parties.
9. On considère le graphe suivant. Le sommet de départ est celui en bas,

à gauche.
(a) Pour chacun des sommets du graphe, déterminer un chemin de
longueur minimale allant du sommet de départ (0, 0) à ce sommet.
(b) Adapter l’algorithme du cours de façon à déterminer, pour chaque
sommet du graphe, le nombre de chemins de longueur minimale
joignant le somment de départ à ce sommet.
10. On considère le graphe non-orienté d’ensemble de sommets

S = {0, 1, 2, 3} × {0, 1, 2, 3, 4}

et d’arêtes
A = {{u, v} ∈ B2 (S) ∥u − v∥ = 1},
où ∥u − v∥ = |u1 − v1 | + |u2 − v2 |. Faire un dessin de ce graphe, puis
répondre aux questions suivantes :
(a) Pour chacun des sommets du graphe, déterminer un chemin de
longueur minimale allant du sommet de départ à ce sommet.
(b) Adapter l’algorithme du cours de façon à déterminer, pour chaque
sommet du graphe, le nombre de chemins de longueur minimale
joignant le somment de départ à ce sommet. Que remarquez-vous ?
16 CHAPITRE 1. GRAPHES

11. (a) Soit G = (S, A) un graphe simple orienté et T ⊂ S. Montrer


l’inégalité
∑ ∑
d+ (x) ≤ |T |(|T | − 1) + min(|T |, d− (y)).
x∈T y∈S\T

(b) Soit G = (S, A) un graphe simple non-orienté, avec S = {x1 , . . . , xn }


et d(x1 ) ≥ d(x2 ) ≥ · · · ≥ d(xn ).
∑n
Montrer que d(xi ) est pair et que
i=1


k ∑
n
∀k ∈ {1, . . . , n} d(xi ) ≤ k(k − 1) + min(k, d(xi )).
i=1 i=k+1

(c) À la fin d’une réception, on demande aux participants avec com-


bien de personnes ils ont discuté. On obtient comme réponses :
7, 6, 5, 4, 3, 3, 2. Montrer qu’au moins une personne a fait une er-
reur.
(d) Même question avec
i. 7, 7, 5, 4, 3, 3, 2, 1.
ii. 7, 7, 6, 4, 3, 3, 2, 2.
iii. 6, 6, 4, 2, 2, 2, 2, 2.
12. (a) Parmi les graphes ci-dessous, lequels sont isomorphes ?
Indication : on pourra commencer par calculer les degrés des différents
sommets.

A B C
(b) Lorsqu’ils le sont, l’isomorphisme est-il unique ?
1.8. EXERCICES 17

13. Soit G = (S, A) un graphe non-orienté. On supppose que pour tout


k ∈ {0, . . . , l},
√G possède exactement 4 sommets de degré k.
Montrer l ≤ |A|.
14. Le mémoire d’Euler : Solution problematis ad Geometriam situs per-
tinentis, écrit en 1736, commence ainsi :
≪ À Kœnigsberg, en Poméranie, il y a une ı̂le appelée Kneiphof ; le

fleuve qui l’entoure se divise en deux bras, sur lesquels sont jetés les
sept ponts a, b, c, d, e, f, g. Cela posé, peut-on arranger son parcours de
telle sorte que l’on passe sur chaque pont, et que l’on ne puisse y passer
qu’une seule fois ? Cela semble possible, disent les uns ; impossible,
disent les autres. ≫

Montrer comment le théorème d’Euler permet de résoudre ce problème.


15. Peut-on aligner tous les pions d’un jeu de domino suivant la règle du
domino ? On rappelle que le domino à n valeurs est composé de n
“doubles” ,le couples (i, i) avec 1 ≤ i ≤ n, et de n(n−1)
2
“non-doubles”,
les couples (i, j) avec 1 ≤ i < j ≤ n, soit 2 pièces.
n(n+1)

16. Dessiner le graphe dont la matrice est


 
0 1 0 0 0 0 1
1 0 1 0 0 1 0
 
0 1 0 1 0 0 0
 
0 0 1 0 1 0 0
 .
0 0 0 1 0 1 0
 
0 1 0 0 1 0 1
1 0 0 0 0 1 0

Quel est le diamètre de ce graphe ? Combien ce graphe comporte-t’il


de chemins de longueur 6 partant de 1 ? Montrer que pour tout n ≥ 28,
le graphe possède au moins un circuit de longueur n.
18 CHAPITRE 1. GRAPHES
Chapitre 2

Coloriage des sommets

Tous les graphes considérés dans ce chapitre sont des graphes non-orientés.

2.1 Partition en stables d’un graphe simple


Soit G = (S, A) un graphe simple. On dit qu’un ensemble E ⊂ S est un
stable de G si il vérifie

∀{x, y} ∈ B2 (E) {x, y} ∈


/ A. (2.1)

Cela signifie que 2 sommets qui sont dans E ne peuvent être reliés.
On dit qu’un graphe G = (S, A) est k-parti s’il existe une partition
(E1 , . . . , Ek ) de S formée de k stables.
Remarques :
— On ne dit pas “un graphe 2-parti”, mais plutôt “un graphe biparti”.
— Le graphe G = (S, A) est au moins |S|-parti (il suffit de prendre
comme partition de S l’ensemble des singletons de S).
Exemple : On prend pour S l’ensemble des étudiants hétérosexuels actifs
de la faculté des Sciences (on suppose cet ensemble non-vide) et on relie x
et y s’ils ont eu des relations sexuelles. Le graphe obtenu ainsi est biparti.
Il suffit de considérer l’ensembles des hommes, d’une part, l’ensemble des
femmes d’autre part.

2.2 Coloriages propres


Soit G = (S, A) un graphe. On appelle coloriage d’un graphe G à k
couleurs toute application ϕ de S dans {1, . . . , k}.

19
20 CHAPITRE 2. COLORIAGE DES SOMMETS

On dit qu’un coloriage ϕ est propre s’il vérifie

∀x, y ∈ S {x, y} ∈ A =⇒ ϕ(x) ̸= ϕ(y) (2.2)

On note CPk (G) l’ensemble des coloriages propres à k couleurs de G.

2.2.1 Coloriages propres et partitions en stables


Théorème 10. Soit G = (S, A) un graphe et k ≥ 1. G est k-parti si et
seulement si il existe un coloriage propre à k couleurs de G.

Démonstration. Si (E1 , . . . , Ek ) est une partition de S en k stables, il suffit


de définir ϕ par ϕ(x) = k pour x ∈ Ek et l’on obtient alors un coloriage
propre à k couleurs de G.
Réciproquement, si ϕ est un coloriage propre à k couleurs de G, il suffit
de poser Ek = {x ∈ S; ϕ(x) = k} et l’on obtient une partition de S en k
stables.

2.2.2 Graphes bipartis


Théorème 11. Soit G = (S, A) un graphe et k ≥ 1. G est biparti si et
seulement si il ne contient pas de cycle de longueur impaire.

Démonstration. Soit G un graphe biparti et ϕ un coloriage propre à 2 couleurs


de G. Si (x0 , . . . , xn ) est une chaı̂ne, on a pour i ∈ {0, . . . , n − 1}, ϕ(xi ) ̸=
ϕ(xi+1 ), d’où ϕ(x2k ) = ϕ(x0 ) et ϕ(x2k+1 ) = ϕ(x1 ). Maintenant, si cette chaı̂ne
est un cycle, on x0 = xn , d’où ϕ(x0 ) = ϕ(xn ), ce qui implique que n est pair.
G ne possède donc pas de cycle de longueur impaire.
Soit maintenant G un graphe ne possédant pas de cycle de longueur im-
paire. On doit construire un coloriage propre de G. Comme les composantes
connexes ne communiquent pas entre elles, on peut se ramener au cas où G
est connexe : il suffira ensuite de recoller les applications.
Soit x0 un point quelconque de x. Pour x ∈ S, on note l(x) la longueur
minimale d’un chemin reliant x0 à x. On pose alors ϕ(x) = 1 si l(x) est pair,
ϕ(x) = 2 sinon. Soit {x, y} ∈ A : il est facile de voir que |l(x) − l(y)| ≤ 1.
Si on avait l(x) = l(y), on pourrait construire un cycle de longueur 2l(x) + 1
contenant le point x0 et l’arête {x, y}. Ceci est contraire à l’hypothèse selon
laquelle le graphe ne contient pas de cycle de longueur impaire. On a donc
|l(x)−l(y)| = 1, donc l(x) et l(y) ne sont pas de même parité, ce qui implique
ϕ(x) ̸= ϕ(y). Le coloriage est donc bien propre.
2.3. NOMBRE DE COLORIAGES PROPRES 21

2.2.3 Nombre chromatique d’un graphe


On appelle nombre chromatique d’un graphe G et l’on note χ(G) le
nombre
χ(G) = inf{k ∈ N∗ CPk (G) ̸= ∅}.
Ainsi χ(G) est le nombre minimal de couleurs permettant de faire un coloriage
propre de G.
Remarque : On a toujours χ(G) ≤ |S|. (Si S = (x1 , . . . , xk ), il suffit de
poser ϕ(xi ) = i et on obtient un coloriage de G à |S| couleurs.)

2.3 Nombre de coloriages propres


Le but de ce paragraphe est, pour un graphe donné G, de déterminer
|CPk (G)|, c’est à dire le nombre de coloriages propres à k couleurs de G.

2.3.1 Exemple : le graphe sans arêtes à n éléments Vn


On appelle graphe sans arêtes à n éléments et on note Vn le graphe
Vn = (S, A) où S = {1, . . . , n} et A = ∅.

Le graphe V4 .

Il est facile de voir que |CPk (Vn )| = k n

2.3.2 Exemple : le graphe linéaire Ln


On appelle graphe linéaire à n éléments et on note Ln le graphe linéaire
Ln = (S, A) où S = {1, . . . , n} et A = {{i, i + 1}; 1 ≤ i ≤ n − 1}.

Le graphe L4 .

Il est facile de voir que |CPk (Ln )| = k(k − 1)n−1


22 CHAPITRE 2. COLORIAGE DES SOMMETS

2.3.3 Exemple : le graphe cyclique Cn


Il est facile de voir que si l’on rajoute l’arête {1, n} au graphe linéaire Ln ,
on obtient le graphe cyclique Cn .
Ainsi, tout coloriage propre de Cn est un coloriage propre de Ln , puisque
l’ensemble des arêtes de Ln est inclus dans l’ensemble des arêtes de Cn .
Quels sont donc les coloriages propres de Ln qui ne sont pas des coloriages
propres de Cn ? Ce sont les coloriages propres c de Ln qui vérifient c(1) = c(n).
Combien y a-t-il de tels coloriages ? Il suffit de superposer – c’est à dire
d’identifier – les points 1 et n et de compter le nombre de coloriages propres
du graphe ainsi obtenu. On observe facilement que le graphe obtenu est Cn−1 .
On en déduit la formule

|CPk (Cn )| = |CPk (Ln )| − |CPk (Cn−1 )|,


qui permet de calculer |CPk (Cn )| par récurrence.

Un coloriage de L4 vérifiant c(1) = c(4).

Le coloriage de C3 correspondant.

2.3.4 Polynôme chromatique


On va voir que le raisonnement fait au paragraphe précédent pour déduire
la valeur des |CPk (Cn )| à partir des |CPk (Ln )| se généralise sans difficulté
majeure et permet ainsi de calculer |CPk (G)| pour n’importe quel graphe
simple. En particulier, on constatera que |CPk (G)| est un polynôme en k
dont on énoncera quelques propriétés.
Quelques notations
Pour e arête de G = (S, A), on note G − e le graphe obtenu à partir de G
2.3. NOMBRE DE COLORIAGES PROPRES 23

en supprimant l’arête e : on a ainsi G − e = (S, A\e). On note G.e le graphe


obtenu à partir de G − e en identifiant les deux extrémités de e. Ainsi, si
e = {i, j}, on peut définir G.e par G.e = (S\{j}, Aϕ ), où ϕ : S → S\{j} est
défini par {
i si x = j,
ϕ(x) =
x sinon.
Exemple : Si e est une arête quelconque du graphe Cn , on a vu que
Cn − e ∼ Ln et Cn .e ∼ Cn−1 .

Théorème 12. Soit G un graphe simple dont e est une arête. Alors on a la
formule

|CPk (G)| = |CPk (G − e)| − |CPk (G.e)|.

Démonstration. On note e = {i, j}. Les coloriages propres c de G − e se


divisent en 2 catégories :
— ceux qui vérifient c(i) ̸= c(j)
— ceux qui vérifient c(i) = c(j).
Les premiers sont exactement les coloriages propres de G. Quant aux seconds,
ils sont en bijection avec les coloriages propres de G.e. On a donc

|CPk (G − e)| = |CPk (G)| + |CPk (G.e)|,

ce qui donne la formule désirée.

Théorème 13. Soit G = (S, A) un graphe simple possédant n = |S| sommets


Il existe un unique polynôme PG ∈ Z[X] vérifiant

∀k ≥ 0 PG (k) = |CPk (G)|.

Ce polynôme PG est appelé polynôme chromatique de G.


Il vérifie les propriétés suivantes :
— PG est unitaire, de degré |S|.
— Il existe une suite (ak )0≤k≤n d’entiers positifs ou nuls telle que


n
PG (X) = (−1)n−k ak X k
k=1

— Le coefficient en X 0 dans la base canonique est nul.


— Le coefficient en X |S|−1 dans la base canonique vaut −|A|.
24 CHAPITRE 2. COLORIAGE DES SOMMETS

Démonstration. L’unicité d’un tel polynôme provient du fait que deux po-
lynômes coı̈ncidant en une infinité de points – ici les éléments de N – sont
nécessairement égaux.
Pour l’existence, on va procéder par récurrence sur le nombre d’arêtes
|A|. Lorsque |A| = 0, G est le graphe sans arêtes. Or on a vu précédemment
que le graphe sans arêtes à n éléments vérifie |CPk (Vn )| = k n . Ainsi, on a
PVn = X n . Il est facile de voir que ce polynôme vérifie toutes les propriétés
citées.
Supposons maintenant |A| ≥ 1 et soit e une arête de G. D’après le
théorème 12, on a |CPk (G)| = |CPk (G − e)| − |CPk (G.e)|. Or les graphes
G − e et G.e contiennent tous deux |A| − 1 arêtes. Si l’on pose alors PG =
PG−e − PG.e , on a bien alors |CPk (G)| = PG (k).
G − e possède autant de sommets que G, donc, d’après l’hypothèse de
récurrence, PG−e est de degré n. Encore d’après l’hypothèse de récurrence,
on peut trouver des entiers positifs où nuls (ak ) tels que


n
PG−e (X) = (−1)n−k ak X k .
k=1

Comme ce polynôme est unitaire, on a an = 1. Comme G − e possède une


arête de moins que G, on a, toujours d’après l’hypothèse de récurrence,
an−1 = |A| − 1.
G.e possède un sommet de moins que G, donc, d’après l’hypothèse de
récurrence, PG−e est de degré n−1. Encore d’après l’hypothèse de récurrence,
on peut trouver des entiers positifs où nuls (bk ) tels que


n−1
PG.e (X) = (−1)n−1−k bk X k .
k=1

Comme ce polynôme est unitaire, on a bn−1 = 1. On a alors

PG = PG−e − PG.e
∑n ∑
n−1
= (−1) ak X −
n−k k
(−1)n−1−k bk X k
k=1 k=1

n−1
= an X n + (−1)n−k (ak + bk )X k
k=1

n−1
= Xn + (−1)n−k (ak + bk )X k .
k=1
2.4. UN EXEMPLE DE CALCUL 25

Ainsi PG est bien unitaire, de degré n – c’est à dire son nombre de sommets
– et de coefficient en X 0 nul. Comme les suites (ak ) et (bk ) sont à termes
positifs, la suite (ak + bk ) l’est aussi. Quant au coefficient en X n−1 , il vaut
−(an−1 + bn−1 ) = −(an−1 + 1). D’après l’hypothèse de récurrence, an−1 est le
nombre d’arêtes de G − e, c’est à dire |A| − 1 : le coefficient de PG en X n−1
vaut donc bien −|A|.

Corollaire 1. On a la formule de récurrence

PG = PG−e − PG.e

2.4 Un exemple de calcul

La formule de récurrence PG = PG−e −PG.e permet de calculer le polynôme


chromatique de n’importe quel graphe, du moment que l’on sait que
PVn = X n . Cependant, on va plus rapidement si l’on utilise conjointement
d’autres résultats, par exemple que PLn = X(X − 1)n−1 .
Exemple :
On considère le graphe

On va calculer son polynôme chromatique en utilisant les formules de


récurrence, puis en déduire son nombre chromatique.
26 CHAPITRE 2. COLORIAGE DES SOMMETS

G G-e G.e

= -

= -

= -
On a successivement

PG = PC4 − PL3
PC4 = PL4 − PC3
PC3 = PL3 − PL2

On en déduit

PG = PL4 − 2PL3 + PL2


= X(X − 1)3 − 2X(X − 1)2 + X(X − 1)
= X(X − 1)((X − 1)2 − 2(X − 1) + 1)
= X(X − 1)((X − 1)(X − 3) + 1)
= X(X − 1)(X 2 − 4X + 4)
= X(X − 1)(X − 2)2

On a donc calculé le polynôme chromatique de G. Maintenant, le plus


2.5. ALGORITHMES SIMPLES DE COLORIAGE 27

petit entier positif k tel que PG (k) ̸= 0 est k = 3. On en déduit que le


nombre chromatique χ(G) vaut 3.

2.5 Algorithmes simples de coloriage


On va décrire des algorithmes simples pour obtenir un coloriage propre
d’un graphe avec χ(G) couleurs.

2.5.1 algorithme optimiste


Il est basé sur la remarque simple suivante : si un point x du graphe
G = (S, A) est de degré strictement inférieur à χ(G), alors
— χ(G[S\{x}]) ≤ χ(G[S\{x}])
— tout coloriage propre à k couleurs de G[S\{x}] se prolonge en un
coloriage propre de G : il suffit de donner au point x une couleur qui
n’est pas donnée aux voisins de x.
On peut ainsi itérer et se ramener à devoir colorier des graphes toujours
plus petit.
Cette procédure peut être mise en défaut que si on arrive a un graphe
dont tous les sommets sont de degré supérieur ou égal à χ(G).
Dans ce cas, soit on voit tout de suite une solution (par exemple si on
reconnait un graphe complet), soit on supprime quand même le point x, en
espérant que le coloriage de G[S\{x}] prendra en fait moins de χ(G) couleurs
sur les voisins de x. Une solution alternative, dans un tel cas, est d’adopter
l’algorithme glouton.

2.5.2 algorithme glouton


Pour colorier le sommet numéro k, on essaie successivement les couleurs.
Pour une couleur c on vérifie qu’il n’y a pas conflit avec un des k − 1
sommets déjà coloriés :
— si c’est correct on colorie ce sommet avec la couleur c on passe au
sommet suivant, jusqu’à épuisement des points
— sinon on teste la couleur suivante.
— s’il n’y a aucune couleur possible, on efface la couleur qu’on avait
mise au sommet k − 1 et on essaye une autre couleur pour voir si ça
va mieux.
Ce dernier algorithme est sûr de trouver un coloriage propre (lorsque le
nombre de couleurs est au moins égale à χ(G) ), mais cela peut être long.
28 CHAPITRE 2. COLORIAGE DES SOMMETS

2.6 Exercices
1. Faire un beau dessin de K4 et déterminer son nombre chromatique.
2. Montrer qu’un graphe est biparti si et seulement si il ne possède aucun
cycle élémentaire de longueur impaire.
3. (a) Soit G = (X, E) un graphe. On note X1 , X2 , . . . , Xχ(G) une parti-
tion de G en χ(G) couplages. Soit p ∈ {1, . . . , χ(G)}. Montrer que
p
le nombre chromatique du sous-graphe de G engendré par ∪ Xk
k=1
est p.
(b) Montrer que dans tout graphe G vérifiant χ(G) ≥ 6, on peut
trouver deux cycles élémentaires de longueur impaire disjoints.
4. (a) Soit G = (S, A) un graphe biparti. Montrer qu’il existe une appli-
cation ε : S → {+1; −1} telle que

ε(x)d(x) = 0.
x∈S

(b) Des garçons et des filles dansent dans une soirée de gala. À la fin
de la soirée, on demande à chacun et chacune le nombre de danses
auxquelles ils ont participé.
Les réponses sont 3, 3, 3, 3, 3, 5, 6, 6, 6, 6.
Montrer qu’au moins une personne a fait une erreur.
5. Pour n entier non nul, calculer PKn .
6. Soit G un graphe possédant 5 sommets. Montrer que ce graphe admet
au moins 120 coloriages propres à 5 couleurs.
7. Soit G un graphe connexe non-orienté, avec G ̸= L2 . On suppose que
G possède m sommets de degré 1. Montrer que le polynôme (X − 1)m
divise PG .
8. Soit G = (S, A) un graphe et (S1 , S2 ) une partition de S telle que

∀X ∈ S1 ∀y ∈ S2 {x, y} ∈
/ A.

Montrer que PG = PG[S1 ] PG[S2 ] .


9. Soit G un graphe possédant m composantes connexes. Montrer que le
polynôme X m divise PG .
10. Pour chacun des graphes suivants, il faut
— calculer le polynôme chromatique,
— calculer le nombre chromatique
2.6. EXERCICES 29

— donner un exemple de coloriage propre avec un nombre minimal


de couleurs.
30 CHAPITRE 2. COLORIAGE DES SOMMETS
2.6. EXERCICES 31

11. Montrer que les polynômes suivants ne sont pas chromatiques


— P (X) = X 6 + X 5 − 2X 4 + 3X 3 − 4X 2 + X.
— P (X) = X 3 − 5X 2 + 6X.
— P (X) = X(X + 1)4 .
12. Déterminer tous les polynômes chromatiques s’écrivant


n
P (X) = ak X k ,
k=0

avec an−1 = −3.


32 CHAPITRE 2. COLORIAGE DES SOMMETS
Chapitre 3

Jeux de blocage

Tous les graphes considérés dans ce chapitre sont des graphes orientés.

3.1 Jeux sur un graphe


On suppose qu’un graphe simple orienté G = (S, A) est donné à deux
joueurs. Au début la position du jeu est le sommet x0 . Le joueur A doit alors
choisir x1 ∈ V + (x0 ), ce qui donne la nouvelle position du jeu. Ensuite, le
joueur B doit alors choisir x2 ∈ V + (x1 ), ce qui donne la nouvelle position
du jeu. Ensuite, le joueur A..et cætera, jusqu’à ce qu’un joueur ne puisse
plus jouer car le joueur précédent a mis le jeu dans une position x telle que
V + (x) = ∅. On dit que le jeu est un jeu direct si le joueur qui ne peut plus
jouer a perdu. On dit que le jeu est un jeu inverse si le joueur qui ne peut
plus jouer a gagné. Il est facile de voir qu’on peut toujours se ramener a
l’étude d’un jeu direct : si G = (S, A) est associé à un jeu indirect, il suffit
d’étudier le jeu direct sur H = (S ∪ {∞}, A ∪ A∞ ), où ∞ est un sommet
qu’on ajoute au graphe initial et

A∞ = {(x, ∞); x ∈ {x ∈ A; VG+ (x) = ∅}}.

Exemple : Un sac contient 100 pièces d’or. Deux joueurs y puisent al-
ternativement un certain nombre de pièces d’or, une au minimum, dix au
maximum. Celui qui ne peut plus prendre de pièce a perdu (et donc l’autre
a gagné).
Ici S = {1, . . . , 100} et A = {(i, j) ∈ A2 1 ≤ i − j ≤ 10}.
On dit qu’un graphe simple orienté G = (S, A) est progressivement fini si
il n’existe pas de chemin de longueur infinie dans G : pour toute suite (xi )i≥0
à valeurs dans S, il existe i ≥ 0 tels que (xi , xi+1 ) ∈
/ A.

33
34 CHAPITRE 3. JEUX DE BLOCAGE

Ainsi, tout jeu sur un graphe progressivement fini s’arrête un jour – et


a donc un gagnant et un perdant. Si le graphe n’est pas progressivement
fini, il existe des parties qui ne s’arrêtent jamais – en pratique, les joueurs
s’accordent sur la nullité, ou la règle du jeu fixe l’attitude à adopter (voir par
exemple la règle des trois coups aux échecs).

Théorème 14. — Tout graphe progressivement fini est sans cycle.


— Tout graphe fini sans cycle est progressivement fini.

Démonstration. On montre les deux propositions par contraposée.


— Si (s0 , s1 , . . . , sp−1 , sp ) est un cycle, et que l’on pose pour n = pq + r
avec 0 ≤ r < p, xn = sr , x est un chemin de longueur infinie et donc
le graphe n’est pas progressivement fini.
— Soit (xn )n≥0 un chemin infini d’un graphe fini non progressivement
fini. L’application

{0, |S|} → S
i 7→ xi

ne peut être injective car le cardinal de l’ensemble d’arrivée est stric-


tement inférieur à celui de l’ensemble de départ. Ainsi il existe 0 ≤
i < j ≤ |S| tels que si = xj . Ainsi (xi , xi+1 , . . . , xj ) est un cycle.

On utilise fréquemment le lemme suivant pour montrer qu’un graphe est


progressivement fini.

Lemme 1. Soit G = (S, A) un graphe orienté (pas nécessairement fini). On


suppose qu’il existe une fonction ϕ : S → N telle que

∀x ∈ S ∀y ∈ V + (x) ϕ(y) < ϕ(x).

Alors G est progressivement fini.

Démonstration. Soit (x0 , . . . , xn ) un chemin du graphe G. On a


n ∑
n
ϕ(x0 ) ≥ ϕ(x0 ) − ϕ(xn ) = (ϕ(xi−1 ) − ϕ(xi )) ≥ 1 = n,
i=1 i=1

donc la partie ne peut faire plus de ϕ(x0 ) coups

Exemple : Dans le jeux des pièces précédent, il suffit de prendre


ϕ(x) = x.
3.2. SOMME DIGITALE 35

3.2 Somme digitale


3.2.1 Développement binaire d’un entier
On note Puiss2 l’ensemble des puissances de 2 :

Puiss2 = {2k ; k ∈ N},

et Pf2 l’ensemble des parties finies de Puiss2 :

Pf2 = {A ∈ P(Puiss2 ); |A| < +∞}.

Exemple : {1, 4, 32} ∈ Pf2 .


Pour A ∈ Pf2 , on note

s(A) = x.
x∈A

Exemple : s({1, 4, 32}) = 37.


Remarques :
— Si A, B ∈ Pf2 , alors A ∪ B ∈ Pf2 .
— Si A, B ∈ Pf2 vérifient A ∩ B = ∅, alors s(A ∪ B) = s(A) + s(B).
— Si A ∈ Pf2 , alors 2A = {2x; x ∈ A} ∈ Pf2 .
— s(A) est pair si et seulement si 1 ∈/ A.
— Si A ∈ Pf et que 1 ∈
2
/ A, alors 2 A = {x/2; x ∈ A} ∈ Pf2 .
1

Théorème 15. L’application

Pf2 → N

A 7→ s(a) = x.
x∈A

est bijective.
On notera p sa bijection réciproque.

Démonstration. On note Hn l’hypothèse ∃!A ∈ Pf2 s(A) = n. Vérifions H0 :


on a s(∅) = 0. D’autre part, pour tout A non vide dans Pf2 ,


s(x) = x ≥ min(A) ≥ 1 > 0.
x∈A

Ainsi H0 est vérifiée. Montrons que si n ≥ 1 et ∀k ∈ {0, . . . , n − 1} Hk est


vérifiée, alors Hn est vérifiée.
36 CHAPITRE 3. JEUX DE BLOCAGE

— Si n est pair, alors il existe k vérifiant 0 ≤ k < n et n = 2k. D’après


Hk , il existe B ∈ Pf2 vérifiant s(B) = k. Maintenant
∑ ∑ ∑
n = 2k = 2s(B) = 2 x= 2x = y = s(2B)
x∈B x∈B y∈2B

Supposons maintenant n = 2k = s(A) = s(C) : on en déduit


k = s( 21 A) = s( 21 C). D’après Hk , on a alors 12 A = 21 C. On en déduit
A = C.
— Si n est impair, soit B tel que s(B) = n − 1 – c’est possible d’après
l’hypothèse de récurrence. Comme n − 1 est pair, B ne contient pas
1. On a alors s(B ∪ {1}) = s(B) + s({1}) = n − 1 + 1 = n. On a donc
l’existence. Soit maintenant A tel que s(A) = n. Comme n est impair
A contient {1} : on a donc s(A\{1}) = S(A) − s({1}) = n − 1 = s(B).
D’après Hn , on a donc A\{1} = B. On en déduit A = B ∪ {1}.

Exemple : p(37) = {1; 4; 32} ; p(17) = {1; 16}.


Lemme 2.
∀A ∈ Pf2 max(A) ≤ s(A) < 2 max(A).
Démonstration. La première inégalité est évidente : une somme de nombres
positifs est toujours supérieure au plus grand d’entre eux. Si max(A) = 2p ,
on a A ⊂ {1, 2, . . . , 2p }, d’où

p
s(A) ≤ 2i = 2p+1 − 1 < 2p+1 = 2 max(A).
i=0

3.2.2 Quelques propriétés de la différence symétrique


On rappelle que l’on définit la différence symétrique A∆B des ensembles
A et B par

A∆B = {x ∈ A; x ∈
/ B} ∪ {x ∈ B; x ∈
/ A}.
On a les propriétés suivantes :
— ∀A, B A∆B = B∆A.
— ∀A A∆∅ = ∅∆A = A.
— ∀A A∆A = ∅.
— ∀A, B, C (A∆B)∆C = A∆(B∆C).
— 11A∆B ) = 11A + 11B mod 2.
3.2. SOMME DIGITALE 37

3.2.3 Application
.
Pour a, b entiers naturels, on définit leur somme digitale a + b par

.
a + b = s(p(a)∆p(b)).

Exemple :
.
37 + 17 = s(p(37)∆p(17)) = s({1; 4; 32}∆{1; 16}) = s({4; 16; 32}) = 52.
On a les propriétés suivantes :
. .
— ∀a, b ∈ N a + b = b + a.
. .
— ∀a ∈ N a + 0 = 0 + a = a.
.
— ∀a ∈ N a + a = 0.
. . . .
— ∀a, b, c (a + b) + c = a + (b + c).

Lemme 3. Soient A, B ∈ Pf2 . On a

s(A) < s(B) ⇐⇒ max(A∆B) ∈ B.

Démonstration. Si A = B, s(A) = s(B) et max(A∆B) = −∞, donc aucun


des termes de l’équivalence n’est vérifié. Supposons donc A ̸= B – ce qui est
équivalent à supposer A∆B ̸= ∅.
Comme s(A) = s(A ∩ B) + s(A\B) et s(B) = s(A ∩ B) + s(B\A), on a

s(A) < s(B) ⇐⇒ s(A\B) < s(B\A).

Supposons max(A∆B) ∈ B : comme A∆B = (A\B) ∪ (B\A), on a donc


max(A∆B) = max(B\A) > max(A\B). Mais comme les éléments de A et B
sont des puissances de 2, on en déduit max(B\A) ≥ 2 max(A\B).
Par suite, d’après le lemme 2, on obtient

s(B\A) ≥ max(B\A) ≥ 2 max(A\B) > s(A\B),

d’où s(B) > s(A). Évidemment, si l’on avait supposé max(A∆B) ∈ A, on


aurait obtenu s(B) < s(A). L’équivalence est donc montrée

On va maintenant montrer un lemme technique qui sera crucial dans la


preuve du théorème de Grundy.
38 CHAPITRE 3. JEUX DE BLOCAGE

.
Lemme 4. Soient a, b, c ∈ N tels que a < b + c.
Alors
.
— soit a + b < c,
.
— soit a + c < b.

Démonstration. Afin de simplifier les écritures, posons quelques notations :


.
on pose A = p(a), B = p(b), C = p(c) et D = p(b + c) = B∆C. D’après le
lemme 3, on a max(A∆D) ∈ D, qu’on peut écrire max(A∆B∆C) ∈ B∆C.
De deux choses l’une
— soit max(A∆B∆C) ∈ B, et alors max((A∆C)∆B) ∈ B, ce qui, grâce
.
au lemme 3, implique s(A∆C) < s(B), c’est à dire a + c < b.
— soit max(A∆B∆C) ∈ C, et alors max((A∆B)∆C) ∈ C, ce qui, grâce
.
au lemme 3, implique s(A∆B) < s(C), c’est à dire a + b < c.

3.3 Noyau
Soit G = (S, A) un graphe orienté simple.
On dit qu’un ensemble N ⊂ S est un noyau de G si il vérifie
— ∀x ∈ N V + (x) ∩ N = ∅
— ∀y ∈ S\N V + (y) ∩ N ̸= ∅

Théorème 16. Dans un jeu sur un graphe possédant un noyau N , si un


joueur a la possibilité de choisir une position x ∈ N , ce joueur possède une
stratégie lui permettant de ne pas perdre la partie.

Démonstration. Si le joueur joue x ∈ N , alors de deux choses l’une


1. soit V + (x) = ∅, et alors son adversaire ne peut plus jouer et a donc
perdu la partie.
2. soit V + (x) ̸= ∅ et alors son adversaire choisira une position y ∈
/ N,
puisque V (x) ∩ N = ∅. Alors, le joueur pourra à nouveau jouer une
+

position x′ ∈ N , puisque ∀y ∈ S\N V + (y) ∩ N ̸= ∅


Ainsi, le joueur est assuré de ne pas perdre la partie.

Si le graphe est progressivement fini, la partie s’arrêtera un jour, et donc


le joueur gagnera la partie s’il applique la stratégie.
3.4. FONCTION DE GRUNDY 39

Lemme 5. Un graphe admettant deux noyaux n’est pas progressivement fini.

Démonstration. Soient M et N deux noyaux d’un graphe G. On va d’abord


montrer
∀x ∈ M ∆N ∃y ∈ V + (x) ∩ (M ∆N ).
Soit x ∈ M ∆N . Supposons par exemple x ∈ M \N . Comme x ∈ / N et que N
est un noyau, on peut trouver y ∈ V (x) ∩ N . Mais comme x ∈ M et que M
+

est un noyau, on a nécessairement y ∈ / M . On a donc y ∈ V + (x) ∩ (N \M ),


d’où y ∈ V + (x) ∩ (M ∆N ). On procède de même lorsque x ∈ N ∆M .
On choisit donc x0 ∈ M ∆N , puis x1 ∈ V + (x0 ) ∩ (M ∆N ), puis
x2 ∈ V + (x2 ) ∩ (M ∆N ), et cætera. On construit donc ainsi 1 une suite (xi )i≥0
d’éléments de M ∆N vérifiant ∀i ≥ 0 (xi , xi+1 ) ∈ A.

Un graphe progressivement fini admet donc au plus un noyau. On va en


fait montrer ultérieurement que tout graphe progressivement fini admet un
unique noyau.

3.4 Fonction de Grundy


Soit G un graphe orienté. On dit qu’une fonction g : G → N est une
fonction de Grundy pour le graphe G si elle vérifie

∀x ∈ S g(x) = min{n ∈ N n ∈
/ g(V + (x))}. (3.1)

Théorème 17. Si g est une fonction de Grundy pour G, alors

N = {x ∈ S; g(x) = 0}

est un noyau de G.

Démonstration. Soit x ∈ N . On a 0 = g(x) = min{n ∈ N n ∈ / g(V + (x))},


donc 0 ∈/ g(V (x)), ce qui veut dire que ∀y ∈ V (x) g(y) ̸= 0, c’est à dire
+ +

∀y ∈ V (x) y ∈
+
/ N.
Soit x ∈ S\N : on a 0 ̸= g(x) = min{n ∈ N n ∈ / g(V + (x))}. Pour que
0 ne soit pas le plus petit élément d’une partie de N, il faut que cette partie
ne contienne pas 0, donc 0 ∈ g(V + (x)), donc ∃y ∈ V + (x), avec g(y) = 0, soit
y ∈ N.

Le théorème qui suit est dû à Grundy. Son rôle est essentiel, car il permet
de montrer que les objets dont on parle existent bien dans de nombreux cas.
1. Si le nombre des sommets est infini, on utilise l’axiome du choix...
40 CHAPITRE 3. JEUX DE BLOCAGE

Théorème 18. Soit G un graphe progressivement fini. Alors G possède une


unique fonction de Grundy.
Démonstration. On pose S0 = ∅, puis, pour k ≥ 0,

Sk+1 = {x ∈ S V + (x) ⊂ Sk }.

On montre facilement par récurrence que ∀k ≥ 0 Sk ⊂ Sk+1 . Les Sk


forment donc une suite croissante pour l’inclusion.
Un peu de réflexion montre que dire que le graphe est progressivement
fini est équivalent à dire que
+∞
∪ Sk = S.
k=1

Pour connaı̂tre ou définir une fonction sur S, il suffit donc de le faire sur
tout les Sk . On va donc procéder ainsi pour définir une fonction de Grundy
g.
Pour x ∈ S1 , la définition d’une fonction de Grundy impose de poser
g(x) = 0.
Posons donc comme hypothèse de récurrence Hk : il existe une unique
fonction g : Sk → N vérifiant

∀x ∈ Sk g(x) = min{n ∈ N n ∈
/ g(V + (x))}. (3.2)

H1 est vraie. Montrons maintenant que la propriété Hk est héréditaire.


Supposons donc Hk vraie. On note g la fonction de Grundy définie sur Hk .
On va voir comment la prolonger à Sk+1 : de deux choses l’une
— si x ∈ Sk , g(x) a déjà été déterminée de manière unique.
— si x ∈/ Sk , on prolonge alors g en posant

g(x) = min{n ∈ N n ∈
/ g(V + (x))}.

Cette définition est bien correcte car x ∈ Sk+1 =⇒ V + (x) ⊂ Sk et


g(x) a déjà été définie sur Sk . C’est évidemment la seule définition
possible.
Ainsi Hk+1 est réalisée.
g est ainsi déterminée progressivement sur S tout entier.

Théorème 19. Tout graphe progressivement fini admet un unique noyau N .


Il est donné par
N = {x ∈ S; g(x) = 0},
où g est la fonction de Grundy de G.
3.4. FONCTION DE GRUNDY 41

Démonstration. Tout graphe progressivement fini admet une fonction de


Grundy. Or tout graphe admettant une fonction de Grundy g admet au
moins N = {x ∈ S; g(x) = 0} comme noyau, donc tout graphe progressi-
vement fini admet au moins un noyau. L’unicité a déjà été montrée au lemme
5.

Exemples :
1. Le jeu de Grossbaff et Grossbouff, hommes préhistoriques.
Un paquet de 100 lézards est sur la table. À tour de rôle, chacun en
mange autant qu’il veut, au moins un. Celui qui ne peut plus manger
a perdu. Grossbaff commence. Nous allons voir – qui l’eût cru – qu’il
existe une stratégie gagnante pour Grossbaff. On a S = {0, . . . , 100}
et A = {(x, y) ∈ S 2 ; y < x}. (Bien remarquer que le graphe est la
traduction de la règle du jeu). En appliquant le lemme 1 à ϕ(x) = x,
on voit que le graphe est progressivement fini. Comme V + (0) = ∅, on
a g(0) = 0. Alors, on monte par récurrence sur n que g(n) = n. Le
noyau du graphe est donc réduit à {0}.
2. Préhistoire de la civilité
Quelques centaines de milliers d’années ont passé et les mœurs se
sont adoucies. Grossbaff et Grossbouff, hommes préhistoriques, ont
toujours un paquet de 100 lézards est sur la table. À tour de rôle,
chacun en mange au moins un, mais – civilité oblige – s’interdit d’en
prendre plus que m. Celui qui ne peut plus manger a perdu. Grossbaff
commence. On a S = {0, . . . , 100} et A = {(x, y) ∈ S 2 ; x − m ≤
y < x}. (Là encore, le graphe est la traduction de la règle du jeu).
En appliquant le lemme 1 à ϕ(x) = x, on voit que le graphe est
progressivement fini. Comme V + (0) = ∅, on a g(0) = 0. Alors, on
monte par récurrence sur n que g(n) est le reste de la division de n
par (m + 1). Le noyau du graphe est donc à (m + 1)N ∩ {0, . . . , 100}.
Si m + 1 divise 100 et que Grossbouff a suivi l’unité Probabilités et
Graphes , alors Grossbaff va perdre.
3. Promotion sociale
Quelques centaines de milliers d’années ont (encore) passé et les mœurs
se sont (encore) adoucies. M. de Grossbaff et M. de Grossbouff, pairs
du royaume, ont maintenant un paquet de 100 ortolans est sur la table.
À tour de rôle, chacun en mange au moins un, mais – civilité oblige
– s’interdit d’en prendre plus que m. Celui qui mangera le dernier se
sentira confus, et devra se retirer, ayant perdu l’estime du roi. M. de
Grossbaff commence.
On a S = {1, . . . , 100} et A = {(x, y) ∈ S 2 ; x − m ≤ y < x}. (Là
42 CHAPITRE 3. JEUX DE BLOCAGE

encore, le graphe est la traduction de la règle du jeu). En appliquant


le lemme 1 à ϕ(x) = x, on voit que le graphe est progressivement fini.
Comme V + (1) = ∅, on a g(1) = 0. Alors, on monte par récurrence sur
n que g(n) est le reste de la division de n − 1 par (m + 1). Le noyau
du graphe est donc à ((m + 1)N + 1) ∩ {0, . . . , 100}. Si m + 1 divise 99
et que M. de Grossbouff a suivi l’unité Probabilités et Graphes , alors
M. de Grossbaff va perdre.

3.5 Jeux décomposables


Le théorème qui suit est le cœur de la théorie des jeux de Nim et de leurs
généralisations.

3.5.1 Le théorème de Grundy


On appelle opération sur S toute application de S × S dans S. Si on
s’est donné une opération sur S, on note x + y l’image de (x, y)par cette
application. Si T et U sont des parties de S et x et y des éléments de S, on
note
x + V = {x + v; v ∈ V }
et
U + y = {u + y; u ∈ U }.
Théorème 20. Soit G = (S, A) un graphe orienté progressivement fini et +
une opération sur S. Si l’on a

∀(x, y) ∈ S × S V + (x + y) = (V + (x) + y) ∪ (x + V + (y)),


alors sa fonction de Grundy vérifie
.
∀(x, y) ∈ S 2 g(x + y) = g(x) + g(y).

Démonstration. Comme dans le théorème 18, on va utiliser les ensembles


(Sk )k≥0 définis par S0 = ∅, puis, pour k ≥ 0,

Sk+1 = {x ∈ S V + (x) ⊂ Sk }.

On a vu dans la preuve du théorème 18 que les Sk forment donc une suite


croissante pour l’inclusion et que
+∞
∪ Sk = S.
k=1
3.5. JEUX DÉCOMPOSABLES 43

Une propriété réalisée dans tous les Sk est donc réalisée dans S tout entier.
Posons comme hypothèse de récurrence Hk :
.
∀z ∈ Sk ∀(x, y) ∈ S 2 z = x + y =⇒ g(z) = g(x) + g(y) (3.3)

Montrons d’abord H1 . Soit z ∈ S1 et x, y ∈ S tels que z = x + y. On a


V (z) = ∅, ce qui implique
+

— d’une part g(z) = 0.


— d’autre part, on a ∅ = V + (z) = (V + (x) + y) ∪ (x + V + (y)), donc
V + (x) = ∅ et V + (y) = ∅. Ceci implique g(x) = 0 et g(y) = 0.
. .
On a donc bien g(z) = 0 = 0 + 0 = g(x) + g(y).
Montrons maintenant que Hn implique Hn+1 . Soit z ∈ Sn+1 et soient
(x, y) ∈ S 2 tels que z = x + y. Raisonnons par l’absurde et supposons
.
g(z) ̸= g(x) + g(y). De deux choses l’une,
.
— soit g(z) > g(x) + g(y),
.
— soit g(z) < g(x) + g(y).
.
— cas où g(z) > g(x) + g(y).
Par définition d’une fonction de Grundy
g(V + (z)) ⊃ {n ∈ N; n < g(z)}.
.
Il existe donc t ∈ V + (z) g(t) = g(x) + g(y).
Comme t ∈ V + (z) = (V + (x) + y) ∪ (x + V + (y)), t peut s’écrire sous la
forme t = u + y, pour un certain u ∈ V + (x) ou sous la forme t = x + v,
pour un certain v ∈ V + (y).
— Dans le premier cas, comme t ∈ V + (z) ⊂ Sn , on a, d’après l’hy-
.
pothèse de récurrence : g(t) = g(u) + g(y). Comme on a par
. . .
ailleurs g(t) = g(x) + g(y), on obtient g(u) + g(y) = g(x) + g(y),
d’où g(u) = g(x), ce qui contredit u ∈ V + (x).
— Dans le second cas, comme t ∈ V + (z) ⊂ Sn , on a, d’après l’hy-
.
pothèse de récurrence : g(t) = g(x) + g(v). Comme on a par
. . .
ailleurs g(t) = g(x) + g(y), on obtient g(x) + g(v) = g(x) + g(y),
d’où g(v) = g(y), ce qui contredit v ∈ V + (y).
44 CHAPITRE 3. JEUX DE BLOCAGE

.
— cas où g(z) < g(x) + g(y).
D’après le lemme 4, on a
.
— soit g(z) + g(x) < g(y),
.
— soit g(z) + g(y) < g(x).
— Dans le premier cas, en utilisant comme précédemment la définition
d’une fonction de Grundy, on trouve s ∈ V + (y) tel que g(s) =
.
g(z) + g(x).
. .
Comme x + s ∈ x + V + (y) ⊂ V + (x + y) = V + (z) ⊂ Sn , on a
.
g(x + s) = g(x) + g(s), d’où

. .
g(x + s) = g(x) + (g(z) + g(x)) = g(z),

ce qui contredit x + s ∈ V + (z).


— Dans le second cas, en utilisant comme précédemment la définition
d’une fonction de Grundy, on trouve t ∈ V + (x) tel que
.
g(t) = g(z) + g(y).
. .
Comme t + y ∈ V + (x) + y ⊂ V + (x + y) = V + (z) ⊂ Sn , on a
.
g(t + y) = g(t) + g(y), d’où

. .
g(t + y) = (g(z) + g(y)) + g(y) = g(z),

ce qui contredit t + y ∈ V + (z).


(Hn ) est donc bien héréditaire : comme les (Sn )n≥1 recouvrent S, le théorème
est démontré.

3.5.2 Applications aux jeux de type Nim


On appelle Jeu de Nim tout jeu admettant une règle du type suivant :
on pose sur la table un ou plusieurs tas de pions indiscernables, la taille des
tas pouvant différer. Chacun des joueurs choisit, lorsque c’est son tour, un
des tas sur lequel il exerce une action autorisée par la règle en fonction du
nombre de pions constituant le tas : ce peut être
3.5. JEUX DÉCOMPOSABLES 45

— enlever du jeu un, plusieurs pions, voire la totalité des pions du tas
— créer un ou plusieurs nouveaux tas à partir d’ un, plusieurs pions,
voire la totalité des pions du tas
— toute combinaison de ces deux actions
Il est important de noter qu’on ne peut pas modifier deux tas existants à la
fois. Le joueur qui ne peut plus jouer a perdu
Exemples :
1. on choisit un tas et on en enlève au moins un pion, éventuellement la
totalité (jeu de Fan Tan).
2. on choisit un tas et on en enlève 1 ou 2 pions (pas plus que sa hauteur,
bien sûr).
3. on choisit un tas, on en enlève 1 pion, puis on le divise en 2 tas non
vides.
4. on choisit un tas que l’on divise en deux tas non vides inégaux.
5. on choisit un tas que l’on divise en deux tas non vides dont la différence
des tailles ne peut dépasser 1.
Modélisation
L’état du jeu est modélisé par une suite d’entiers nuls à partir d’un certain

rang : on note S = (NN ) Si x = (xi )i≥1 est un élément de S, xk représente
le nombre de tas de hauteur k quand le jeu est dans l’état x.
On note tk la position du jeu formée d’un unique tas de hauteur k. Ainsi,
tki est égal à un si k = i, à zéro sinon.
On note 0 la suite identiquement nulle, correspondant à une table de jeu
vide.
Si l’on a 2 suites x = (xn )n≥1 et y = (yn )n≥1 à valeurs dans Z, on note

comme d’habitude x + y = (xn + yn )n≥1 . Si A est inclus dans ZN , on note

x + A = {x + y; y ∈ A}

On se donne maintenant une famille (Ai )i≥1 de parties de ZN vérifiant

∀k ≥ 1 ∀x ∈ Ak tk + x ∈ S.

On suppose également qu’aucun des Ak ne contient la suite identiquement


nulle, de manière à ce que le jeu ne puisse stationner.
On considère alors le graphe sur S défini par

∀x = (xi )i≥1 ∈ S V + (x) = ∪ x + Ai .


i:xi >0

Un jeu sur un tel graphe sera appelé un jeu de Nim.


46 CHAPITRE 3. JEUX DE BLOCAGE

Se donner les ensembles Ai , c’est se donner la règle du jeu.


Remarque : On voit facilement que V + (tk ) = tk + Ak . Pour définir un
jeu de Nim, il est donc équivalent de se donner les (V + (tk ))k≥1 (en vérifiant
bien que tk ∈
/ V + (tk )), puis d’imposer, pour les autres éléments x de S :

V + (x) = ∪ x − ti + V + (ti ).
i:xi >0

Exemples :
1. Fan Tan on choisit un tas et on en enlève au moins un pion, éventuellement
la totalité.
∀k ≥ 1 Ak = {−tk } ∪ {−tk + ti ; 0 < i < k}.

2. on choisit un tas et on en enlève 1 ou 2 pions (pas plus que sa hauteur,


bien sûr). A1 = {−t1 }; A2 = {−t2 + t1 ; −t2 } et
∀k ≥ 3 Ak = {−tk + tk−i ; 1 ≤ i ≤ 2}.

3. on choisit un tas, on en enlève 1 pion, puis on le divise en 2 tas non


vides. A1 = A2 = ∅ et
∀k ≥ 3 Ak = {−tk + ti + tk−1−i ; 1 ≤ i ≤ k/2}.

4. on choisit un tas que l’on divise en deux tas non vides inégaux.
A1 = A2 = ∅ et
∀k ≥ 3 Ak = {−tk + ti + tk−i ; 1 ≤ i < k/2}.

5. on choisit un tas que l’on divise en deux tas non vides dont la différence
des tailles ne peut dépasser 1. A1 = ∅ et
∀k ≥ 1 A2p = {−t2p + 2tp } et A2p+1 = {−t2p + tp + tp+1 }

Théorème 21. Soit G = (S, A) un graphe associé à un jeu de Nim progres-


sivement fini. On note g sa fonction de Grundy.
Si une position x se décompose en

.
x= xi ti ,
i≥1

on a

g(x) = g(ti ),
xi =1 mod 2


.
(ATTENTION ! est une somme digitale !)
3.5. JEUX DÉCOMPOSABLES 47

Démonstration. Commençons par vérifier les hypothèses du théorème de


Grundy : soient

x= xi ti ,
i≥1

et

y= yi ti .
i≥1

On a

V + (x + y) = ∪ x + y + Ai
i:xi +yi >0
( )∪( )
= ∪ x + y + Ai ∪ x + y + Ai
i:xi >0 i:yi >0
( )∪( )
= ( ∪
x + Ai ) + y x+( ∪ y + Ai )
i:xi >0 i:yi >0
( )∪( )
= V + (x) + y x + V + (y)

On a donc

.
g(x) = g(xi ti ).
i≥1

Ensuite comme g(xi ti ) = g(ti + · · · + ti ) (xi fois), on a, toujours d’après le


. .
théorème de Grundy g(xi ti ) = g(ti ) + . . . + g(ti ) (xi fois). Il suffit alors de
.
se souvenir que ∀a ∈ N a + a = 0 pour conclure.

On dit qu’un jeu de Nim est sans création de pions si


∀i ≥ 0 ∀x ∈ V + (ti ) kxk ≤ i.
k≥1

Lemme 6. Si un jeu de Nim est sans création de pions, il est progressivement


fini

Démonstration. On va appliquer le lemme 1 à la fonction


+∞
ϕ(x) = k 2 xk .
k=1

Soit x ∈ S et y ∈ V + (x).
Nous avons déjà remarqué que V + (x) = ∪ x − ti + V + (ti ). Il existe donc
i:xi >0
48 CHAPITRE 3. JEUX DE BLOCAGE

i0 ≥ 1 et z ∈ V + (ti0 ) tel que xi0 > 0 et y = x − ti0 + z. Il est facile de voir


que ∀a, b ∈ S ϕ(a + b) = ϕ(a) + ϕ(b) : on déduit donc de y + ti0 = x + z
l’identité ϕ(y) + ϕ(ti0 ) = ϕ(x) + ϕ(z).
Maintenant, on a

ϕ(y) − ϕ(x) = −ϕ(ti0 ) + ϕ(z)


∑ 2
= −i0 2 + k zk
k≥1

≤ −i0 2 + k 2 zk2
k≥1

≤ −i0 2 + ( kzk )2
k≥1

≤ −i0 2 + i20 = 0

(La dernière inégalité traduit qu’il n’y a pas de création de pions.)


Pour avoir ϕ(y) − ϕ(x) = 0, il faut avoir égalité dans toutes les inégalités
intermédiaires. Il faut donc avoir simultanément


 ∀k ≥ 1 xk ∈ {0; 1}


∃!k ≥ 1 xk ̸= 0

 ∑

i0 = kxk
k≥0

L’égalité ne peut donc se produire que si x = ti0 , ce qui est absurde car on a
supposé dès le départ que le graphe est sans boucle.
On a donc
∀x ∈ S ∀y ∈ V + (x) ϕ(y) < ϕ(x).
Comme ϕ est à valeurs dans N, les hypothèses du lemme 1 sont vérifiées. Le
graphe du jeu est donc progressivement fini.

3.5.3 Étude d’un exemple


Dans sa position initiale, le jeu considéré est constitué de 5 tas de jetons.
Le premier tas comprend 1 jeton, le deuxième 2 jetons, le troisième 3 jetons,
le quatrième 4 jetons, le cinquième 5 jetons. Chacun à leur tour, les deux
joueurs peuvent :
— soit enlever un jeton du jeu,
— soit prendre 2 jetons sur un tas en comportant au moins 3 afin de
fabriquer un nouveau tas de 2 jetons.
3.5. JEUX DÉCOMPOSABLES 49

Celui qui enlève le dernier jeton a gagné. Question : le premier joueur possède-
t-il une stratégie gagnante ? Si oui, comment peut-il jouer son premier coup
sans perdre son avantage ?
Le jeu considéré ici est un jeu de Nim sans création de pions. La règle du
jeu peut se traduire par
— V + (t1 ) = {0},
— V + (t2 ) = {t1 },
— ∀k ≥ 3 V + (tk ) = {tk−1 ; tk−2 + t2 }.
On construit ligne après ligne le tableau suivant (avec la notation t0 = 0
(c’est le jeu vide) ).

k V + (tk ) g(V + (tk )) g(tk )


0 ∅ ∅ 0
1 {0} g(0) = 0 1
2 {t1 } g(t1 ) = 1 0
g(t2 ) = 0
3 {t2 ; t1 + t2 } . . 2
g(t1 + t2 ) = g(t1 ) + g(t2 ) = 1 + 0 = 1
g(t3 ) = 2
4 {t ; t + t }
3 2 2 . 1
g(t2 + t2 ) = g(t2 ) + g(t2 ) = 0
g(t4 ) = 1
5 {t4 ; t2 + t3 } . . 0
g(t2 + t3 ) = g(t2 ) + g(t3 ) = 0 + 2 = 2

La position de départ est x = t1 +t2 +t3 +t4 +t5 : elle a donc comme nombre
. . . . . . . .
de Grundy g(t1 ) + g(t2 ) + g(t3 ) + g(t4 ) + g(t5 ) = 1 + 0 + 2 + 1 + 0 =
. .
1 + 1 + 2 = 2. Son nombre de Grundy n’est pas nul : cette position n’est
donc pas dans le noyau : le joueur qui commence peut donc amener son
adversaire dans le noyau, puis, s’il ne fait pas d’erreur, gagner la partie.
Pour passer d’une position x qui n’est pas dans le noyau à une position y
qui est dans le noyau, il faut et il suffit de trouver un entier i0 et un y ′ ∈ S tels
que xi0 > 0 et y ′ ∈ V + (ti0 ) tels que si l’on pose y = x−ti0 +y ′ , on ait g(y) = 0,
.
ce qui équivaut à g(ti0 ) + g(y ′ )) = g(x). Ici, comme x = t1 + t2 + t3 + t4 + t5
et g(x) = 2 il faut choisir i0 dans {1, 2, 3, 4, 5} et y ′ ∈ V + (ti0 ) tels que
.
g(ti0 ) + g(y ′ )) = 2. On voit facilement que ce système admet deux solutions :
l’une est i0 = 3 et y ′ = t2 ; elle consiste à enlever 1 pion au troisième tas.
L’autre solution est i0 = 5 et y ′ = t2 + t3 : elle consiste à enlever 2 pions aux
50 CHAPITRE 3. JEUX DE BLOCAGE

cinquième tas pour fabriquer un nouveau cas.


Tout autre coup permettrait à l’adversaire de reprendre l’avantage – et, s’il
ne fait pas d’erreur, de gagner la partie.
3.6. EXERCICES 51

3.6 Exercices
1. La cagnotte
Deux joueurs s’opposent. Ils partent de zéro. Chacun à leur tour ajoute
un nombre d’euros entier entre 1 et 20 à une cagnotte. Le joueur
atteignant 200 euros remporte la cagnotte. Lequel des deux joueurs a
une stratégie gagnante ? Décrire cette stratégie.
2. Un peu, beaucoup...
Deux joueurs s’opposent, avec comme terrain de jeu une marguerite.
Chaque joueur arrache lorsque c’est son tour un pétale ou deux pétales
adjacents. Celui qui arrache le dernier pétale gagne. Lequel des deux
joueurs a une stratégie gagnante ? Décrire cette stratégie.
3. Passionnément
Même question que dans l’exercice précédent, mais en supposant qu’on
a désigné au début du jeu un pétale que nul n’a le droit d’enlever.
. . .
4. Calculer 18 + 34, 147 + 81,151 + 83.

5. Combien y a-t-il de couples (a, b) ∈ {0, . . . , 15} × {0, . . . , 15} tels que
.
a + b = a + b?

6. Dans le jeu Fan Tan, que faut-il jouer lorsqu’il y simultanément sur
la table : un pion isolé, un tas de 4 pions, un tas de 5 pions, un tas de
7 pions ?
7. Dans la variante de Fan Tan présentée dans le cours (celle où l’on ne
peut enlever que un ou deux pions à la fois), que faut-il jouer lorsqu’il
y simultanément sur la table : un pion isolé, un tas de 4 pions, un tas
de 5 pions, un tas de 7 pions ?
8. Le singe
À la fête foraine, un amuseur vous propose de jouer (moyennant fi-
nances !) au jeu suivant contre son singe savant : on pose sur la table
un ou plusieurs tas de pions indiscernables, la taille des tas pouvant
différer. Chacun des joueurs choisit, lorsque c’est son tour, un des tas,
qu’il divise en deux tas non vides dont la différence des tailles ne peut
dépasser un. Faut-il se méfier ?
9. Les dominos

Deux joueurs, Bernard et Gilles, s’affrontent sur le tableau représenté


ci-dessus. Le jeu consiste à déposer à tour de rôle un domino qui doit
52 CHAPITRE 3. JEUX DE BLOCAGE

recouvrir exactement deux cases contiguës libres. Le premier joueur


ne pouvant plus jouer est perdant. Bernard commence, mais Gilles
a, en contrepartie, le privilège de pouvoir limiter le nombres de cases
du tableau, qui comptera un nombre de cases compris, au sens large,
entre 2 et 11. Quel nombre de cases doit choisir Gilles pour être sûr
de gagner, quel que soit le jeu de son adversaire ? Donnez toutes les
réponses.
Index

élémentaire, 8

boucle, 1, 3

chaı̂ne, 8
clique, 6
composantes connexes, 8
connexe, 8
cycle, 8

diamètre d’un graphe connexe, 13

extrémités, 1, 3

fonction de Grundy, 39

graphe non orienté, 3


graphe orienté, 1

jeu de Nim, 45
jeu direct, 33
jeu inverse, 33

matrice d’adjacence, 12

polynôme chromatique, 23
progressivement fini, 33

sommets, 1, 3
stable, 19

voisinage à droite, 8
voisinage à gauche, 8

53

Vous aimerez peut-être aussi