You are on page 1of 44

Théorie et algorithmique des graphes

Guillaume Moreau
Ecole Centrale de Nantes

EI1 - eLOGRA, mai 2006


2
Table des matières

1 Eléments de théorie des graphes 5


1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.2 Voisins - Degrés . . . . . . . . . . . . . . . . . . . . . . 8
1.2.3 Sous-graphes, graphes partiels . . . . . . . . . . . . . . . 9
1.2.4 Graphes non-orientés . . . . . . . . . . . . . . . . . . . . 9
1.3 Chemins, chaînes, cycles . . . . . . . . . . . . . . . . . . . . . . 10
1.4 Composantes fortement connexes - fermeture transitive . . . . . . 13
1.4.1 Composantes fortement connexes . . . . . . . . . . . . . 13
1.4.2 Fermeture transitive . . . . . . . . . . . . . . . . . . . . 13
1.4.3 Graphes fortement connexes . . . . . . . . . . . . . . . . 14

2 Ensembles particuliers dans les graphes 15


2.1 Nombre de stabilité . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Nombre d’absorption . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Noyau - fonctions de Grundy . . . . . . . . . . . . . . . . . . . . 16
2.3.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.2 Exemple de calcul de fonction de Grundy . . . . . . . . . 17
2.4 Nombre chromatique . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Familles de graphes possédant des propriétés particulières 19


3.1 Graphes planaires . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 Graphes hamiltoniens et eulériens . . . . . . . . . . . . . . . . . 20
3.2.1 Graphes hamiltoniens . . . . . . . . . . . . . . . . . . . . 20
3.2.2 Graphes eulériens . . . . . . . . . . . . . . . . . . . . . . 21

4 Algorithmique des graphes 23


4.1 Représentation en mémoire . . . . . . . . . . . . . . . . . . . . . 23
4.1.1 Matrice d’adjacence . . . . . . . . . . . . . . . . . . . . 23
4.1.2 Tableaux d’arcs . . . . . . . . . . . . . . . . . . . . . . . 24
4.1.3 Tableaux de successeurs . . . . . . . . . . . . . . . . . . 24
4.1.4 Listes chaînées . . . . . . . . . . . . . . . . . . . . . . . 24

3
4 TABLE DES MATIÈRES

4.2 Parcours de graphes . . . . . . . . . . . . . . . . . . . . . . . . . 25


4.2.1 Parcours des arbres . . . . . . . . . . . . . . . . . . . . . 25
4.3 Algorithmes de plus court chemin . . . . . . . . . . . . . . . . . 26
4.3.1 Algorithme de Ford-Bellman . . . . . . . . . . . . . . . . 26
4.3.2 Algorithme de Moore ou de Dijkstra . . . . . . . . . . . . 27
4.3.3 Algorithmes de Bellmann . . . . . . . . . . . . . . . . . 28
4.4 Problème du flot maximal . . . . . . . . . . . . . . . . . . . . . . 31
4.4.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4.2 Résolution du problème de flot maximal . . . . . . . . . . 32
4.4.3 Algorithme de Ford-Fulkerson et exemple . . . . . . . . . 34
4.5 Flot maximal à coût minimal . . . . . . . . . . . . . . . . . . . . 38
4.5.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.5.2 Algorithme de Roy . . . . . . . . . . . . . . . . . . . . . 38
4.5.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5 Démonstrations 43
Chapitre 1

Eléments de théorie des graphes

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

Figure 1.1: Calculer un itinéraire de Nantes à Marseille

5
6 CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES

Intuitivement, on trouve assez facilement que sur ce graphe, le chemin le plus


court entre Nantes et Marseille ne passe naturellement pas par Strasbourg. Ici, le
chemin le plus court passe par Bordeaux et fait 800 kilomètres, comme le met en
évidence la figure 1.2. Le problème est résoluble manuellement et intuitivement
sur un petit nombre de villes et de routes. Pour construire les navigateurs GPS
embarqués dans les voitures, ou pour calculer les itinéraires comme sur le site
http://www.viamichelin.com en prenant en compte les quelques dizaines
de milliers de communes de France, cette approche n’est évidemment plus tenable.
On entre dans les algorithmes dits de plus courts chemins que l’on étudiera au
chapitre 4 de ce document.

500
Paris Strasbourg
350
Nantes

350 800

Bordeaux 800

450

Marseille

Figure 1.2: Le chemin le plus court de Nantes à Marseille

On peut rendre ce problème un peu plus complexe en tenant compte de la nature


des routes qui relient les différentes de villes. Il va de soi qu’on roulera en général
plus vite sur une autoroute que sur une petite route de campagne. Encore que ceci
peut s’avérer faux au moment des départs en vacances... On introduira donc aussi
les problèmes de flots dans les graphes.
Il existe encore un autre type de problème que nous n’avons pas abordé. Il
ne fait pas partie des problèmes de graphes a priori mais peut s’exprimer aussi
sous forme de graphe. C’est un des problèmes fondamentaux de l’algorithmique
théorique, il est usuellement utilisé en théorie de la complexité pour introduire
la classe des problèmes NP-complets. On l’appelle le problème du voyageur de
commerce : il s’agit, toujours dans le même graphe, de déterminer l’itinéraire idéal
d’un voyageur de commerce qui doit passer une et une seule fois par chaque ville,
tout en minimisant le nombre de kilomètres parcourus. On montre qu’il n’existe
1.1. INTRODUCTION 7

pas d’algorithme en temps polynomial1 pour résoudre le problème.


