Professional Documents
Culture Documents
Guillaume Moreau
Ecole Centrale de Nantes
3
4 TABLE DES MATIÈRES
5 Démonstrations 43
Chapitre 1
1.1 Introduction
Les graphes constituent une des façons les plus naturelles de représenter bon nom-
bre de problèmes de la vie courante comme de celle d’un ingénieur. Ils sont aussi
représentatifs des résultats les plus fondamentaux de l’algorithmique.
Prenons un exemple simple : nous devons nous déplacer de Nantes à Marseille
en utilisant la route. Dans un premier temps, on ne prend en compte que quelques
grandes villes comme le montre la figure 1.1. Les chiffres sont bien sûr assez loin
de la réalité. Comme il n’existe pas sur ce graphe de route directe entre Nantes et
Marseille, la première question qu’on peut se poser est bien sûr celle de l’existence
d’un itinéraire entre Nantes et Marseille. On introduit ici la notion de fermeture
transitive d’un graphe qui sera étudiée en 1.4.2.
500
Paris Strasbourg
350
Nantes
350 800
Bordeaux 800
450
Marseille
5
6 CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES
500
Paris Strasbourg
350
Nantes
350 800
Bordeaux 800
450
Marseille
indépendamment les uns des autres. Par contre, le calcul d’un cij nécessite que les
calculs de tous les aik bkj aient été effectués pour tous les valeurs de k. On appelle
ces graphes des graphes de dépendance.
1.2 Graphes
1.2.1 Définitions
Définition 1.2.1 Un graphe G = (X, U ) est le couple constitué d’un ensemble
dénombrable de sommets X et d’une famille U d’éléments de X 2 appelés arcs.
Dans ce cours, nous n’aborderons que les cas où X est fini. On représente les
sommets par des points et les arcs correspondant à un couple de sommets (x, y)
par une ligne joignant x à y, portant une flèche de x vers y. On dit alors que x est
l’origine de l’arc, tandis que y est son extrémité.
Un exemple de graphe est représenté figure 1.4.
A B
E D C
S’il existe deux arcs reliant les mêmes sommets, on parle de graphes multiples
ou multigraphes comme celui représenté sur la figure 1.5. Dans ce cours, nous
nous intéresserons essentiellement aux graphes simples et souvent sans boucles.
A B
E D C
A
A B
E D E D C
F F
sont reliés ou non. Dans ce cas, on considère des arêtes (x, y) et non plus des arcs
(x, y). Les notions de voisins et de degrés subsistent bien entendu. La figure 1.7
présente un exemple de graphe non-orienté.
A B
E D C
Dans le graphe de la figure 1.8, ((A, E), (E, D)) est un chemin et (E, F ), (F, D)(D, E)
est un circuit. Naturellement, (E, F ), (F, D)(D, E) est aussi un chemin. Dans les
graphes non-orientés, on définit de manière analogue les chaînes et les cycles.
A B
E D C
• réflexive
• symétrique
• transitive
Démonstration
C’est donc une relation d’équivalence dont les classes sont appelées les com-
posantes connexes de G.
• réflexive
• symétrique
12 CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES
• transitive
Démonstration
C’est donc une relation d’équivalence dont les classes sont appelées les com-
posantes fortement connexes de G.
La figure 1.9 propose un exemple de graphe sur lequel sont représentées ses
composantes fortement connexes. Sur ce graphe, il n’y a par contre qu’une seule
composante connexe, composée de tous les sommets.
B
A
C D
Théorème 1.4.1 Si G est un graphe sans circuits, alors le graphe τ -minimal est
unique.
Un ensemble stable S ⊂ X qui vérifie |S| = α(G) sera dit stable maximum.
Il n’y a pas forcément unicité...
15
16 CHAPITRE 2. ENSEMBLES PARTICULIERS DANS LES GRAPHES
Les ensembles stables trouvent leur application dans le problème des huit reines.
Il s’agit de placer huit reines sur un échiquier sans qu’elles puissent être deux à
deux en prise (même rangée, même colonne ou même diagonale). On construit
alors un graphe à 64 sommets correspondant aux 64 cases de l’échiquier et on relie
les cases qui se trouvent sur la même ligne, la même colonne ou la même diag-
onale. Le problème des huit reines se ramène alors à l’existence d’un stable à 8
sommets. Celui-ci n’est d’ailleurs pas unique.
Il n’existe pas d’algorithme polynomial pour résoudre les problèmes de con-
struction d’ensemble stable (le nombre d’étapes ne peut pas être borné par O(np )).
Il existe des graphes sans noyaux, ainsi que des graphes à plusieurs noyaux.
Théorème 2.3.2 Un graphe simple, sans circuits, admet un noyau. Ce noyau est
unique.
Définition 2.3.2 Soit un graphe G = (X, U ) un graphe simple sans boucles. Une
fonction f : X −→ N est une fonction de Grundy si et seulement si pour tout
sommet x, g(x) est le plus petit entier positif ou nul qui n’apparaît pas dans
{g(y), y ∈ Γ+ (x)}.
x1 x2 x3 x4 x5 x6 x7 x8
x1 0 0 1 0 0 0 0 0
x2 1 0 1 1 1 1 1 1
x3 0 0 0 1 1 0 0 0
x4 0 0 0 0 1 0 1 0
x5 0 0 0 0 0 0 1 1
x6 1 0 1 0 0 0 0 0
x7 0 0 0 0 0 0 0 1
x8 0 0 0 0 0 0 0 0
Le problème le plus courant est celui dit des 4 couleurs: peut-on colorier toute
carte de géographie avec 4 couleurs seulement de sorte que deux régions de la
carte qui ont une frontière commune soient de couleur différente ? chaque région
est représentée par un sommet, les arcs rendant compte de l’existence d’une fron-
tière commune. On a alors un graphe planaire (les arêtes ne se coupent pas), et la
réponse est oui.
Définition 3.1.2 On appelle face toute région du plan limitée par des arêtes telle
que deux points arbitraires peuvent être reliés par un trait continu ne rencontrant
ni sommet ni arêtes. On appelle alors frontière de la face l’ensemble des arêtes
incidentes à celle-ci. Deux faces sont adjacentes si et seulement si elles ont une
arête commune.
19
20CHAPITRE 3. FAMILLES DE GRAPHES POSSÉDANT DES PROPRIÉTÉS PARTICULIÈRES
Définition 3.2.2 Un graphe qui admet au moins un cycle hamiltonien est appelé
graphe hamiltonien.
Ce cycle n’est pas forcément élémentaire. L’exemple courant est celui dit des
«7 ponts du Königsberg» représenté figure 3.2. La question est de déterminer si un
piéton peut faire une promenade en traversant une et une seule fois tous les ponts.
Ce problème revient à déterminer si il existe un cycle eulérien dans le graphe dont
les sommets sont les îlots et les arcs les ponts.
A B
E D C
23
24 CHAPITRE 4. ALGORITHMIQUE DES GRAPHES
T1 = B D E C B D F D F D (4.4)
T2 = 1 4 5 7 8 10 (4.5)
La complexité spatiale de cette représentation est alors de O(n + m).
B C D
E F G H I
B C D
E F G H I
2 6
2
3 2 3 3
1 4 7
2
-2
2 -1
5 4
3 5
2
Nous allons calculer le plus court chemin entre 1 et 7. Le tableau 4.1 représente
les différentes itérations de l’algorithme de Ford-Bellman.
4.3. ALGORITHMES DE PLUS COURT CHEMIN 27
ǫ 1 2 2 3 2,5 5
1 2 3 4 5 6 7
0
0 3
0 3 1
0 3 1 5
0 3 1 5 3
0 3 1 5 3 5
0 3 1 5 3 5 7
Une fois l’algorithme arrivé à son terme, on retrouve le chemin optimal dans
A en partant de la fin. Le sommet 7 a pour meilleur prédécesseur 5, qui a lui-
même comme prédécesseur 3... Le chemin optimal est donc le chemin 1-2-3-5-7
de longueur 7.
2
6
4
3
3
1
1 3
6
1
6
2
3 6
5
5
A ǫ x1 x1 x1
x1 x2 x3 x4 x5 x6
init. 0 3 6 +∞ 3 +∞
A ǫ x1 x1 x2 x1
x1 x2 x3 x4 x5 x6
init. 0 3 6 +∞ 3 +∞
0 3 6 9 3 +∞
π 1 (s) = 0
4.3. ALGORITHMES DE PLUS COURT CHEMIN 29
A ǫ x1 x5 x3 x1 x5 ,x4
x1 x2 x3 x4 x5 x6
init. 0 3 6 +∞ 3 +∞
0 3 6 9 3 +∞
0 3 5 9 3 8
0 3 5 6 3 8
0 3 5 6 3 7
2
6
4
3
-3
1
1 3
6
1
6
-2
3 6
5
5
x1 x2 x3 x4 x5 x6
π1 0 3 6 +∞ 3 +∞
π2 0 3 0 7 3 8
π3 0 3 0 1 3 8
π4 0 3 0 1 3 2
π5 0 3 0 1 3 2
• s’il en contient m + 1, sa valeur est π m (xk ) + c(xk , x) qui est bien égale à
miny6=x [π m (y) + c(y, x)].
Donc on a bien
m+1 m m
π (x) = min π (x), min [π (y) + c(y, x)] (4.6)
y6=x
Pour m de 1 à n Faire
Pour i de 1 à n Faire
Pour j de 1 à n Faire
(m) (m−1) (m−1) (m−1)
Πij = min{Πij , Πim + Πmj }
FinPour
FinPour
FinPour
(m)
Πij représente la longueur du chemin optimal de i à j dont les sommets
intermédiaires appartiennent à {1, ..., m}.
Nous disposons ainsi d’un algorithme en O(n3 ) qui donne la longueur des
chemins optimaux entre deux sommets quelconques du graphe.
L’application de l’algorithme sur le graphe de la figure 4.6 se traduit dans les
matrices suivantes.
4.4. PROBLÈME DU FLOT MAXIMAL 31
2
1 4
1 4
1
1
2
5
3 3
0 1 2 +∞ +∞
+∞ 0 1 4 +∞
A = +∞ +∞
0 1 3
(4.8)
+∞ +∞ +∞ 0 1
+∞ +∞ +∞ +∞ 0
0 1 2 3 5
+∞ 0 1 2 4
2
A = +∞ +∞
0 1 2
(4.9)
+∞ +∞ +∞ 0 1
+∞ +∞ +∞ +∞ 0
0 1 2 3 5
+∞ 0 1 2 3
3
A = +∞ +∞ 0 1 2
(4.10)
+∞ +∞ +∞ 0 1
+∞ +∞ +∞ +∞ 0
Pour être valide (on dira admissible), le flot dans un graphe doit vérifier une loi
de conservation simple définie par analogie avec la loi de Kirchhoff en électricité
: tout flot entrant dans un nœud doit en ressortir. Elle est valable en tout nœud
d’un graphe sauf dans deux nœuds particuliers s et t qu’on appellera respective-
ment source et puits du graphe. Au niveau de la source, il y a création de flot,
tandis qu’au niveau du puits il y a absorption. Sur les autres nœuds i, la loi de
conservation s’écrit ainsi :
X X
xij = xik (4.11)
j∈Γ− (i) k∈Γ+ (i)
1 3
1 [2]
2[
3] 3]
1[
0
[1
0 [1]
1 [1]
s ] t
2[ 2]
2] 1[
2 4
2 [2]
1 3
1 [2]
2[
3] 3]
1[
0
[1
0 [1]
1 [1]
s ] t
2[ 2]
2] 1[
2 4
2 [2]
Figure 4.9: Représentation d’un flot dans un graphe avec un arc de retour fictif
La chaîne µ définie sur la figure 4.10 est une chaîne augmentante de l’exemple
de graphe précédent. On appelle µ+ l’ensemble des arcs de µ dans le sens de s
vers t, µ− ceux qui sont dans l’autre sens.
1 3
1 [2]
3]
1[
1 [1]
s t
2]
1[
4
Le flot peut alors être augmenté du flot circulant sur la chaîne augmentante ;
on notera qu’en tenant compte du sens des arcs, la loi de conversation se vérifie sur
l’ensemble des arcs de la chaîne. L’augmentation α du flot correspondante est alors
du minimum des capacités résiduelles (la capacité de l’arc moins le flot circulant
déjà) pour les arcs de s vers t et le minimum des flots circulant effectivement pour
les arcs de t vers s.
α = min min (cij − xij ), min xij (4.12)
(i,j)∈µ+ (i,j)∈µ−
Définition 4.4.3 On dit que le flot est complet lorsque tout chemin de s à t com-
porte au moins un arc saturé ((i, j) est saturé lorsque xij = cij ).
Définition 4.4.4 Une coupe associée à un graphe G = (X, U ) est une partition
de X en deux ensembles
P S et T telle que s ∈ S et t ∈ T . On appelle capacité de
la coupe c(S, T ) = i∈S,j∈T cij .
Théorème 4.4.1 Un flot x de s à t est maximal s’il n’existe pas de chaîne augmen-
tante de s à t.
On en déduit en corollaire :
Propriété 4.4.2.1 Soit un graphe G = (X, u). Quelle que soit la coupe (S, T ),
quel que soit le flot admissible x, alors la valeur du flot x est inférieure ou égale à
la capacité de la coupe (S, T ).
A D
5 [20]
20
[3
5] 10 5] [2
[1
0]
5 [1
0]
15 1
s B E t
35 [35] 20 [25] 30 [30]
30 0 [5
] 0]
[ 40 [6
0]
]
1 0 [2 30
C F
20 [20]
80
+s +A
A D
5 [20]
20
10
5] ] [2
[3
[1
[ 15 0]
0]
+ 15 -D 15 +C
s B E t
35 [35] 20 [25] 30 [30]
30 0 [5
] 0]
[ 40 +s 0] [6
] 0 [2 +B
1 30
C F
20 [20]
A D
5 [20]
5] ]
[3 [ 15
15 15
s B t
0 [5
] 0]
[6
30
F
A D
10 [20]
20
10
5] ] [2
[3
[1
[ 15 0]
0]
20 10
s B E t
35 [35] 20 [25] 30 [30]
30 5 [5
] 0]
[ 40 [6
0]
]
1 0 [2 35
C F
20 [20]
85
+s +A
A D
10 [20]
20
[3
5] 10 ] [2
[1
[ 15 0]
0]
+ 20 -D 10 +B
s B E t
35 [35] 20 [25] 30 [30]
30 5 [5
] 0]
[ 40 [6
0]
] +s
1 0 [2 35
C F
20 [20]
85
1 1 1
0
1
0]
0]
0]
[1
[1
[1
00
00
00
00
00
00
00
00
00
00
00
00
0 [100000]
1 [100000]
0 [100000]
[1
[1
[1
0]
0]
0]
0
s t s t s t
0]
0]
0]
0
1
00
00
00
[1
[1
[1
00
00
00
00
00
00
00
00
00
[1
[1
[1
0]
0]
0]
0
2 2 2
Théorème 4.4.3 Si chaque augmentation de flot est faite suivant une chaîne aug-
mentante de longueur minimale, alors le flot maximal est obtenu après moins de
38 CHAPITRE 4. ALGORITHMIQUE DES GRAPHES
mn
2 itérations, soit une complexité totale en O(m2 n).
4.5.3 Exemple
On considère le graphe de la figure 4.17.
[3] (2)
a d [3]
(4)
(2)
[5] [3] (2) [4] (1)
s b e t
[4] (3)
(5)
[1]
[3] [2]
(1 ) ( 3) ( 3)
c f [4]
[5] (2)
Compte tenu de la définition vue plus haut, le premier graphe d’écart (construit
à flot nul) est le graphe lui-même. On commence donc par cherche le plus court
chemin entre s et t. On considère donc le chemin (s, b, e, t) dont la capacité mini-
male est 3. On augmente alors le flot de 3 et on construit le second graphe d’écart
de la figure 4.18 où les nouveaux arcs et les modifications sont portées en rouge.
[3] (2)
a d
[3 ]
] (2) (4
[5 )
[3] [2]
(1 ) ( 3) ( 3)
c f [4]
[5] (2)
Le plus court chemin dans ce second graphe d’écart est le chemin (s, c, f, t), sa
capacité minimale est de 3. On peut augmenter le flot de 3 et construire le troisième
graphe d’écart de la figure 4.19 où les nouvelles modifications sont portées en bleu.
Le plus court chemin est cette fois le chemin (s, a, d, t) et on peut encore augmenter
le flot de 3, ce qui nous mène au quatrième graphe d’écart où les modifications sont
portées en vert. Le plus court chemin est alors (s, b, f, t), on peut augmenter le flot
de 1, ce qui donne le cinquième graphe d’écart de la figure 4.21 où les modifications
sont portées en mauve.
[3] (2)
a d
[3 ]
(2) (4
[5] )
[3] (-2)
[3 ] [2]
(-1 ( 3) ( 3)
)
c f [1]
[2] (2) [3] (-3)
[3] (-2)
[3 ] [1] )
(-1 ( 3) (-3
)
c f [4]
[2] (2)
[3] (-2)
Démonstrations
43
44 CHAPITRE 5. DÉMONSTRATIONS