D’autres types de problèmes utilisent les graphes, en informatique comme
dans d’autres disciplines des sciences de l’ingénieur. Par exemple, si on con-
sidère une carte de France comme celle de la figure 1.3 coloriée de façon à ce
que deux départements adjacents aient une couleur différente, quel est le nombre
de couleurs minimal à utiliser ? On montrera dans la section 3.1 consacrée aux
graphes planaires qu’il faut au minimum 4 couleurs.

Figure 1.3: Colorier une carte de France

Le dernier exemple de cette introduction concerne la gestion de projet. Dans


un projet, un certain nombre de tâches peuvent s’effectuer en même temps que
d’autres tandis qu’au contraire, il est indispensable que certaines tâches aient été
complétées avant que d’autres ne commencent. Cette fois encore, ces dépendances
entre tâches peuvent exprimées sous forme de graphes. Cette approche est valable
pour une recette de cuisine comme pour un planning de PEI mais aussi pour la pro-
grammation parallèle : en effet, pour calculer une moyenne générale, on a besoin
que toutes les moyennes aient été calculées, mais a contrario, pour calculer un pro-
duit matriciel certaines parties peuvent se dérouler en parallèle : dans l’expression
n
X
(cij )1≤i,j≤n = aik bkj (1.1)
k=1
le calcul de cij est indépendant de celui de ci′ j ′ ; ils peuvent donc être calculés
1
c’est-à-dire que le temps d’exécution du programme ne peut pas être une fonction polynomiale
du nombre de sommets du graphe
8 CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES

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

Figure 1.4: Exemple de graphe

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.

1.2.2 Voisins - Degrés


Soient un graphe G = (X, u) et un couple (x, y) ∈ U . y est alors appelé un
successeur de x, et x un prédécesseur de y. On note :

• Γ+ (x) l’ensemble des successeurs de x

• Γ− (y) l’ensemble des prédécesseurs de y

Γ(x) = Γ+ (x) ∪ Γ− (x) représente les voisins de x, ou encore les sommets


adjacents à x. Dans le graphe de la figure précédente, Γ+ (A) = {E, D, B} et
Γ+ (A) = 0.
1.2. GRAPHES 9

A B

E D C

Figure 1.5: Exemple de multigraphe

Remarque : (X, Γ+ ) suffit à définir complètement le graphe... Γ+ = ∪x∈X Γ+ (x)


Le demi-degré extérieur d’un sommet x, noté d+ (x), est le nombre d’arcs issus
de x, c’est-à-dire que d+ (x) = |Γ+ (x)|. De la même façon, on définit le demi-
degré intérieur, noté d− (x), comme étant le nombre d’arcs incidents à x, c’est-
à-dire que d− (x) = |Γ− (x)|. Le degré d’un sommet est alors la somme de ses
demi-degrés intérieur et extérieur.
On dit qu’un graphe est complet si et seulement si ∀x, y ∈ X alors (x, y) ∈ U ,
c’est-à-dire si et seulement si tous les sommets sont reliés deux à deux (dans les
deux sens). Dans le cas d’un graphe complet à n sommets, tous les demi-degrés
intérieurs et extérieurs sont égaux à n − 1.

1.2.3 Sous-graphes, graphes partiels


Définition 1.2.2 On appelle sous-graphe de G = (X, U ) le graphe G′ = (X ′ , UX ′ )
engendré par un ensemble de sommets X ′ ⊂ X où UX ′ représente les arcs de U
ayant leur origine et leur extrémité dans X ′ .

Définition 1.2.3 De la même manière on appelle graphe partiel de G = (X, U )


engendré par U ′ , le graphe G′ = (X, U ′ ) où U ′ ⊂ U , c’est-à-dire qu’on conserve
tous les sommets mais qu’on supprime certains arcs.

Les deux graphes de la figure 1.6 représentent respectivement le graphe partiel


de l’exemple de la figure 1.4 engendré par les sommets {A, D, E, F } et le sous-
graphe de ce même exemple dans lequel on a supprimé les arcs (E, D) et (D, E)
et (E, F ).

1.2.4 Graphes non-orientés


Pour étudier certaines propriétés d’un graphe, on n’a pas toujours besoin de faire
référence à l’orientation, par exemple si on veut seulement savoir si deux sommets
10 CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES

A
A B

E D E D C

F F

Figure 1.6: Exemple de sous-graphe et de graphe partiel

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é.

Théorème 1.2.1 Soit G = (X, E) un graphe non-orienté. Le nombre de sommets


de degré impair est pair.
Démonstration

A B

E D C

Figure 1.7: Exemple de graphe non orienté

Définition 1.2.4 G1 = (X1 , U1 ) et G2 = (X2 , U2 ) sont dits isomorphes si et


seulement si il existe une bijection f : X1 −→ X2 telle que (x, y) ∈ U1 ⇐⇒
(f (x), f (y)) ∈ U2 .

Le problème de décider si deux graphes sont isomorphes est un problème al-


gorithmiquement difficile.

1.3 Chemins, chaînes, cycles


Définition 1.3.1 On appelle chemin d’un graphe G = (X, U ) toute suite d’arcs
µ = (u1 , ..., up ) vérifiant ∀i < p, l’extrémité de ui est l’origine de ui+1 . Si, en
plus, l’extrémité de up est égale à l’origine de u1 , µ est un circuit.
1.3. CHEMINS, CHAÎNES, CYCLES 11

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

Figure 1.8: Exemple de chemin et de circuit

Le nombre d’arcs constitue la longueur de la chaîne ou du chemin. Si le chemin


passe une seule fois par chaque arc, il est dit simple, s’il passe une seule fois par
chaque sommet, il est dit élémentaire.

Définition 1.3.2 G = (X, U ) est connexe si et seulement si ∀x, y ∈ X il existe


une chaîne de x à y.

Propriété 1.3.0.1 La relation R définie par xRy si et seulement si il existe une


chaîne de x à y est :

• 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.

Définition 1.3.3 G = (X, U ) est dit fortement connexe si et seulement si ∀x, y ∈


X il existe un chemin de x à y et un chemin de y à x.

Propriété 1.3.0.2 La relation R′ définie par xR′ y si et seulement si il existe un


chemin de x à y et un chemin de y à x est :

• 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.

Propriété 1.3.0.3 Un graphe fortement connexe est connexe, mais la réciproque


est fausse (voir figure 1.9).

B
A

C D

Figure 1.9: Exemple de graphe connexe mais pas fortement connexe

Définition 1.3.4 G = (X, U ) est un graphe k-connexe si et seulement si ∀A ⊂ X


avec |A| < k, le sous-graphe engendré par X \ A est connexe. La connectivité de
G est alors le plus grand k tel que G soit k-connexe, noté K(G).

On peut voir la k-connectivité comme le nombre minimum de sommets qu’il


faut enlever pour disconnecter le graphe. On remarque que K(G) ≤ minx∈X |Γ(x)| =
δ. En effet, si on enlève les δ voisins du x qui réalise δ, x n’est plus connecté au
reste du graphe.

Théorème 1.3.1 (Menger) G est k-connexe si et seulement si ∀(x, y) ∈ X 2 il


existe k chaînes élémentaires disjointes 2 à 2 intérieurement (sommets) qui relient
x et y.

Corollaire 1.3.0.1 Si G k-connexe, x ∈ X, A ⊂ X avec |A| ≥ k, alors il existe k


chaînes élémentaires disjointes 2 à 2 de x à A.
1.4. COMPOSANTES FORTEMENT CONNEXES - FERMETURE TRANSITIVE13

1.4 Composantes fortement connexes - fermeture transi-


tive
1.4.1 Composantes fortement connexes
Soit G = (X, U ) un graphe. L’algorithme suivant calcule la composante fortement
connexe associée au sommet x0 ∈ X.

marquer le sommet x0 avec ⊕ et ⊖


Répéter
marquer avec ⊕ tout successeur non marqué ⊕ d’un sommet ⊕
marquer avec ⊖ tout prédécesseur non marqué ⊖ d’un sommet ⊖
jusqu’à ce qu’il n’y ait plus de marquage possible

Les sommets marqués ⊕ et ⊖ forment la composante fortement connexe de


x0 . On peut trouver toutes les composantes fortement connexes en réappliquant
l’algorithme à tous les sommets n’appartenant pas encore à une composante forte-
ment connexe.

1.4.2 Fermeture transitive


Définition 1.4.1 La fermeture transitive du graphe G = (X, U ) est le graphe
τ (G) = (X, τ (U )) où (x, y) ∈ τ (U ) si et seulement si il existe un chemin de
x vers y dans G.

Si G est fortement connexe, sa fermeture transitive est le graphe complet.

Figure 1.10: Exemple de graphe avec sa fermeture transitive

Définition 1.4.2 Deux graphes G1 et G2 sont dits τ -équivalents si et seulement si


ils ont même fermeture transitive.

On vérifie facilement que la relation de τ -équivalence est une relation d’équivalence.


14 CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES

Définition 1.4.3 On dit que G = (X, U ) est τ -minimal si et seulement si ∀u ∈ U ,


τ (G) 6= τ (G \ {u}).

Pour un graphe donné, il n’existe pas a priori de graphe τ -minimal unique.

Théorème 1.4.1 Si G est un graphe sans circuits, alors le graphe τ -minimal est
unique.

1.4.3 Graphes fortement connexes


Lorsque qu’un graphe G est fortement connexe, la matrice d’adjacence de sa fer-
meture transitive ne comporte que des 1, en dehors de la diagonale.

Théorème 1.4.2 G = (X, U ) fortement connexe ⇐⇒ ∀A ⊂ X, A 6= 0 et A 6= X,


Γ+ (A) 6= A.
Démonstration
Chapitre 2

Ensembles particuliers dans les


graphes

2.1 Nombre de stabilité


Définition 2.1.1 Soit G = (X, U ) un graphe non orienté. Un sous-ensemble S ⊂
X est dit stable si et seulement si 2 sommets
T distincts de S ne sont jamais reliés
(adjacents), c’est-à-dire si ∀x ∈ S, Γ(x) S = 0.

Figure 2.1: Exemple de stables dans un graphe

Soit S la famille des ensembles stables de G. On a évidemment 0 ∈ S et pour


tout S ∈ S avec A ⊂ S, alors A ∈ S.

Définition 2.1.2 S0 est un stable maximal si et seulement si ∀S1 ∈ S et S1 6= S0


alors S0 6 ⊂S1 .

Définition 2.1.3 On appelle nombre de stabilité de G = (X, U ), l’entier défini


par α(G) = maxS∈S |S|.

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 )).

2.2 Nombre d’absorption


Définition 2.2.1 Soit un graphe GT= (X, U ). Un ensemble A ⊂ X est absorbant
/ A, Γ+ (x) A 6= 0.
si et seulement si ∀x ∈

On appelle A la famille des ensembles absorbants de A. Si A ∈ A et A ⊂ A′ ,


alors A′ ∈ A.
Symétriquement à la notion de stable maximal et maximum, on peut définir un
absorbant minimal et un absorbant minimum (non unique). Le nombre d’absorption,
noté β(G) est bien sûr le cardinal du plus petit absorbant.

2.3 Noyau - fonctions de Grundy


2.3.1 Définitions
Définition 2.3.1 Soit un graphe G = (X, U ). Un ensemble A ⊂ X est un noyau
si il est à la fois stable et absorbant.

Il existe des graphes sans noyaux, ainsi que des graphes à plusieurs noyaux.

Théorème 2.3.1 Un noyau est un stable maximal et un absorbant minimal.

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)}.

Là encore, il n’y a pas forcément existence ou unicité. Si G admet une fonction


de Grundy, il admet un noyau dont les sommets sont les 0 de la fonction de Grundy.
2.4. NOMBRE CHROMATIQUE 17

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

2.3.2 Exemple de calcul de fonction de Grundy


On cherche à calculer la fonction de Grundy du graphe défini par la matrice d’adjacence
suivante :
On commence par choisir g(x8 ), x8 est le seul sommet qui n’ait pas de suc-
cesseur. il n’y a donc pas de contraintes sur g(x8 ). On lui donne alors la valeur
0. De la même façon, x7 a un seul successeur, x8 . Pour construire la fonction
de Grundy, on construit le tableau suivant qui contient les successeurs de chacun
des sommets et la valeur de la fonction de Grundy pour ceux-ci et la valeur de la
fonction de Grundy de chacun des sommets. Dès que la valeur de la fonction de
Grundy est définie pour tous les successeurs d’un sommet, on peut définir celle du
sommet considéré.

Γ(xi ) g(Γ(xi )) g(xi )


x1 x3 1 0
x2 x1 , x3 , x4 , x5 , x6 , x7 , x8 0, 1, 2 3
x3 x4 , x5 0, 2 1
x4 x5 , x7 2, 1 0
x5 x7 , x8 0, 1 2
x6 x4 , x3 1, 0 2
x7 x8 0 1
x8 0

Table 2.1: Calcul de la fonction de Grundy

2.4 Nombre chromatique


Définition 2.4.1 Une k-coloration des sommets est une partition en k stables (S1 , ..., Sk )
de l’ensemble X des sommets (à un stable correspond une couleur).

Définition 2.4.2 Le nombre chromatique de G = (X, U ) est le plus petit nombre


18 CHAPITRE 2. ENSEMBLES PARTICULIERS DANS LES GRAPHES

de couleurs nécessaire pour colorier G de sorte que 2 sommets adjacents soient de


couleur différente. On le note χ(G).

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.

Théorème 2.4.1 G planaire =⇒ χ(G) ≤ 4


Chapitre 3

Familles de graphes possédant


des propriétés particulières

3.1 Graphes planaires


Définition 3.1.1 Un graphe est planaire s’il est possible de le représenter sur un
plan sans que deux de ses arcs ne se rencontrent en dehors de leurs extrémités.

Figure 3.1: Exemple de graphes planaires

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.

Il y a toujours une face illimitée...

Théorème 3.1.1 (formule d’Euler) G planaire connexe possédant n sommets, m


arcs et f faces. Alors f = m − n + 2.

On rappelle qu’un graphe planaire est 4-colorable.

19
20CHAPITRE 3. FAMILLES DE GRAPHES POSSÉDANT DES PROPRIÉTÉS PARTICULIÈRES

3.2 Graphes hamiltoniens et eulériens


3.2.1 Graphes hamiltoniens
Définition 3.2.1 Soit G = (X, U ) un graphe simple, connexe, sans boucles à n
sommets. On appelle cycle hamiltonien de G un cycle élémentaire à n sommets
(passant une et une seule fois par chaque sommet).

Définition 3.2.2 Un graphe qui admet au moins un cycle hamiltonien est appelé
graphe hamiltonien.

Le graphe complet est hamiltonien.

Théorème 3.2.1 Si G est hamiltonien, G est 2-connexe.

La réciproque est fausse. Il est algorithmiquement difficile de déterminer un


cycle hamiltonien dans un graphe. On dispose par contre d’un certain nombre de
conditions suffisantes.

Théorème 3.2.2 (Dirac) Soit G = (X, U ) un graphe à n sommets. Si ∀x ∈ X


d(x) ≥ n2 , alors G admet un cycle hamiltonien.

C’est un cas particulier du théorème suivant.

Théorème 3.2.3 (Ore) Soit G = (X, U ) un graphe à n sommets. Si ∀x, y ∈ X


tels que (x, y) ∈
/ U , d(x) + d(y) ≥ n, alors G est hamiltonien.

Ce sont deux corollaires d’un théorème plus général, le théorème de Bondy-


Chùatal.

Définition 3.2.3 Soit G un graphe à n sommets, k ≤ n un entier, on appelle k-


fermeture de G le plus petit graphe H à n sommets contenant G tel que si x et y
ne sont pas adjacents dans H, dH (x) + dH (y) < k.

On obtient cette k-fermeture en reliant récursivement les paires de sommets


dont la somme des degrés est supérieure ou égale à k.

Théorème 3.2.4 (Bondy-Chùatal) Soit G = (X, U ) un graphe à n sommets, G la


n-fermeture de G. G est hamiltonien si et seulement si G est hamiltonien.

On peut définir la notion de chaîne hamiltonienne dans un graphe non-orienté.


3.2. GRAPHES HAMILTONIENS ET EULÉRIENS 21

3.2.2 Graphes eulériens


Définition 3.2.4 On appelle cycle (resp. chaîne) eulérien un cycle (resp. chaîne)
qui passe par toutes les arêtes une et une seule fois.

Définition 3.2.5 On appelle graphe eulérien, un graphe qui admet au moins un


cycle eulérien.

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.

Figure 3.2: Le problème des 7 ponts du Königsberg

Théorème 3.2.5 Un multigraphe connexe G admet un cycle eulérien si et seule-


ment si ses sommets sont de degré pair.

On peut donc répondre par la négative au problème des 7 ponts du Königsberg.


22CHAPITRE 3. FAMILLES DE GRAPHES POSSÉDANT DES PROPRIÉTÉS PARTICULIÈRES
Chapitre 4

Algorithmique des graphes

L’objectif de ce chapitre est d’introduire l’algorithmique des graphes, c’est-à-dire


les principaux algorithmes que l’on utilise avec es graphes en pratique : le plus
court chemin, les flots dans les graphes... On commencera par aborder les prob-
lèmes de représentation des graphes en mémoire.

4.1 Représentation en mémoire

4.1.1 Matrice d’adjacence

Soit un graphe G = (X, U ), composé de n sommets x1 , ..., xn . Ces sommets


vont nous servir à composer une matrice booléenne carrée A = (aij )1≤i,j≤n définie
par

1 si (xi , xj ) ∈ U
∀1 ≤ i, j ≤ n, aij = (4.1)
0 sinon

A B

E D C

Figure 4.1: Exemple de graphe

23
24 CHAPITRE 4. ALGORITHMIQUE DES GRAPHES

Dans le graphe de la figure 4.1, la matrice d’adjacence s’écrit donc ainsi :


 
0 1 0 1 1 0
 0 0 1 0 0 0 
 
 0 1 0 1 0 0 
A=   (4.2)
 0 0 0 0 1 0 

 0 0 0 1 0 1 
0 0 0 1 0 0
Si le graphe considéré est non-orienté (ou symétrique), on se contentera d’une
matrice triangulaire supérieure. On remarque par ailleurs que la complexité spa-
tiale de cette représentation est en O(n2 ).

4.1.2 Tableaux d’arcs


Une alternative à cette représentation lorsque le nombre de sommets est impor-
tant par rapport au nombre d’arcs consiste à créer deux vecteurs contenant chacun
l’origine et l’extrémité des arcs. Ainsi la matrice précédente se réécrirait ainsi :
 
A A A B C C D E E F
TA = (4.3)
B D E C B D F D F D
La complexité spatiale est cette fois en O(m) où m est le nombre d’arcs. A
moins de choisir une convention d’ordre, cette représentation n’est pas unique...

4.1.3 Tableaux de successeurs


Il s’agit cette fois de construire deux tableaux :
• Le premier tableau contient successivement les successeurs du premier som-
met, du second sommet...

• Le second tableau contient la place dans la liste ci-dessus du premier suc-


cesseur de chaque sommet.

 
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).

4.1.4 Listes chaînées


Les représentations précédentes sont faciles à mettre en œuvre mais sont mal adap-
tées aux transformations élémentaires des graphes comme ajouter ou supprimer des
sommets et des arcs. On utilise souvent des listes chaînées de pointeurs associées
à chaque sommet.
4.2. PARCOURS DE GRAPHES 25

4.2 Parcours de graphes


La plupart des algortithmes de graphes utilisent des notions de parcours de graphes
c’est-à-dire qu’ils vont effectuer un traitement sur l’ensemble des sommets ou des
arcs d’un graphe. Evidemment dans un certain nombre de cas, l’ordre de parcours
des sommets ou des arcs n’est pas innocent sur le résultat. Les algorithmes de
parcours dépendront aussi naturellement de la structure de données adoptée. Dans
les paragraphes qui suivent, nous nous intéresserons d’abord au parcours des arbres
que nous généraliserons ensuite aux algorithmes de parcours d’abres.

4.2.1 Parcours des arbres


Il existe deux idées principales pour le parcours des sommets d’un arbre : le par-
cours en largeur d’abord (breadth-first)et le parcours en profondeur d’abord (depth-
first).
Dans le cas du parcours en largeur d’abord, le principe est de visiter les som-
mets dans l’ordre de gauche à droite puis de haut en bas comme le montre la fig-
ure 4.2 ; les sommets sont visités dans l’ordre suivant : A, B, C, D, E, F, G, H,
I.

B C D

E F G H I

Figure 4.2: Parcours en largeur d’abord

Inversement, dans le parcours en profondeur d’abord, on visite la racine, puis


son premier fils, puis le fils de ce fils etc. La visite est terminée lorsqu’on a visité
tous les successeurs d’un sommet. La figure 4.3 illustre ce mécanisme.

B C D

E F G H I

Figure 4.3: Parcours en largeur d’abord


26 CHAPITRE 4. ALGORITHMIQUE DES GRAPHES

4.3 Algorithmes de plus court chemin


Les algorithmes de plus court chemin ont un objectif assez explicite : étant don-
née une fonction de coût (une distance pour commencer) associé à chaque arc,
déterminer le plus court chemin entre deux sommets. Etant donné un graphe
G = (X, U ), on associe à chaque arc (x, y) ∈ U une fonction de coût c(x, y)
à valeurs réelles. Le problème de plus court chemin entre deux sommets a et b de
X consiste donc à déterminer le chemin C = (x1 , ..., xk ) avec x1 = a et xk = b
qui minimise la somme des c(xi , xi+1 ) pour 0 ≤ i < k.
Il existe trois algorithmes à vocation assez générale, même si ce domaine fait
toujours l’objet de recherches actives dans la communauté informatique. En ef-
fet, la complexité des algorithmes les rend peu utilisables si l’on s’intéresse à des
calculs de plus courts chemins prenant en compte l’ensemble des routes françaises
pour déterminer le meilleur chemin entre Landivisiau et Aubagne !

4.3.1 Algorithme de Ford-Bellman


L’algorithme, qui calcule l’ensemble des plus courts chemins d’un sommet s au
reste du graphe, comprend une étape d’initialisation et une boucle. La première
étape d’initialisation établit un ensemble S = {s} des sommets déjà traités, une
fonction de distance π et un ensemble A du meilleur prédécesseur pour venir de
l’origine.

S = {s}, π(s) = 0, A(s) = ǫ


TantQue ∃x ∈/ S avec Γ−1 (x) ⊂ S Faire
π(x) = miny∈Γ−1 (x) [π(x) + c(x, y)]
Soit ỹ un sommet tel que π(x) = π(ỹ) + c(ỹ, x)
A(x) = ỹ et S = S ∪ {x}
finTantQue

2 6
2

3 2 3 3

1 4 7
2
-2

2 -1
5 4
3 5
2

Figure 4.4: Exemple de graphe

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

Table 4.1: Tableau des itérations de l’algorithme

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.

4.3.2 Algorithme de Moore ou de Dijkstra


L’algorithme suivant dû à Moore (1957), a été redémontré par Dijkstra en 1959.
Il est basé sur une hypothèse restrictive par rapport à l’algorithme précédent : la
fonction de coût est positive.

π(s) = 0, ∀x 6= s, π(s, x) = c(s, x) si l’arc (s, x) existe et +∞ sinon


P = {s}, T = X − {s}, A(s) = ǫ
TantQue T 6= 0 Faire
Soit x0 ∈ T tel que π(x0 ) = minx∈T π(x)
T = T − {x0 }
P = P ∪ {x0 }
PourTout x ∈ T Faire
Si π(x) > π(x0 ) + c(x0 , x) Alors
π(x) = π(x0 ) + c(x0 , x)
A(x) = x0
FinSi
FinPour
finTantQue

Nous nous intéressons en guise d’exemple au graphe de la figure 4.5 où nous


cherchons le chemin de longueur minimale de x1 à x6 .
Le tableau 4.2 représente l’étape d’initialisation de l’algorithme.
A la première itération, on sélectionne la valeur la moins élevée (le 3 associé
à x2 ici) et on exécute le contenu de l’algorithme. Cela nous mène au second
28 CHAPITRE 4. ALGORITHMIQUE DES GRAPHES

2
6
4
3

3
1
1 3
6

1
6
2
3 6

5
5

Figure 4.5: Exemple de graphe

A ǫ x1 x1 x1
x1 x2 x3 x4 x5 x6
init. 0 3 6 +∞ 3 +∞

Table 4.2: Initialisation de l’algorithme de Dijkstra

tableau 4.3 où seule la valeur temporaire du plus court de chemin menant à x4 a


été modifiée : en passant par x2 , on peut rejoindre x4 avec un coût de 9.

A ǫ x1 x1 x2 x1
x1 x2 x3 x4 x5 x6
init. 0 3 6 +∞ 3 +∞
0 3 6 9 3 +∞

Table 4.3: Première itération de l’algorithme de Disjkstra

Le tableau 4.4 présente les autres itérations de l’algorithme.

4.3.3 Algorithmes de Bellmann


On s’intéresse maintenant à des algorithmes un petit peu moins restrictifs : plutôt
de considérer des graphes à fonction de coût positives, on considère des graphes
sans circuits absorbants. Un circuit absorbant est un circuit dont le coût total est
négatif. Dès lors, n’importe quel chemin empruntant ce circuit une infinité de fois
aura un coût infiniment petit.
On présente tout d’abord la version standard de l’algorithme de Bellman.

π 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

Table 4.4: Autres étapes de l’algorithme de Disjkstra

π 1 (x) = c(s, x), ∀x 6= s


Pour m = 1 à n − 2 Faire
π m+1 (x) = minx6=s [π m (x), miny6=x [π m (y) + c(y, x)]]
FinPour

A la fin de l’algorithme, π m−1 (x) contient la valeur du chemin optimal de s à


x.

2
6
4
3
-3

1
1 3
6
1
6
-2

3 6

5
5

Figure 4.6: Exemple de graphe

L’application de l’algorithme sur le graphe de la figure 4.6 se traduit dans le


tableau 4.5.
La validité de l’algorithme se montre de la façon suivante : on veut montrer que
m
π (x) est la valeur du chemin optimal de s à x comportant au plus m arcs. On va
chercher à montrer (récurrence) que cette propriété reste vraie pour π m+1 (x). On
considère donc un chemin de valeur minimale de s à x comportant au plus m + 1
arcs :

• s’il ne contient pas plus de m arcs, sa valeur est bien π m (x) ;


30 CHAPITRE 4. ALGORITHMIQUE DES GRAPHES

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

Table 4.5: Fonctionnement de l’algorithme de Bellman

• 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

qui est la valeur du chemin optimal de s à x comportant au plus m + 1 arcs.


Si l’on cherche tous les plus courts chemins entre deux quelconques des som-
mets du graphe, on aboutit à des algorithmes en O(n4 ). L’algorithme matriciel
développé dans ce paragraphe est une reprise de l’algorithme de Roy-Warshall
développé pour la détermination de la fermeture transitive. Il s’initialise ainsi :

 valeur de l’arc s’il existe
(0)
Πij = 0 si i = j (4.7)
+∞ sinon

L’algorithme est alors le suivant :

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

Figure 4.7: Exemple de graphe

 
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

4.4 Problème du flot maximal


4.4.1 Définitions
On s’intéresse maintenant à faire circuler des quantités dans un graphe et à max-
imiser la quantité circulant entre 2 ou plusieurs arcs de ce graphe. Les applications
sont immédiates : il peut s’agir de transporter le maximum de monde entre deux
points de l’espace en utilisant plusieurs routes mais aussi d’acheminer des fluides
via des canalisations1 ou des informations dans un réseau. Le paragraphe suivant
s’intéressera au même problème mais en visant à minimiser le coût de ce transport.
1
La cas des canalisations est particulier puisqu’en plus d’avoir une capacité maximale, les canal-
isations peuvent nécessiter une capacité minimale, par exemple une pression de gaz minimale.
32 CHAPITRE 4. ALGORITHMIQUE DES GRAPHES

Définition 4.4.1 Soit un graphe G = (X, U ). On appelle capacité cij associée à


l’arc (i, j) un réel positif ou nul représentant la quantité maximale pouvant circuler
sur un arc. On appelle flot xij sur l’arc (i, j) le réel représentant la quantité
circulant réellement sur l’arc, en vérifiant la contrainte 0 ≤ xij ≤ cij . On appelle
flot sur G l’ensemble des flots associés à chaque arc du graphe G.

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)

On représente un graphe avec le flot et la capacité associés comme sur la fig-


ure 4.8.

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.8: Représentation d’un flot dans un graphe

Pour vérifier la loi de conservation de façon générale, on va ajouter un arc de


retour fictif entre t et s et on appellera valeur du flot la quantité circulant sur l’arc
(t, s), comme le montre la figure 4.9.
Dès lors, on peut définir le problème de flot maximal comme étant la maximisa-
tion de xts sous les contraintes de respect des capacités et de la loi de conservation.
On remarquera qu’il s’agit d’une forme particulière de programme linéaire.

4.4.2 Résolution du problème de flot maximal


Définition 4.4.2 On définit une chaîne augmentante u de s à t pour un flot admis-
sible donné comme une chaîne de s à t respectant les contraintes suivantes :

• xij < cij pour tout arc dirigé de s vers t


4.4. PROBLÈME DU FLOT MAXIMAL 33

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

• xij > 0 pour tout arc dirigé de t vers s

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

Figure 4.10: Exemple de chaîne augmentante

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)∈µ−

Pour augmenter le flot, on ajoute α au flux des arcs de µ+ et on retranche α au


flux des arcs de µ− .
34 CHAPITRE 4. ALGORITHMIQUE DES GRAPHES

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 ).

Théorème 4.4.2 (Ford-Fulkerson) La valeur du flot maximal est égal à la capacité


de la coupe de capacité minimale.

On en déduit l’algorithme de recherche du flot maximal : il consiste à exhiber


une chaîne augmentante et à augmenter le flot de la valeur de la chaîne augmentante
tant qu’il existe des chaînes augmentantes.

4.4.3 Algorithme de Ford-Fulkerson et exemple


Soit x un flot admissible, marquer + le sommet s
Répéter
Si i est marqué et j non marqué Alors
Si (i, j) est un arc non saturé Alors
marquer j avec +
FinSi
Si (j, i) est un arc tel que xij > 0 Alors
marquer j avec -
FinSi
FinSi
Jusqu’à ce qu’on ne puisse plus marquer de sommets
Si t est marqué Alors
il existe une chaîne augmentante de s à t
augmenter le flot et recommencer
Sinon
le flot est maximal
FinSi
4.4. PROBLÈME DU FLOT MAXIMAL 35

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

Figure 4.11: Flot initial pour l’algorithme de Ford-Fulkerson

+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]

Figure 4.12: Marquage pour l’algorithme de Ford-Fulkerson


36 CHAPITRE 4. ALGORITHMIQUE DES GRAPHES

Faisons maintenant fonctionner l’algorithme sur un exemple, celui du graphe


de la figure 4.11. On notera que ce graphe comporte un flot initial non nul afin de
réduire le nombre d’itérations de l’algorithme.
Après marquage, le graphe devient celui de la figure 4.12.
A partir des marquages, on retrouve la chaîne augmentante de la figure 4.13.
Elle nous permet d’augmenter le flot de 5, ce qui donne le nouveau flot représenté
figure 4.14.

A D
5 [20]

5] ]
[3 [ 15
15 15

s B t

0 [5
] 0]
[6
30
F

Figure 4.13: Chaîne augmentante

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

Figure 4.14: Nouveau flot après augmentation de 5

Une nouvelle procédure de marquage aboutit au graphe de la figure 4.15. Le


sommet t n’est pas marqué, donc l’algorithme est terminé et le flot est maximal.
4.4. PROBLÈME DU FLOT MAXIMAL 37

La ligne verte sépare les deux ensembles de la coupe de capacité minimale.

+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

Figure 4.15: Fin de l’algorithme

La complexité de l’algorithme se détermine difficilement : la procédure de


marquage nécessite deux examens et est donc en O(m). Le nombre d’itérations
dépend quand à lui largement de la valeur du flot et de la chaîne augmentante
choisie, d’où l’intérêt de ne pas prendre un flot nul au départ. Si on considère
l’exemple de la figure 4.16 qu’on augmente systématiquement en passant par la
branche centrale (dans le bon sens pour les itérations impaires et dans l’autre sens
pour les itérations paires), le nombre d’itérations est alors de 100000 alors qu’en
deux itérations mieux choisies, le flot aurait été maximal.

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

Figure 4.16: Mauvais choix des chaînes augmentantes

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 Flot maximal à coût minimal


4.5.1 Définitions
Nous nous intéressons maintenant au même problème de détermination d’un flot
maximal sauf que nous allons ajouter pour être plus réalistes un coût unitaire sur
chacun des arcs. Il s’agira donc de déterminer le flot maximal à coût minimal. On
considère toujours un graphe G = (X, U ) comportant une source s et un puits p
associant à chaque arc (i, j) ∈ U une capacité cij et un flot 0 ≤ xij ≤ cij vérifiant
en outre les contraintes de la loi de conservation. On ajoute alors à chaque arc
(i, j) ∈ U un coût unitaire dij .
Le problème du flot maximal à coût minimalPconsiste donc à parcourir tous les
flots maximaux et à trouver celui qui minimise (i,j)∈U xij dij .

Définition 4.5.1 On définit le graphe d’écart G = (X, U e ) associé à G = (X, U )


vérifiant (i, j) ∈ U e si et seulement si :

• (i, j) ∈ U et xij < cij (1)

• (j, i) ∈ U et xij > 0 (2)

Alors la capacité et le coût de (i, j) ∈ U e seront respectivement de

• cij − xij et +dij dans le cas (1)

• xij et −dij dans le cas (2)

4.5.2 Algorithme de Roy


L’algorithme que nous allons décrire est dû à Roy, il consiste à partir d’un flot
nul (donc de coût minimal) à augmenter le flot progressivement en conservant la
propriété de coût minimal. D’autres algorithmes (Bennington par exemple) partent
d’un flot maximal dont ils vont chercher à minimiser le coût.

x0 = (0, ..., 0), k = 0


Construire le graphe d’écart Gek
Tantque il existe un chemin de s à t dans Gek
k = k+1
Soit µk le plus court chemin de s à t
Soit c la plus petite capacité des arcs de µk
Calculer un nouveau flot xk+1
xk+1 (i, j) = xk (i, j) + c si (i, j) ∈ µk
xk+1 (i, j) = xk (i, j) − c si (j, i) ∈ µk
xk+1 (i, j) = xk (i, j) sinon
4.5. FLOT MAXIMAL À COÛT MINIMAL 39

on obtient un nouveau flot augmenté de c


FinTantQue

Propriété 4.5.2.1 A chaque étape k de l’algorithme, le flot xk est de coût minimal.

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)

Figure 4.17: Exemple et premier graphe d’écart

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] (-3) [3] (-2) [3] (-1)


s b e t
[1] (3) [1] (1)
(5)
[1]

[3] [2]
(1 ) ( 3) ( 3)
c f [4]
[5] (2)

Figure 4.18: Second graphe d’écart


40 CHAPITRE 4. ALGORITHMIQUE DES GRAPHES

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] (-3) [3] (-2) [3] (-1)


s b e t
[1] (3) [1] (1)
(5)
[1]
[3 ] [2]
(-1 ( 3) ( 3)
)
c f [1]
[2] (2) [3] (-3)

[3] (-2)

Figure 4.19: Troisième graphe d’écart

[3] (-2) [3] (-2)


a d
[3]
] (2) (-4
[2 )

[3] (-3) [3] (-2) [3] (-1)


s b e t
[1] (3) [1] (1)
(5)
[1]

[3 ] [2]
(-1 ( 3) ( 3)
)
c f [1]
[2] (2) [3] (-3)

[3] (-2)

Figure 4.20: Quatrième graphe d’écart


4.5. FLOT MAXIMAL À COÛT MINIMAL 41

[3] (-2) [3] (-2)


a d
[3]
] (2) (-4
[2 )

[3] (-2) [3] (-1)


s b e t
[4] (-3) [1] (-3) [1] (1)
(5)
[1]

[3 ] [1] )
(-1 ( 3) (-3
)
c f [4]
[2] (2)

[3] (-2)

Figure 4.21: Cinquième graphe d’écart


42 CHAPITRE 4. ALGORITHMIQUE DES GRAPHES
Chapitre 5

Démonstrations

Démonstration du théorème 1.2.1


Soit a ∈ U une arête de G. Alors, ou a est une boucle autour d’un sommet x
de G et intervient pour 2 dans le degré de x, ou a = (x, y) intervient pour 1 dans
le degré de x et pour 1 dans le degré de y. On a donc
X
d(x) = 2|U | (5.1)
x∈X
P
x∈X d(x) est donc un nombre pair. Si on appelle X̃ le sous-ensemble de X
tel que les x ∈ X̃ ont un degré impair, alors
X X X
d(x) = 2|X| = d(x) + d(x) (5.2)
x∈X x∈X̃ x∈X−X̃
Le membre de gauche de l’équationP est pair, le second terme du nombre de
droite est pair aussi, donc le nombre x∈X̃ d(x) est pair, ce qui est alors néces-
sairement le cas de |X̃|.

Démonstration de la propriété 1.3.0.1


R est évidemment réflexive. Soit (ui )1≤i≤n une chaine de U reliant x à y.
Alors la suite des (u′i ) définie par u′i = un−i est aussi une chaine de U et constitue
bien une chaine de y à x. R est donc bien symétrique. Enfin, si xRy et yRz, c’est
bien qu’il existe deux suites de U menant respectivement de x à y et de y à z. La
concaténation de ces deux suites fournit une chaine évidente entre x et z, d’où la
transitivité de R. R est donc bien une relation d’équivalence.

Démonstration de la propriété 1.3.0.2


R′ est évidemment réflexive et symétrique. Enfin, si xR′ y et yR′ z, c’est bien
qu’il existe deux suites de U menant respectivement de x à y et de y à z (ainsi que
de y à x et de z à y). La concaténation de ces deux suites fournit un chemin évident
entre x et z (resp. entre z et x), d’où la transitivité de R′ . R′ est donc bien une
relation d’équivalence.

43
44 CHAPITRE 5. DÉMONSTRATIONS

Démonstration du théorème 1.4.2


=⇒ S’il existe A 6= 0 et A 6= X tel que Γ+ (A) = A et un y 6 ∈A, alors il n’y
aura pas de chemin jusqu’à y.
⇐= Soient x et y donnés, on construit A0 = {x} et la suite des Ai par la
relation de récurrence suivante : Ai = Ai−1 ∪ Γ+ (Ai−1 ). X étant fini, il existe un
i tel que y ∈ Ai , ce qui implique qu’il existe un chemin entre x et y.

You might also like