Vous êtes sur la page 1sur 40

COURS DE RO1 : THEORIE DES GRAPHES ET

APPLICATIONS

Dr Etienne Téna SORO 1

30 mars 2012

1. Université de Cocody-Abidjan, UFR de Mathématiques et Informatique ; 22 BP 582 Abidjan


22
Chapitre 1

Graphes orientés

1.1 Définitions et premières propriétés


1.1.1 Sommets et arcs
Un graphe orienté G est défini par la donnée d’un ensemble S dont les éléments sont
appelés des sommets ou noeuds et d’un ensemble A dont les éléments sont des couples
d’éléments de S appelés arcs. On le note G = (S, A). Le nombre n de sommets de G est
appelé l’ordre de G et m celui des arcs de G est appelée la taille de G.

Exemple
Soit G = (S, A) le graphe orienté défini par : S = {x, y, z} et A = {a, b, c, d} où
a = (x, z), b = (z, x), c = (x, y), d = (z, y) et e = (y, y).

z
d
e

a b y

Etant donné un arc u = (x, y), on dit que le sommet x est l’origine ou l’extrémité
initiale de u ; le sommet y est le but ou l’extrémité finale ou terminale de u. On dit aussi
que y est un successeur de x et que x est un prédécesseur de y. On dit également que les
sommets x et y sont adjacents ou voisins et que l’arc u est incident à x et y.

1.1.2 Demi-degré et degré


Deux arcs sont adjacents s’ils sont incidents à au moins une extrémité commune.
Le demi-degré extérieur du sommet x, noté d+ +
G (x) ou plus simplement d (x) est le nombre
d’arcs ayant x pour extrémité initiale.
Le demi-degré intérieur du sommet x, noté d− −
G (x) ou plus simplement d (x) est le nombre
d’arcs ayant x pour extrémité finale.
Le degré du sommet x, noté dG (x) ou plus simplement d(x) est : d(x) = d+ (x) + d− (x).

1
Proposition 1 La somme des degrés des sommets de G est égale à deux fois la taille de
G.

Preuve : Il suffit de remarquer que dans la somme des degrés chaque arc est compté
deux fois : une fois dans le demi-degré extérieur et une autre fois dans le demi-degré
intérieur. 

Corollaire 1 Dans un graphe orienté, le nombre de sommets de degrés impairs est pair.


Etant donné X ⊂ S, on définit :
• w+ (X) est l’ensemble des arcs ayant leur extrémité initiale dans X et leur extrémité
terminale dans S − X.
• w− (X) est l’ensemble des arcs ayant leur extrémité initiale dans X − S et leur extrémité
terminale dans X.
• w(X) = w+ (X) + w− (X) est appelé un cocycle du graphe.

1.1.3 Chaîne, chaîne élémentaire, cycle, cycle élémentaire


Une Chaîne de longueur k est une suite µ = a1 , a2 , . . . ak de k arcs telle que deux arcs
consécutifs sont adjacents. On notera µ = x0 a1 x1 . . . xk−1 ak xk , si l’on veut préciser les
sommets rencontrés. Les sommets x0 et xk sont appelés les extrémités de la chaîne µ. On
dit que la chaîne µ rélie les sommets x0 et xk .

Une chaîne élémentaire est une chaîne telle qu’en la parcourant, on ne rencontre pas
deux fois le même sommet. De façon équivalente, on peut la définir comme une chaîne dont
les sommets sont tous de degré 2 sauf ses extrémités.

Proposition 2 De toute chaîne on peut extraire un chaîne élémentaire. 

Un cycle est une chaîne dont les extrémités coïncident. Un cycle élémentaire est un
cycle dont tous les sommets sont de degré 2.

1.1.4 Chemin, chemin élémentaire, circuit et circuit élémentaire


Un chemin est une chaîne dont tous les arcs sont orientés dans le même sens. Formel-
lement on dit qu’un chemin de longueur k est une suite µ = a1 , a2 , . . . , ak d’arcs telle que
l’extrémité initiale (resp. finale) de chaque arc ai avec 2 ≤ i ≤ k − 1 est l’extréminté finale
de l’arc ai−1 (resp. l’extrémité initiale de l’arc ai+1 ). Pour indiquer les extrémités on note :
µ = x1 a1 x2 a2 x3 . . . xk−1 ak xk . Les sommets x1 et xk sont appelés les extrémités du chemin
µ. On dit que le chemin µ relie les sommets x1 et xk .

Un chemin élémentaire est un chemin tel qu’en le parcourant, on ne rencontre pas deux
fois le même sommet. Dans un chemin élémentaire tous les sommets sont de degré 2 au plus.

Un circuit est un chemin dont les extrémités coïncident. Un circuit élémentaire est un
circuit dont tous les sommets sont de degré 2.

2
1.2 Représentations d’un graphe
1.2.1 Matrice d’incidence (sommets-arcs)
La matrice d’incidence sommets-arcs d’un graphe orienté G = (S, A) est la matrice
P = (pxu ) à coefficients entiers : 0, -1 et 1 tels que pour tout u = (x, y) ∈ A, tous les
coefficients de la colonne u sont nuls sauf pxu = 1 et pyu = −1.

Si x est une ligne de P alors


w+ (x) = {u / pxu = 1}

w− (x) = {u / pxu = −1}

1.2.2 Exemple
a
1 2
b
c
d
4 3
e
On obtient la matrice d’incidence :
 
1 1 0 0 0
 −1 0 1 1 0 
 
 0 −1 −1 0 1 
0 0 0 −1 −1

1.2.3 Matrice d’adjacence (sommets-sommets)


La matrice d’adjacence sommets-sommets d’un graphe orienté G = (S, A) est la matrice
Q = (qxy ) à coefficients entiers : 0 et 1 tels que pour tout x et y dans S on a :

qxy = 1 si et seulement si (x, y) ∈ A.


La matrice d’adjacence de l’exemple précédent est
 
0 1 1 0
 0 0 1 1 
 
 0 0 0 1 
0 0 0 0

1.2.4 Tableaux α et β
On considère ici que les sommets sont rangés et désignés par leur rang. Ainsi on pose
S = {1, 2, . . . , n}. Les tableaux α() et β() sont respectivement des matrices unilignes de
dimension n + 1 et m. Pour chaque sommet i, la liste des sommets successeurs de i est
contenue dans le tableau β() à partir de la case numéro α(i). Et donc l’ensemble des
successeurs de i est contenu entre les cases α(i) et α(i + 1) − 1 du tableau β().

α(1) = 1
+
α(i + 1) = d (i) + α(i)

3
1.3 Quelques graphes particuliers
Soient G = (S, A) un graphe orienté, S1 une partie de S et A1 une partie de A.

On appelle sous-graphe engendré par S1 , le graphe noté GS1 dont les sommets sont les
éléments de S1 et dont les arcs sont les arcs de G ayant leurs deux extrémités dans S1 .

On appelle graphe partiel engendré par A1 , le graphe noté G[A1 ] ayant le même en-
semble S de sommets que G et dont les arcs sont ceux de A1 .

Le sous-graphe partiel engendré par S1 et A1 est le graphe partiel de GS1 engendré par
A1 .

On dit G est strict si G est sans boucle et deux sommets quelconques sont tous deux
incidents à au plus un arc. Si G est strict alors le graphe complémentaire de G a le même
ensemble de sommets que G et comme arcs les arcs complémentaires à A :

(x, y) ∈ A → (x, y) ∈
/ Ā

(x, y) ∈
/ A → (x, y) ∈ Ā
On dit que G est biparti si l’ensemble des sommets S peut être partitionné en deux
sous ensembles S1 et S2 de tel sorte que, tout arc a une extrémité dans S1 et l’autre dans S2 .

On dit que G est complet si G est strict tel que deux sommets distincts quelconques
sont reliés par un seul arc.

1.4 Connexité et forte connexité


1.4.1 Graphe connexe
Soit G = (S, A) un graphe orienté. On dit que G est connexe si, pour tout couple de
sommets (x, y), il existe une chaîne reliant x et y. On associe à cette notion de connexité
une relation d’équivalence R définie par :
(
soit x = y,
xRy ⇔
soit il existe une chaîne reliant x et y.
Les classes d’équivalence induites sur S par cette relation forment une partition de S
en : S1 , . . . , Sp . Le nombre p de classes distinctes est appelé le nombre de connexité du
graphe.

Proposition 3 G est connexe si et seulement si p = 1. 

Les sous graphes G1 , . . . , Gp engendrés par les sous ensembles S1 , . . . , Sp sont appelés les
composantes connexes du graphe G. Chaque composante connexe est un graphe connexe.

Un point d’articulation d’un graphe est un sommet dont la suppression augmente le


nombre de composantes connexes. Un isthme est un arc dont la suppression a le même
effet.

4
1.4.2 Graphe fortement connexe
Soit G = (S, A) un graphe orienté. On dit que G est fortement connexe si, pour tout
couple de sommets (x, y), il existe un chemin allant de x à y. On associe à cette notion de
forte connexité une relation d’équivalence T définie par :

(
soit x = y,
xT y ⇔
soit il existe un chemin allant de x à y et un chemin allant de y à x.

Les classes d’équivalence induites sur S par cette relation forment une partition de S
en : S1 , . . . , Sq . Le nombre q de classes distinctes est appelé le nombre de forte connexité
du graphe.

Les sous graphes G1 , . . . , Gq engendrés par les sous ensembles S1 , . . . , Sq sont appelés
les composantes fortement connexes du graphe G. Chaque composante fortement connexe
est un graphe fortement connexe.

Proposition 4 G est fortement connexe si et seulement s’il n’a qu’une seule composante
fortement connexe. 

1.4.3 Graphe réduit


Soit G = (S, A) un graphe orienté. On appelle graphe réduit de G, le graphe quotient
Gr = G/T du graphe G par la relation d’équivalence T . Les sommets de Gr sont les
composantes fortement connexes et il existe un arc de Gi à Gj si et seulement s’il existe
au moins un arc allant d’un sommet de Gi à un sommet de Gj dans G.

Proposition 5 Le graphe Gr est sans circuit. 

1.5 Graphe sans circuit


1.5.1 Sources et puits
Soient G = (S, A) un graphe orienté, s et p deux sommets de G. On dit que s est un
sommet source ou simplement source de G si d− (s) = 0. Le sommet p est appelé sommet
puits ou simplement puits de G si d+ (p) = 0.

Proposition 6 Si G est sans circuit alors il admet un sommet source et un sommet puits.

Preuve : Exercice (Ind. faire une preuve par construction). 

Proposition 7 Si G est strict tel que pour tout x ∈ S on a : d− (x) = d+ (x) alors G est
fortement connexe si et seulement si G est connexe.

Preuve : Soit G = (S, A) un graphe orienté strict tel que pour tout x ∈ S on a :
d− (x) = d+ (x).

Si G est fortement connexe il est claire que G est connexe.

Reciproquement supposons que G est connexe mais n’est pas fortement connexe. Donc
G admet q > 1 composantes fortement connexes, notés G1 , . . . , Gq . D’après la proposition

5
5, le graphe réduit Gr est sans circuit. Il existe, d’après la proposition 6, un sommet Gp
(avec p ∈ {1, . . . , q}) dans Gr tel que d+ (Gp ) = 0. Tout arc de G dont l’extrémité initiale
est dans Gp a aussi son extrémité finale dans Gp . D’après lhypothèse, dans le graphe
Gp = (Sp , Ap ) on a : X X
d− (x) = d+ (x),
x∈Sp x∈Sp

mais comme G est connexe il existe une composante fortement connexe Gi = (Si , Ai ), un
sommet y ∈ Si et un sommet x ∈ Sp tels que (y, x) ∈ A. Ce qui donne dans G :
X X
d− (x) > d+ (x),
x∈Sp x∈Sp

ce qui contredit l’hypothèse sur les degrés. 

Proposition 8 Si G est strict alors G est sans circuit si et seulement si


(
• il existe un sommet s tel que d− (s) = 0,
• pour tout s ∈ S tel que d− (s) = 0, le sous graphe G − {s} est sans circuit.

Preuve : Soit G = (S, A) une graphe orienté strict.

Si G est sans circuit alors d’après la proposition 6, il existe s ∈ S tel que d− (s) = 0 et
comme tout sous graphe d’un graphe sans circuit est un graphe sans circuit on deduit que
pour toute source s le graphe G − {s} est sans circuit.

Réciproquement supposons que s est une source de G et donc le sous graphe G − {s}
est sans circuit. Si G contenait un circuit alors ce circuit contiendrait s et d− (s) > 0 ; ce
qui contredit le fait que s est une source de G. 

1.5.2 Tri topologique d’un graphe


Soit G = (S, A) un graphe orienté strict. Un tri topologique ( on dit aussi bonne numé-
rotation ou encore numérotation acyclique) de G est une énumération (ou une indexation)
s1 , . . . , sn des sommets de G tel que si (si , sj ) ∈ A alors i < j. De façon équivalente c’est
aussi une application f de S dans {1, 2, . . . , n} telle que f (x) < f (y) si et seulement si
(x, y) ∈ A.

Proposition 9 Un graphe orienté strict admet un tri topologique si et seulement s’il est
sans circuit.

Preuve : Soit G = (S, A) un graphe orienté strict.

Supposons que G admet un tri topologique f et qu’il contient un circuit s1 a1 s2 . . . sk ak s1 .


Le tri donne
f (s1 ) < . . . < f (sk ) < f (s1 ) et donc f (s1 ) < f (s1 );
ce qui est absurde.

Réciproquement si G est sans circuit alors en posant S1 = S et G1 = G, on a d’après


la proposition 8
• Il existe s1 ∈ S1 tel que d−
G1 (s1 ) = 0 et posons S2 = S1 − {s1 } et G2 = GS2

6
• Il existe s2 ∈ S2 tel que d−
G2 (s2 ) = 0 et posons S3 = S2 − {s2 } et G3 = GS3
...
• Il existe sn−1 ∈ Sn−1 tel que d− Gn−1 (sn−1 ) = 0 et posons Sn = Sn−1 − {sn−1 } et Gn =
GSn−1
• Il existe sn ∈ Sn tel que d−
Gn (sn ) = 0.
Ainsi on construit un tri topologique. 

1.6 Arborescence
1.6.1 Définitions
Soient G = (S, A) un graphe orienté et r ∈ S. On dit que r est une racine de G si tout
sommet de G peut être atteint par un chemin d’origne r. Une arborescence est un graphe
orienté a une seule racine et sans cycle.
On dit que G possède la condition des demi-degrés intérieurs lorsque d− (s) = 1 pour
tout sommet s de G sauf pour un sommet qu’on note r, pour lequel d− (r) = 0.

Exemple
r

a b c

d e f g

Les sommets puits a, d, e, h, g sont appelés feuilles. d et e sont frères et fils de b. les
descendants de c sont f, g, h.

1.6.2 Caractérisation des arborescences


Proposition 10 Soit G = (S, A) un graphe orienté. Les conditions suivantes sont équiva-
lentes
1. G est une arborescence.
2. G a une racine et est acyclique.
3. G a une racine et m = n − 1.
4. Il existe un sommet r ∈ S tel que pour tout sommet s ∈ S, il existe un chemin unique
allant de r à s.
5. G est connexe et possède la condition des demi-degrés intérieurs.
6. G est acyclique et possède la condition des demi-degrés intérieurs.

7
7. G est sans circuits et possède la condition des demi-degrés intérieurs.

Preuve : Exercice. 

1.7 Parcours dans les graphes


L’idée générale des algorithmes de parcours dans les graphes est :
• Initialisation
• Tant que non fini Faire
Selection d’un sommet
Traitement du sommet
L’algorithme détaillé est le suivant où chaque sommet peut avoir trois état :
– non-atteint : l’algorithme ne le connait pas encore.
– atteint : l’algorithme a rencontré le sommet mais ne l’a pas encore traité.
– examiné : l’algorithme a traité le sommet, il le connait ainsi que tous ses successeurs.
On ne teste jamais si un sommet est dans cet état, il sert uniquement à une bonne
compréhension de l’algorithme.

L’algorithme détaillé

à-traiter := ∅
Pour tout s de S faire
état(s) := non-atteint
Pour tout s de S faire
Si état(s) := non-atteint Alors
état(s) := atteint
père(s) := ⊥ (*s est une racine*)
à-traiter :=à-traiter ∪{s}
Tant que à-traiter :6= ∅ Faire
y := choix(à-traiter)
à-traiter := à-traiter−{y}
Pour tout z de Succ(y) Faire
Si état(z) = non-atteint Alors
père(z) := y
état(z) := atteint
à-traiter := à-traiter ∪{z}
état(y) := examiné

8
1.8 Exercices
1.8.1 Exercice 1
On considère le graphe G = (X, U ) défini par : X = {1, 2, 3, 4, 5} et U = {a = (1, 2), b =
(2, 4), c = (3, 4), d = (2, 3), e = (5, 2), f = (3, 5)}
1. Donner son codage par sa matrice d’adjacence, puis par sa matrice d’incidence.
2. Ce graphe contient-il des circuits ? Si oui, donnez-les.
3. Est-il fortement connexe ? si oui justifier sinon déterminer son graphe réduit.

1.8.2 Exercice 2
On propose deux méthodes pour coder un graphe G = (S, A) en machine : la matrice
d’adjacence M et la file des successeurs de tableaux ALP HA1, ALP HA2 et BET A. La
file des successeurs BET A est le tableau des successeurs, les successeurs du sommet s se
trouvant entre les adresses ALP HA1(s) et ALP HA2(s) dans le tableau BET A (en cours
on avait un seul tableau ALP HA).

Sommets Sommets antérieurs


1 1,2,4
2 1
3 1,2,5
4 1,5
5 4
1. Donner une représentation sagittale du graphe ci-dessus.
2. Rapporter les tableaux M , ALP HA1, ALP HA2 et BET A.
3. Ecrire un algorithme permettant de passer de la file des successeurs à la matrice
d’adjacence. Quelle est la complexité de cet algorithme ?
4. Ecrire un algorithme permettant de passer de la matrice d’adjacence à la file des
successeurs. Quelle est la complexité de cet algorithme

1.8.3 Exercice 3
(Lemme de Koenig) Montrer que de tout chemin on peut extraire un chemin élémen-
taire. Peut-on étendre ce résultat aux chaînes ?

1.8.4 Exercice 4
Ecrire un algorithme glouton (de proche en proche) permettant de dire si un graphe
est connexe ou non. Adapter le pour déterminer les composantes fortement connexes d’un
graphe.

9
1.8.5 Exercice 5
Soient G = (S, A) un graphe oriente d’ordre n , M la matrice d’adjacence associée et I
la matrice identité d’ordre n. On pose N = (I + M )n−1 = (Nij )ij .
1. Montrer que I + M + M 2 + . . . + M n−1 = N .
2. Montrer que Nij = 1 si et seulement s’il existe un chemin allant de i à j de longueur
au plus égale à n − 1. Déduire que G est fortement connexe si et seulement si Nij = 1
pour tous i et j.
3. En utilisant les résultats des questions précédentes, déterminer les composantes for-
tement connexes du graphe de l’exercice 1.8.1 et déterminer son graphe réduit.

1.8.6 Exercice 6
Soit G = (S, A) un graphe oriente d’ordre n et f une application de S dans {1, 2, . . . , n}.
On dit que f est un tri topologique (on dit aussi bonne numérotation ou numérotation
acyclique) si pour tout couple (x, y) de A on a f (x) < f (y).
1. Montrer que G est sans circuits si et seulement si pour toute partie X de S, le
sous-graphe GX engendré par X possède au moins un sommet sans prédécesseurs.
2. Montrer que G est sans circuits si et seulement s’il existe un tri topologique sur G.

1.8.7 Exercice 7
Soit G un graphe orienté sans circuits ayant un unique sommet source r (sans prédé-
cesseurs). On fait observer que tout sommet de G est accessible par un chemin depuis r.
On appelle niveau de sommets dans G, tout ensemble de sommets constitue des sommets
qui sont à une même plus grande longueur (de chemin) de r. En particulier le sommet
r constitue à lui seul un niveau, correspondant à la plus grande longueur 0. Puis, pour
chaque plus grande longueur possible 1, 2, . . . (jusqu’à la plus grande valeur k pour laquelle
il existe dans G un sommet à plus grande longueur k de r), correspond un niveau de som-
mets dans G. Les niveaux, non vides, ainsi définis constituent une partition de l’ensemble
des sommets de G, appelée classement par niveaux. Les niveaux sont par ailleurs ordonnés
dans l’ordre des valeurs des plus grandes longueurs correspondantes.
1. Montrer que deux sommets d’un même niveau ne sont jamais reliés par un arc.
2. Montrer que chaque arc de G va d’un niveau à un niveau supérieur.
3. Montrer qu’en numérotant les sommets de G dans l’ordre croissant des niveaux, et
de façon quelconque à l’intérieur d’un même niveau, on obtient un tri topologique.
4. Déterminer le classement par niveaux des sommets du graphe dont l’ensemble des
sommets est : {r, a, b, c, d} et celui des arcs est : {(r, a); (r, b); (a, c); (b, d); (c, d)}.
5. Trouver dans ce graphe, un tri topologique qui ne peut pas être obtenu à partir d’un
classement par niveaux obtenu comme indiqué à la question 3).

1.8.8 Exercice 8
Soit G=(S, A) le graphe défini par :

10
Sommets Sommets antérieurs
1 2
2 1
3 1,4
4 3,5
5 7
6 4,5,6,8
7 6,8
8 2
1. Donner son codage par sa matrice d’adjacence.
2. Ce graphe contient-il des circuits ? Si oui, donnez-les.
3. Est-il fortement connexe ? justifiez votre réponse.
4. Déterminer son graphe réduit Gr .
5. Montrer que Gr est sans circuit.
6. Donner la matrice Mr d’adjacence du graphe réduit Gr et calculer ses puissances
successives. Que constatez-vous ?
7. Plus généralement, montrer qu’un 1-graphe G (quelconque) est sans circuits si et
seulement si sa matrice M d’adjacence est nilpotente (c’est- à -dire qu’il existe un
entier k > 0 tel que M k = 0).

1.8.9 Exercice 9
Un graphe G est quasi fortement connexe si à tous couples (s, t) de ses sommets on
peut associer un sommet x tel qu’il existe un chemin de x à s et un chemin de x à t.
1. Montrer que G est quasi fortement connexe si et seulement si G admet une racine.
2. Un graphe fortement connexe est-il quasi fortement connexe ? Si oui combien a-t-il
de racines ?

1.8.10 Exercice 10
Soit G = (S, A) un graphe non valué et r un sommet fixé de G.
1. Enoncer un algorithme de calculs des distances de r à tous les autres sommets de G.
On s’appuiera sur celui des parcours en largeur d’un graphe (voir cours).
2. Pour tout entier k ≥ 0, on note Dk l’ensemble des sommets à distance k de r et Mk
l’ensemble des sommets marqués à distance k de r dans l’algorithme (NB : pour éviter
toute confusion au niveau de la distance on dira simplement que Mk est l’ensemble
des sommets marqués k dans l’algorithme). Noter que D0 = M0 = r.
(a) Montrer que les Mk sont deux à deux disjoints. Qu’en est-il des Dk ?
(b) Montrer par récurrence que Mk = Dk pour tout k.
(c) Calculer la complexité de l’algorithme.

11
Chapitre 2

Chemins optimaux

2.1 Notion de distance et problèmes de cheminement


2.1.1 Graphe valué
Soit G = (S, A) un graphe (orienté ou non). On associe à chaque arc (ou arête) a ∈ A
un réel l(a) appelé poids ou longueur de a. L’application l ainsi définie :

l: A → R
a 7→ l(a)

est appelée une valuation du graphe G, on note G = (S, A, l) et on dit que le graphe est
valué.

2.1.2 Plus court chemin et distance


Soient G = (S, A, l) un graphe valué et µ(s0 , sk ) un chemin allant de s0 à sk . On appelle
longueur du chemin ou bien poids du chemin µ(s0 , sk ) et on note l(µ(s0 , sk )) la somme des
poids des arcs de µ(s0 , sk ). Remarquer que si la valuation l est constante égale à 1 alors la
notion définie ici coïncide avec la notion de longueur d’un chemin comme nombre de ses
arcs. Un circuit de longueur strictement négative est appelé circuit absorbant.
Proposition 11 Soient s et t deux sommets de G. Pour qu’il existe un plus court chemin
allant de s à t il faut et il suffit que tout chemin allant de s à t ne contienne pas de circuit
absorbant.
Preuve : Soit C l’ensemble des chemin de s à t. Si µ ∈ C contient un circuit ω alors
on note µ′ le chemin de s à t associé à µ mais n’empruntant pas le circuit ω et on a :
l(µ) = l(µ′ ) + l(ω).
• S’il existe un chemin µ ∈ C contenant un circuit absorbant alors il n’existe pas de plus
court chemin de s à t. Il suffit en effet de considérer le chemin obtenu à partir de µ
en passant un assez grand nombre de fois par le circuit absorbant.
• Si tout chemin µ ∈ C ne contient pas de circuit absorbant alors l(ω) ≥ 0, l(µ′ ) ≤ l(µ)
et on peut se restreindre aux chemins élémentaires. Comme ils forment un ensemble
fini, il existera un plus court chemin. 
Soit G = (S, A, l) une graphe orienté, valué et sans circuits absorbants. On appelle distance
de s à t, deux sommets de G et on note d(s, t) la plus petite longueur des chemins de s à
t dans le graphe G.
Un plus court chemin de s à t est un chemin µ tel que l(µ) = d(s, t).

12
2.1.3 Plus long chemin et plus grande longueur
Soit G = (S, A, l) un graphe orienté valué. Un chemin σ de s à t, deux sommets de G,
est un plus long chemin de s à t s’il est de longueur maximum.

Proposition 12 Soient s et t deux sommets de G. Pour qu’il existe un plus long chemin
allant de s à t il faut et il suffit que tout chemin allant de s à t ne contienne pas de circuit
de longueur strictement positive.

Preuve : Exercice.
On appelle la plus grande longueur ou encore plus grande distance de s à t le maximum
des longueur de s à t et on note D(s, t).

2.1.4 Problèmes de cheminement


Les problèmes considérés sont :
1. Recherche d’un plus court chemin d’un sommet à un autre (problème de 2 sommets).
2. Recherche d’un plus court chemin d’un sommet à tous les autres (problème avec un
sommet origine unique).
3. Recherche d’un plus court chemin entre tous les couples de sommets (problème de
tous les couples de sommets).
La suite du chapitre est consacré au problème avec un sommet origine unique. La résolution
dépend de la nature des graphes et de la valuation.

2.2 Cas où le graphe est non valué


On considère un graphe G = (S, A) orienté non valué. On peut poser G = (S, A, l) où l
est constante égale à 1. On note r le sommet origine donc d(r, r) = 0. La distance est bien
définie.

2.2.1 Calcul des distances


Le calcul des distances repose sur un algorithme de parcours en largeur du graphe G à
partir de r. Soit F une file. On rappelle qu’une file fonctionne selon le principe du premier
entré, premier sorti. Les opérations élémentaires sont.
• enfiler(F,s) : met s dans la file à la queue.
• tête-file(F) : retourne le sommet qui est en tête de F sans l’enlever.
• défiler(F,s) : enlève le sommet qui est en tête sans le retourner.
• file-vide(F) : retourne vrai ou faux selon que F est vide ou non.

Algorithme
a) Initialisation
Pour tout sommet s ∈ S
Atteint(s) :=Faux
Fin Pour

13
b) Visite de r (sommet origine unique)
Atteint(r) :=Vrai
Enfiler(F ,r)
d(r, r) = 0
s := r
c)
Tant que file-vide(F )=Faux
Pour tout successeur t de s qui n’est pas encore atteint
d(r, t) = d(r, s) + 1
Atteint(t) :=Vrai
Enfiler(F ,t)
Fin Pour
Défiler(F ,s) s :=tête-file(F )
Fin Tant Que
Noter que Atteint( ) est un tableau indexé sur les sommets du graphe G.

2.2.2 Arborescence de plus courts chemins


L’ensemble de plus courts chemins déterminés définit dans le graphe une arborescence
de plus courts chemins.

Exemple

2 3 4

1 5 6 7 8

9 10

L’algorithme permet de calculer les distances suivantes :

s 1 2 3 4 5 6 7 8 9 10
d(r, s) 0 1 2 5 1 2 4 6 1 3
Il existe plusieurs arborescences, en voici une.

14
2 3 4

1 5 6 7 8

9 10

2.3 Cas où le graphe est sans circuits et application aux pro-


blèmes d’ordonnancement
2.3.1 Calcul des distances et des plus grandes distances
Soit G = (S, A, l) un graphe orienté valué et sans circuits. On obtient :
1. G admet un tri topologique r = s1 , s2 , . . . , sn de sorte que tout prédécesseur si de sj
est tel que i < j.
2. La distance entre deux sommets s et t est bien définie car G est sans circuits. Donc
on peut calculer les distances de proche en proche dans G.
(
d(s1 , s1 ) = 0
d(s1 , sj ) = Minsi ∈Γ−1 (sj ) (d(s1 , si ) + l(si , sj ))

3. la plus grande longueur ou distance D(s, t) est bien définie car G est sans circuits.
Donc on peut calculer les plus grandes distances de proche en proche dans G.
(
D(s1 , s1 ) = 0
D(s1 , sj ) = Maxsi ∈Γ−1 (sj ) (D(s1 , si ) + l(si , sj ))

2.3.2 Graphe potentiel-tâches ou graphe MPM


Le graphe potentiel-tâches, aussi appelé graphe MPM est une modélisation d’un projet
qui permet une planification dans le temps des différentes tâches : c’est un ordonnancement.
Soit un projet décomposé en n tâches élémentaires 1, 2, . . . , n. Pour chaque tâche i, il est
donné sa durée di et les tâches antérieures c’est-à-dire les tâches qui doivent être achévées
pour que la tâche i puisse commencer.

Tâches Durées Tâches antérieures


.. .. ..
. . .
i di j, k
.. .. ..
. . .

Définition
Soient G = (S, A, l) le graphe potentiel-tâches associé au projet avec S = {α, 1, 2, . . . , n, ω}
où α désigne le début et ω la fin du projet, considérés comme des tâches fictives de durée
nulle. (i, j) ∈ A si la tâche i est antérieure ‘a la tâche j. La longueur ou le poids de l’arc
(i, j) est l(i, j) = di . Il est claire que G est orienté strict et sans circuits.

15
Notions de dates
La date au plus tôt ti d’une tâche i est la date la plus rapprochée (optimiste) à laquelle
i peut commencer. On a : tα = 0 et tω est la durée minimum du projet.
(
tα = 0
ti = Maxj∈Γ−1 (i) (tj + di ) pour i ∈ {1, . . . , n, ω}

La date au plus tard Ti d’une tâche i est la date la plus tardive (pessimiste) à laquelle
i doit commencer pour que la durée minimale de réalisation du projet soit respectée c’est-
à-dire Tω = tω . Les dates au plus tard se calcul par un compte à rebours à partir de Tω
et
Ti = Minj∈Γ(i) (Tj − di ) pour i = n, n − 1, . . . , 2, 1
on également
Ti = D(α, ω) − D(i, ω)
.
La date de fin au plus tard Ti′ d’une tâche i est la date la plus pessimiste de fin d’une
tâche et se calcul par la formule suivant :

Ti′ = Minj∈Γ(i) (tj − di ) pour i = n, n − 1, . . . , 2, 1

Exemple : On considère un projet qui comporte 7 tâches : a, b, c, d, e, f, g.

Tâches a b c d e f g
Durées 4 3 6 2 8 7 1
Tâches antérieures a,b b c,d,e c
On obtient le graphe potentiel-tâches G = (S, A, l) ci-dessous, où S = {deb, a, b, c, d, e, f, g, f in}
4 6
a c g

3 6 1

3 2 7
deb b d f fin

Tâches deb a b c d e f g fin


Durées 0 4 3 6 2 8 7 1 0
ti 0 0 0 4 3 0 10 10 17
Ti 0 0 1 4 8 2 10 16 17

Les marges
La marge totale est le délai M T (i) = Ti − ti pouvant être accordé à une tâche sans
repousser la durée minimal du projet. On dit qu’une tâche i est critique si M T (i) = 0. La
succession de taches qui imposent la durée minimale du projet est appelée chemin critique.

16
La marge libre d’une tâche i est le délai M L(i) pouvant être accordé au commencement
de la tâche sans modifier la marge totale des tâches qui suivent.

M L(i) = Minj∈Γ(i) (tj − di ) − ti

ou encore
M L(i) = Ti′ − ti
. Contrairement à la marge totale, la marge libre peut être consommée sans aucune consé-
quence sur les tâches qui suivent dans le projet. La marge libre d’une tâche est toujours
inférieure ou égale à sa marge totale.

2.3.3 Graphe potentiel-étapes ou graphe PERT


Le graphe potentiel-étapes ou graphe PERT est un graphe orienté valué strict et sans
circuits dont les sommets représentent la fin d’une tâche et le début d’une autre et dont
les arcs représentent les tâches.

Définitions
Les successives se suivent dans le temps et sont représentées par un chemin. Par exemple
les tâches a, b, c sont successives :
a b c
1 2 3 4

Les tâches simultanées ont le même début d’exécution. Par exemple les tâches a, b sont
simultanées :

a
1 3

Les tâches convergentes aboutissent à la même étape. Par exemple a, b sont conver-
gentes :

a
3 1

Les contraintes de liaison apparaissent quand un tâche appartenant à une suite de


tâches successives ne peut être exécutée avant qu’une autre tâche, n’appartenant pas à
cette suite, ne soit achevée.

17
b c g
1 2 3 4

d e f
5 6 7 8

f ne peut pas commencer avant que c ne soit achevée même si e est terminée. On ne
peut pas avoir le graphe suivant :
b
1 2 6

c g

d e f
3 4 5 7

car cela signifirait que e doit être achevée pour que g commence, ce qui n’est pas né-
cessaire.

les tâches fictives sont introduites pour éviter que deux tâches soient à la fois simulta-
nées et convergentes.

Construction d’un graphe PERT


Il est claire que le graphe PERT à construire est sans circuits. On peut donc classer
les sommets par niveaux. On trace un graphe des niveaux en reliant les tâches successives
entre deux niveaux consécutifs. Puis on trace le graphe PERT à partir de ce graphe de
mannière à ce que toutes les tâches aboutissent à une étape et que l’antériorité des tâches
soit respectée. Noter que toutes les tâches du niveau 1 sont simultanées et celle du dernier
niveau sont convergentes.

2.4 Cas où les longueurs sont positives


Soit G = (S, A, l) un graphe orienté strict où S = {s1 , s2 , . . . , sn }.

2.4.1 Algorithme de Dijkstra


1. Initialisation
S ′ = {s2 , s3 , . . . , sn }
λ(s0 ) = 0
λ(si ) = l(s1 , si ) si si est un successeur de s1 sinon λ(si ) = ∞
2. Selection d’un sommet
Sélectionner sj ∈ S ′ tel que λ(sj ) = Minsi ∈S ′ (λ(si )
Faire S ′ ← S ′ − {sj }
Si S ′ est vide FIN
Sinon aller en 3
3. Calcul des valeurs de λ
Faire pour tout si à la fois dans Γ(sj ) et dans S ′
λ(si ) ← Min(λ(si ), λ(sj ) + l(sj , si ))
et retourner en 2

18
L’algorithme considère les sommets dans un ordre qui dépend des valeurs λ(si ) appelées
labels. A la fin on a λ(si ) = d(s1 , si ) pour tout si ∈ S.

2.4.2 Exemple d’application


On considère le graphe suivant :
4
b d

7
2 5
1
a 5 e

1 2 3

7
c f

On obtient alors :

Sommets a b c d e f
Initialisation 0 7 1 ∞ ∞ ∞
..
Itération 1 . 6 1 ∞ 3 8
.. ..
Itération 2 . 5 . 8 3 8
.. .. ..
Itération 3 . 5 . 8 . 6
.. .. .. ..
Itération 4 . . . 8 . 6
.. .. .. .. ..
Itération 5 . . . 8 . .
On obtient une arborescence de parcours

b d

2 5
1
a e

1 2

c f

2.5 Cas où les longueurs sont quelconques


Soit G = (S, A, l) un graphe orienté strict où S = {s1 , s2 , . . . , sn }.

2.5.1 Algorithme de Bellmann


1. Initialisation
λ0 (s1 ) = 0

19
λ0 (si ) = ∞ pour tout si 6= s1
k=1
2. A l’itération k
Faire λk (s1 ) = 0
et λk (si ) = Min(λk−1 (si ), Minsj ∈Γ−1 (si ) (λk−1 (sj ) + l(sj , si ))) pour tout si 6= s1

3. Si λk (si ) = λk−1 (si ) pour tout i alors FIN


Si k ≤ n − 1 aller en 2 avec k ← k + 1
Si k = n alors il existe un circuit absorbant

2.5.2 Exemple d’application


On considère le graphe suivant :
4
b d

7 1
2
2
a 2 e

8 3
-2
2
c f

On obtient alors :

Sommets a b c d e f
Initialisation 0 ∞ ∞ ∞ ∞ ∞
Itération 1 0 7 8 ∞ ∞ ∞
Itération 2 0 7 8 11 8 9
Itération 3 0 7 6 10 8 9
Itération 4 0 7 6 10 8 8
Itération 5 0 7 6 10 8 8
On obtient une arborescence de parcours

2.6 Exercices
2.6.1 Exercice 1
Déterminer le graphe potentiel-étapes (graphe PERT) et une arborescence de chemins
minimaux du projet suivant :

Tâches a b c d e f g
Durées 4 3 6 2 8 7 1
Tâches Préalables a,b b c,d,e c

20
2.6.2 Exercice 2
Reprendre l’exemple du paragraphe 4.2 du cours. Dérouler l’algorithme de Dijkstra et
déterminer une arborescence de chemins minimaux.

2.6.3 Exercice 3
Reprendre l’exemple du paragraphe 5.2 cours. Dérouler l’algorithme de Bellman et dé-
terminer une arborescence de chemins minimaux.

2.6.4 Exercice 4
Soit G = (S, A, l) un graphe value avec S = {1, . . . , 7, 8, 9}, défini par sa matrice
M = (mij )ij telle que mij = l(i, j).

Sommet x Sommet y l(x, y) Sommet x Sommet y l(x, y)


1 4 4 1 5 9
1 7 2 2 9 2
3 2 1 3 9 8
4 8 5 5 2 1
5 3 4 6 9 8
7 3 7 7 8 2
8 2 7 8 3 3
8 6 4

1. Montrez que ce graphe est sans circuit (on pourra donner simplement un ordre topo-
logique des sommets, sans justification supplémentaire).
2. Résolvez le problème du plus court chemin de 1 à 9. On justifiera le choix de l’algo-
rithme, et on n’oubliera pas de donner à la fin un chemin optimal (pas seulement sa
valeur).
3. On suppose maintenant que la valeur d’un chemin est non plus la somme des lon-
gueurs des arcs mais leur produit. Indiquez comment modifier l’algorithme utilisé
à la question 2 pour trouver un chemin minimum (indiquer simplement la/les mo-
dification(s) ; il n’est pas nécessaire de prouver la validité du nouvel algorithme).
Appliquez votre algorithme modifié sur le graphe donné plus haut, pour trouver un
chemin optimal de 1 à 9.
4. On suppose maintenant que la valeur d’un chemin est non plus la somme des lon-
gueurs des arcs ni leur produit mais la plus petite longueur des arcs. Indiquez com-
ment modifier l’algorithme utilisé à la question 2 pour trouver un chemin maximum.
(Indiquer simplement la/les modification(s) ; il n’est pas nécessaire de prouver la va-
lidité du nouvel algorithme). Appliquez votre algorithme modifié sur le graphe donné
plus haut, pour trouver un chemin optimal de 1 à 9.

2.6.5 Exercice 5
Une entreprise commande la réalisation d’un projet informatique. Un analyste est
chargé de le réaliser et de fournir au plus tôt au client un planning d’exécution du projet.

21
Après avoir recensé les différentes opérations, leurs durées en jours et le matériel ou le
personnel nécessaire à leur réalisation, on dispose du tableau suivant :

Tâche Tâches antérieures Durée Personnel ou Matériel


A C 5
B L 3 Terminal, Programmeur
C 3 Programmeur
D C 2 Programmeur
E D,I,O 6
F 4 Programmeur
G A,D,N 1
H A,F 3
I C,P 4 Programmeur
J G,H,M 2 Terminal
K B,G,J 4
L 5
M B,H 1
N A,F 4
O D,F,N 5 Terminal
P C 3 Terminal, Programmeur
Q B,H,L 5
Deux Programmeurs et un Terminal sont affectés à ce projet. Toute tâche commencée
par un programmeur doit être achevée par lui.
1. Apres avoir défini le graphe des niveaux, vous tracerez le réseau PERT associe au
projet.
2. Vous tracerez ensuite le chronogramme en portant chaque tache à sa date de début
au plus tôt et en indiquant les marges libres en pointille.
3. Donner le chemin critique et sa durée.
4. Sur le chronogramme, vous noterez en indice des taches et entre parenthèses les
moyens nécessaires à son exécution en utilisant les codes suivant : T pour Terminal
et P pour Programmeur. Vous indiquerez alors les plages horaires ou on ne dispose
pas de suffisamment de personnel ou de matériel.
5. En utilisant les marges libres des taches, vous proposerez une solution pour remédier
le plus efficacement aux problèmes précédents. Le cas échéant, une augmentation de
la durée du projet pourra être envisagée.
6. Vous tracerez un nouveau chronogramme qui vous permettra d’établir votre plan-
ning : pour chaque tache on indiquera sa date de début au plus tôt et sa date de fin
au plus tard.
7. Le programmeur affecte à la réalisation de la tache I est absent 3 jours. Cela a-t’il
une répercussion sur le délai du projet ? Même question si le terminal est en panne
pendant 2 jours a la date 12.

22
Chapitre 3

Réseaux de transport et Flots

3.1 Flot dans un réseau de transport


3.1.1 Réseau de transport
Un réseau de transport est un graphe R = (X, A, c) valué positivement sans boucle
ayant deux ensembles disjoints S ⊂ X, ensemble des entrées (ou sources) et P ⊂ X
l’ensemble des sorties (ou puits). Les valuations des arcs sont appelées capacités. On verra
plus loin qu’on peut, sans perdre en généralité, se ramener à un réseau à une entrée et
sortie uniques.
On rappelle que pour tout Z ⊂ X on note ω + (Z) (resp. ω − (Z)) l’ensemble des arcs
sortant (entrant) de Z c’est-à-dire les arcs ayant l’extrémité initiale dans Z (resp. X − Z)
et l’extrémité finale dans X − Z (resp. Z).

Exemple
[4] [2]
s1 x1 x2 p1
[2]
[1] [5]

[3] [6] [7] [8]


s2 [2] [2]
[2]
[1] [5]

[2] [3] [2]


s3 x3 x4 p2

3.1.2 Flot
Un flot sur un réseau de transport R = (X, A, c) est une application f : A → N qui
vérifie :
1. 0 ≤ f (a) ≤ c(a) pour tout a ∈ A
P P
2. a∈ω + ({x}) f (a) = a∈ω − ({x}) f (a) pour tout x ∈ X − (S ∪ P )
P P P P
3. a∈ω + ({s}) f (a)− a∈ω − ({s}) f (a) ≥ 0 pour tout s ∈ S et a∈ω − ({p}) f (a)− a∈ω + ({p}) f (a) ≥
0 pour tout p ∈ P .

23
+ et f − (Z) =
P
P on pose d’une mannière générale pour tout Z ⊂ X, f (Z) =
Si a∈ω + (Z) f (a)
a∈ω − (Z) f (a) alors les conditions ci-dessus deviennent
1. 0 ≤ f (a) ≤ c(a) pour tout a ∈ A
2. f + (x) = f − (x) pour tout x ∈ X − (S ∪ P )
3. f + (s) − f − (s) ≥ 0 pour tout s ∈ S et f − (p) − f + (p) ≥ 0 pour tout p ∈ P .

Proposition 13 Avec les notations précédentes, on a : f + (S) − f − (S) = f − (P ) − f + (P ).

Preuve :
X
+ −
0= x∈X (f (x) − f (x)) (3.1)
X X X
+ − + − + −
= x∈S (f (x) − f (x)) + x∈X−(S∪P ) (f (x) − f (x)) + x∈P (f (x) − f (x))
(3.2)
X X
+
= x∈S (f (x) − f − (x)) + x∈P (f
+
(x) − f − (x)) (3.3)
= (f + (S) − f − (S)) + (f + (P ) − f − (P )).  (3.4)

La quantité f + (S) − f − (S) est le flot résultant sortant de S et f − (P ) − f + (P ) est le flot


résultant entrant dans P . La proposition précédente affirme la loi de conservation pour
le flot qui traverse le réseau de transport. On appelle valeur du flot f et on note v(f ) la
quantité f + (S) − f − (S) = f − (P ) − f + (P ).

Proposition 14 L’étude d’un flot dans un réseau de transport quelconque peut toujours
se ramener à l’étude d’un flot dans un réseau de transport à entrée et sortie uniques.

Preuve : Soit R = (X, A, c) un réseau et posons S = {s1 , s2 , ..., sr } et P = {p1 , p2 , ..., pt }.


A ce réseau, on ajoute un sommet s avec les arcs (s, si ) (i = 1, 2, . . . , r) de capacité ∞ et le
sommet p avec les arcs (pj , p) (j = 1, 2, . . . , t) de capacité ∞. On obtient ainsi un nouveau
réseau R′ à entrée et sortie unique et on pose S ′ = {s} et P ′ = {p}. Il reste à montrer que
tout flot f sur R correspond à un flot sur R′ de même valeur et inversement.
Soit donc f un flot sur R. On définit f ′ comme suit : f ′ /A = f et

f ′ ((s, si )) = f + (si ) − f − (si ) pour i = 1, 2, . . . , r

et
f ′ ((pj , p)) = f − (pj ) − f + (pj ) pour j = 1, 2, . . . , t
On vérifie (en exercice) facilement que f ′ est bien un flot sur R′ et que v(f ) = v(f ′ ).
Inversement, étant donné un flot sur R′ on en déduit directement un flot sur R de même
valeur en considérant sa restriction sur les arcs de R. 

Dans un flot f sur un réseau à une entrée et sortie unique, l’entrée est une source et
la sortie est un puits (au sens usuel définit plus haut) et on a : v(f ) = f + (s) = f − (p) car
f + (p) = f − (s) = 0. En ajoutant au réseau l’arc (p, s) de capacité infinie on obtient un
réseau dans lequel la loi de conservation du flot est vérifiée en tout sommet. Dans toute
la suite du chapitre, on suppose que les réseaux considérés sont à une entrée
et sortie uniques.
Proposition 15 Si R = (X, A, c) un réseau et Z ⊂ X alors f + (Z) = f − (Z)
Preuve : On somme l’égalité de la loi de conservation sur Z. Après des simplifications
appropriées on obtient le résultat. 

24
3.2 Flot maximum et coupe minimum
3.2.1 Définitions et propriétés
Soit R = (X, A, c) un réseau. Une coupe de R est un ensemble d’arcs de R de la forme
suivante : K = ω + (Z) où Z ⊂ X tel que s ∈ Z Pet p ∈
/ Z. La capacité d’une coupe K est
la somme des capacités des arcs de K : c(K) = a∈K c(a).

Proposition 16 Pour tout flot f et toute coupe K sur un réseau R on a : v(f ) ≤ c(K)

Preuve : on a :
X
c(K) ≥ f + (Z) ≥ f + (Z) − f − (Z) = (f + (x) − f − (x)) = f + (s) = v(f ) 
x∈Z

Un flot maximum est un flot de valeur la plus grande possible. De même une coupe
minimum est une coupe de capacité la plus petite possible.

Corollaire 2 Pour tout flot f et toute coupe K sur un réseau R si v(f ) = c(K) alors f
est un flot maximum et K est une coupe minimum.

3.2.2 Chaîne augmentante ou améliorante


Soit R = (X, A, c) un réseau et s et p l’entrée et la sortie de R. Un arc est saturé si le
flot qui le traverse est égal à sa capacité. Un chemin ou une chaîne est saturé(e) si il ou elle
contient un arc saturé. Un chemin insaturé allant de s à p est dit chemin augmentant ou
améliorant. Une chaîne augmentante ou améliorante est une chaîne de s à p dont les arcs
parcourus dans le sens direct sont insaturés et ceux parcourus dans le sens inverse sont
traversés par un flot strictement positif.

Proposition 17 S’il existe pour un flot f sur un réseau R une chaîne augmentante alors
il existe un flot f ′ tel que v(f ) < v(f ′ ).

Preuve : Soit µ = (a1 , . . . , ak ) une chaîne augmentante avec a1 = s et ak = p les


extrémités. On note µ+ l’ensemble des arcs de µ parcourus dans le sens de s à p et µ− celui
des arcs de µ parcourus dans le sens inverse. On pose :

τ (µ) = Mini=1,2,...,k τ (ai )

où τ (ai ) = c(ai ) − f (ai ) si ai ∈ µ+ et τ (ai ) = f (ai ) > 0 lorsque ai ∈ µ− . On définit le flot


f ′ par :
 f (a) + τ (µ) si a ∈ µ+

f ′ (a) = f (a) − τ (µ) si a ∈ µ−


f (a) si a ∈

Vérifier (en exercice) que f ′ est bien un flot sur R. On a v(f ′ ) = v(f ) + τ (µ) et comme
τ (µ) > 0, v(f ′ ) > v(f ). 

Proposition 18 S’il n’existe pas pour le flot f sur R une chaîne augmentante alors il
existe une coupe K telle que c(K) = v(f ).

Preuve : Il suffit de prendre K = ω + (Z) avec Z est constitué par s et les sommets x
tels qu’il existe une chaîne insaturée allant de s à x. Il est claire que p ∈
/ Z. Vérifier (en

25
exercice) que pour tout a ∈ K = ω + (Z) on a f (a) = c(a) et que f (a) = 0 si a ∈ ω − (Z).
On peut alors écrire :
X
c(K) = f + (Z) = f + (Z) − f − (Z) = (f + (x) − f − (x)) = f + (s) = v(f ). 
x∈Z

Les preuves des propositions suivantes qu’on laisse en exercice, sont des conséquences di-
rectes des propositions précédentes.

Proposition 19 Un flot sur un réseau est maximum si et seulement s’il n’existe pas de
chaîne augmentante. 

Proposition 20 Dans un réseau la valeur d’un flot maximum est égale à la capacité d’une
coupe minimum. 

3.3 Algorithme de Ford-Fulkerson


Soit R = (X, A, c) un réseau, s son entrée et p sa sortie. Un flot sur R est dit complet
s’il n’existe pas de chemin insaturé allant de s à p.

3.3.1 Algorithme de recherche d’un flot complet


On part d’un flot f (par exemple tel que v(f ) = 0) et on l’améliore pas à pas par une
procédure de marquage.

algorithme
1. Marquer s
2. Soit x un sommet marqué et non encore examiné ;
Marquer y par (+x) si y est un successeur non marqué de x avec f (x, y) < c(x, y)
3. Si p est marqué (on a un chemin augmentant), aller en (4)
Si tous les sommets marqués sont examinés alors le flot est complet ;
sinon aller en (2)
4. Améliorer le flot
Effacer les marques
Aller en (1)

Exemple
En trois dépôts A, B, C, on dispose respectivement de 20, 35 et 10 tonnes de marchan-
dises. On a des demandes de 25, 20 et 20 tonnes de marchandises aux destinations D, E, F .
Il existe des possibilités de transport à l’aide de camoins. Ces possibilités sont rapportées
dans le tableau suivant :

D E F
A 15 10 0
B 15 5 5
C 5 0 10
Déterminer un plan de transport permettant de transporter des dépôts aux destinations
une quantité maximum.

26
Ce problème se modélise aisément par un réseau de transport R :
[15]
A D
[20] [15] [10] [25]

[35] [5][5] [20]


s B E p

[10] [5] [20]

[10]
C F

On applique l’algorithme et on obtient les chemins améliorants suivants :

Chemins τ
sADp 15
sAEp 5
sBDp 10
sBEp 5
sBFp 5
sCFp 10
Le flot obtenu a pour valeur 50 et il est complet (justifier).

3.3.2 Algorithme de recherche d’un flot maximum (Ford-Fulkerson)


On part, par exemple d’un flot complet. On l’améliore tant qu’il existe des chaînes
augmentantes.

algorithme
1. Marquer l’entrée s
2. Soit x un sommet marqué non examiné
Etudier tous les successeurs y de x :
Marquer y par (+x) s’il est non marqué et si f (x, y) < c(x, y).
Etudier tous les prédécesseurs z de x :
Marquer z par (−x) s’il est non marqué et si f (z, x) > 0
3. Si p est marqué (on a une chaîne augmentante), aller en (4)
S’il reste des sommets marqués non examinés aller (2)
sinon le flot est maximum, FIN.
4. Améliorer le flot à l’aide de la chaîne améliorante ayant permis de marquer p.
Effacer les marques et aller en (1)

En application de l’algorithme à l’exemple précédent on obtient un flot maximum de


valeur 55. Une coupe minimale est K = ω + (Z) avec Z = {s, B}. Elle est telle que tous les
arcs a ∈ ω + (Z) sont saturés et le flot qui traverse tout arc a ∈ ω − (Z) est nul sauf le flot
traversant l’arc (p, s).

27
3.4 Exercices
3.4.1 Exercice 1
Prouver que le flot rapporté ci-dessous n’est pas maximal. L’augmenter. Combien y
a-t-il de flots de valeur maximale ? La valuation des arcs represente le flot sur la capacité.
B
10/10 10/10 0/10

10/20 10/10
s A C F
0/10 10/20

10/10
0/10 p
D

10/10

3.4.2 Exercice 2
On considère dans cet exercice un problème de transport de marchandises. Plus pré-
cisément, une entreprise extrait une matière première sur trois sites de production p1 , p2
et p3 . L’entreprise possède trois usines u1 , u2 et u3 . Des camions permettent d’amener la
matière première des sites de productions aux usines. Plus précisément, la matière extraite
en p1 peut être amenée en u1 et u2 , celle extraite en p2 peut être amenée en u1 , u2 et u3 ,
celle extraite en p3 peut être amenée en u2 et u3 . Dans les usines, la matière première est
utilisée pour fabriquer des produits destinés à la vente.
Le but pour l’entreprise est de produire le plus possible, donc d’utiliser le maximum de
matière première. Les trois sites de productions p1 , p2 et p3 peuvent extraire au maximum
respectivement 15, 15 et 25 milliers de tonnes (Mt) de matière. Les capacités des liaisons
entre un site pi et une usine uj sont de 10 Mt de matière première. Enfin, en raison de
capacité de production limitée, l’usine u1 peut utiliser au maximum 30 Mt de matière
première, l’usine u2 au maximum 15 Mt et l’usine u3 au maximum 30 Mt.
1. Modéliser la situation par un réseau de transport.
2. Faites passer un flot où de p1 partent 10 Mt vers u1 et 5 Mt vers u2 , de p2 partent 5
Mt vers u1 , 5 Mt vers u2 et 5 Mt vers u3 , de p3 partent 5 Mt vers u2 et 10 Mt vers
u3 . Ce flot est-il complet ?
3. Appliquez l’algorithme de Ford et Fulkerson pour trouver un flot maximum. Donnez
également une coupe de capacité minimum.
4. On voudrait modéliser les deux nouvelles contraintes suivantes.
(a) En raison de limites sur les engins travaillant sur les sites p1 et p2 , la quantité
totale de matière première extraite sur les sites p1 et p2 ne peut dépasser 25.
(b) En raison de limites sur les personnels travaillant dans les usines p2 et p3 , la
quantité totale de matière utilisée dans les usines u2 et u3 ne peut dépasser 35.

28
3.4.3 Exercice 3
Soit G = (S, A) un graphe orienté, et soient s et t deux sommets particuliers. Un s − t-
chemin est un chemin orienté débutant en s et terminant en t. Deux s − t-chemins sont
dits arc-disjoints s’ils n’ont pas d’arc en commun (mais ils peuvent avoir des sommets en
commun).

0 8

1 6 t

s 5 7 9

Quel est le nombre maximal de s − t-chemins arc-disjoints de la figure ? Cette solution


est-elle unique ? Justifiez vos réponses (on pourra modéliser ce problème avec des flots).

29
Chapitre 4

Graphe non orienté et Problème de


l’arbre couvrant minimum

4.1 Graphe non orienté


Lorsque l’orientation des arcs ne joue aucun rôle, on parle de graphe non orienté ou
simplement de graphe. Plus formellement on a :

4.1.1 Définition
Un graphe non orienté G est défini par la donnée d’un ensemble S dont les éléments
sont appelés des sommets ou noeuds et d’un ensemble E dont les éléments sont des sous
ensembles à 1 ou 2 éléments de S appelées arêtes. On le note G = (S, E). Le nombre n de
sommets de G est appelé l’ordre de G et le nombre m des arêtes de G est appelée la taille
de G.

Exemple
Soit G = (S, E) le graphe défini par : S = {x, y, z} et E = {a, b, c, d} où b = {z, x},
c = {x, y} et d = {z, y}.

d
b y

Etant donnée une arête u = {x, y}, on dit que les sommets x et y sont les extrémités
de u. On dit également de les sommets x et y sont adjacents et que l’arc u est incident à
x et y.

30
4.1.2 Arêtes et degré
Deux arêtes sont adjacentes si elles sont incidentes à au moins une extrémité commune.
Le degré du sommet x, noté dG (x) ou plus simplement d(x) est le nombre d’arêtes ayant
x pour extréminté.
Les resultats (Proposition et Corollaire) du paragraphe 1.1.2 restent valables.
Etant donné X ⊂ S, on appelle cocycle de G l’ensemble w(X) des arêtes ayant une
extrémité dans X et l’autre extrémité dans S − X.

4.1.3 Chaîne, chaîne élémentaire, cycle, cycle élémentaire


Une Chaîne de longueur k est une suite µ = e1 , e2 , . . . , ek de k arêtes telle que deux
arêtes consécutives sont adjacentes. On notera µ = x1 e1 x2 . . . xk ek xk+1 , si l’on veut préci-
ser les sommets rencontrés. Les sommets x1 et xk sont appelés les extrémités de la chaîne
µ. On dit que la chaîne µ rélie les sommets x1 et xk .

Une chaîne élémentaire est un chaîne telle qu’en la parcourant, on ne rencontre pas
deux fois le même sommet. De façon équivalente, on peut définir un chaîne comme une
chaîne dont les sommets sont tous de degré 2 sauf ses extrémintés. La proposition 2 est
valable pour les chaînes.

Un cycle est une chaîne dont les extrémités coïncident.

Un cycle élémentaire est un cycle minimal pour l’inclusion i.e ne contenant strictement
aucun autre cycle.

4.2 Représentation d’un graphe


4.2.1 Cas des graphes non orientés
Matrice d’incidence (sommets-arêtes)
La matrice d’incidence sommets-arêtes d’un graphe non orienté G = (S, E) est la ma-
trice P = (pxu ) à coefficients entiers : 0 et 1 tels que pour tout u = {x, y} ∈ E, tous les
coefficients de la colonne u sont nuls sauf pxu = pyu = 1.

Si x est une ligne de P alors

w(x) = {u / pxu = 1}

Exemple
a
1 2
b
c
d
4 3
e
On obtient la matrice d’incidence :

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

Matrice d’adjacence (sommets-sommets)


La matrice d’adjacence sommets-sommets d’un graphe non orienté G = (S, E) est la
matrice Q = (qxy ) à coefficients entiers : 0 et 1 tels que pour tout x et y dans S on a :

qxy = 1 si et seulement si {x, y} ∈ A.

La matrice d’adjacence de l’exemple précédent est


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

Tableaux α et β
On considère ici que les sommets rangés et sont désignés par leur rang. Ainsi on pose
S = {1, 2, . . . , n}. Les tableaux α() et β() sont respectivement des matrices unilignes de
dimension n + 1 et 2m. Pour chaque sommet i, la liste des sommets successeurs de i est
contenue dans le tableau β() à partir de la case numéro α(i). Et donc l’ensemble des
successeurs de i est contenu entre les cases α(i) et α(i + 1) − 1 du tableau β().

α(1) = 1
α(i + 1) = d(i) + α(i)

4.3 Quelques graphes particuliers


Soient G = (S, X) un graphe (orienté ou non), A une partie de S et Y une partie de
X.

On appelle sous-graphe engendré par A, le graphe noté GA dont les sommets sont les
éléments de A et dont les arcs ou arêtes sont les arcs ou arêtes de G ayant leurs deux
extrémités dans A.

On appelle graphe partiel engendré par Y , le graphe noté G[Y ] ayant le même ensemble
X de sommets que G et dont les arcs ou arêtes sont ceux de Y .

Le sous-graphe partiel engendré par A et Y est le graphe partiel de GA engendré par Y .

On dit G est simple (resp. strict) si G est non orienté (resp. orienté), sans boucle et
deux sommets quelconques sont tous deux incidents à au plus une arête (resp. un arc). Si
G est strict alors le graphe complémentaire de G a le même ensemble de sommets que G
et comme arcs les arcs complémentaires à X :

(x, y) ∈ X → (x, y) ∈
/ X̄

32
(x, y) ∈
/ X → (x, y) ∈ X̄
On dit que G est biparti si l’ensemble des sommets S peut être partitionné en deux
sous ensembles S1 et S2 de tel sorte que, toute arête a une extrémité dans S1 et l’autre
dans S2 .

On dit que G est complet si G est simple (resp. strict) tel que deux sommets distincts
quelconques sont reliés par une seule arête (resp. un seul arc).

4.4 Définitions et propriétés des arbres


Un arbre est un graphe simple connexe sans cycles. Un graphe simple sans cycles qui
n’est pas nécessairement connexe est appelé une forêt (chaque composante connexe est un
arbre). Une chaîne élémentaire est un arbre.

Exemples d’arbre
a b d

e c f 1 2 3 4

g h i

Proposition 21 Un arbre tel que n ≥ 2 possède au moins deux sommets pendants (ie de
degré 1).

Preuve : Il suffit de considérer une chaîne µ = {s0 , e1 , s1 , . . . , sk−1 , ek , sk } de longueur


la plus grande possible (maximale) où k ≥ 1 car n ≥ 2. On montre par l’absurde que
s0 et sk sont des sommets pendants. Par exemple supposons que s0 n’est pas pendant
alors il existerait une arête f 6= e1 incidente à s0 et soit y l’autre sommet incident à f . Si
y ∈ {s0 , s1 , . . . , sk } alors l’arbre contiendrait un cycle ce qui est absurde ; sinon la chaîne
σ = {y, f, s0 , e1 , s1 , . . . , sk−1 , ek , sk } contiendrait µ ce qui est également absurde. 

Proposition 22 Si G est un arbre alors m = n − 1.

Preuve : On fait une preuve par récurrence sur n. Il est facile d’établir le résultat pour
n = 1 car un arbre ne peut contenir une boucle. On suppose que n > 1. D’après la
proposition 21, il existe un sommet pendant s. Il est facile de voir que le graphe G′ = G−{s}
est un arbre et donc par hypothèse de récurrence on a : mG′ = nG′ −1. Comme mG′ = mG −1
et nG′ = nG − 1 on obtient mG = nG − 1. 

Proposition 23 Dans un arbre, deux sommets quelconque sont reliés par une chaîne élé-
mentaire unique.

33
Preuve : Soient x et y deux sommets d’un arbre. Il existe une chaîne élémentaire qui
relie x et y car le graphe est connexe et supposons qu’il existe une autre chaîne distincte
de la précédente qui les relie. En concaténant les deux chaînes on obtient un cycle ce qui
contredit le fait que le graphe est acyclique.

Proposition 24 Une arête e ∈ E est un isthme de G = (S, E) si et seulement si e


n’appartient à aucun cycle de G

Preuve : Soit G = (S, E) un graphe connexe (cela suffit). Si e = {s, t} ∈ E n’est pas
un isthme alors il existe dans G − {e} une chaîne µ reliant s et t les extrémités de e et
donc en concaténant µ et e on obtient un cycle contenant e. Donc si e n’appartient à
aucun cycle de G alors e est un isthme. Inversement supposons que e appartient à un cycle
c = (s0 , e, s1 , e2 , s2 , . . . , sk−1 , ek , s0 ) et x et y deux sommets de G − {e}. Comme G est
connexe il existe une chaîne σ = {x = t0 , f1 , t1 , f2 , . . . , tk−1 , fk , tk = y} qui relie x et y.
Si σ est G − {e} alors G − {e} est connexe et e n’est pas un isthme. Sinon e = fi avec
i = 1, . . . , k et posons s0 = ti−1 et s1 = ti . Il suffit de considérer la chaîne obtenu par
la concaténation des trois chaînes suivantes : {x = t0 , f1 , . . . , ti−1 }, {s1 , e2 , . . . , ek , s0 } et
{ti , fi+1 , . . . , fk , tk = y}. Elle est dans G − {e} et donc G − {e} est connexe. Donc si e est
un isthme alors e n’appartient à aucun cycle de G. 

Corollaire 3 Toute arête d’un arbre est un isthme. 

Théorème 1 Soit G un graphe. Les assertions suivantes sont équivalentes :


1. G est un arbre.
2. G est connexe et m = n − 1.
3. G est acyclique et m = n − 1.
4. G est connexe et toute arête est un isthme.
5. Deux sommets quelconques de G sont reliés par une et une seule chaîne élémentaire.

Preuve : (En exercice)

4.5 Arbre couvrant


Soit G = (S, E) un graphe. Un arbre de G ou encore arbre couvrant de G est un graphe
partiel connexe et sans cycle de G. une forêt de G ou encore forêt couvrante de G est un
graphe partiel sans cycle de G (non nécessairement connexe).

Proposition 25 Tout graphe connexe a un arbre couvrant.

Preuve : Il suffit de supprimer tous les isthmes. 

Corollaire 4 Si G est connexe alors m ≥ n − 1 et on a l’égalité si et seulement si G est


un arbre.

Preuve : G admet un arbre T couvrant, donc m ≥ mT = nT − 1 = n − 1. comme T est


un graphe partiel de G le cas de l’égalité n’est possible que lorsque G = T . 

Proposition 26 Un graphe partiel d’un graphe connexe G est un arbre couvrant de G si


et seulement s’il est connexe et minimal par rapport à la suppression d’arêtes.

34
Preuve : Soit H un graphe partiel d’un graphe connexe G.
Si H est un arbre couvrant de G alors H est connexe et toute arête e de H y est un
isthme donc H − {e} n’est pas connexe. Réciproquement supposons que H est connexe et
minimal par rapport à la suppression d’arêtes. Donc la suppression d’une arête quelconque
e de H augmente le nombre de composante connexe de H et l’arête e est un isthme. Donc
e n’appartient à aucun cycle et par conséquence H est acyclique et donc H est un arbre
couvrant. 

Proposition 27 Un graphe partiel d’un graphe connexe G est un arbre couvrant de G si


et seulement s’il est acyclique et maximal par rapport à l’ajout d’arêtes.

Preuve : Soit H un graphe partiel d’un graphe connexe G.


Si H est un arbre couvrant alors H est acyclique et soit e une arête quelconque de G n’ap-
partenant pas à H. Il existe une chaîne µ = {x, e1 , x1 , . . . , xk−1 , ek , y} reliant les extrémités
x et y de e. En concaténant µ et e on obtient le cycle C = (x, e1 , x1 , . . . , xk−1 , ek , y, e, x) ;
ce qui établit que la condition est nécessaire. Pour montrer qu’elle est suffisante supposons
que H est acyclique et maximal par rapport à l’ajout d’arêtes. soient x et y deux sommets
quelconques de H, il existe dans G une chaîne unique µ = {x0 = x, e1 , x1 , . . . , xk−1 , ek , xk =
y}. Si toutes les arêtes ei avec i = 1, 2, . . . , k sont dans H alors H est connexe. Si-
non on construit à partir de µ une chaîne dans H réliant x et y de la façon suivante :
Pour toute arête ei qui n’est pas dans H, il existe dans H une chaîne unique σi =
{xi−1 , ei1 , xi1 , . . . , eik , xi } qui rélie xi−1 et xi . On remplace xi−1 , ei , xi dans µ par σi . 

4.6 Problème de l’arbre couvrant


Soient G = (S, E, l) un graphe valué et H un arbre couvrant de G. On appelle poids de
H et on note l(H) la somme des poids des arêtes de H. Le problème de l’arbre couvrant
minimum est la déterminantion d’un arbre couvrant de poids le plus petit possible. On
présente ici deux algorithmes : celui de Kruskal et celui de Prim.

4.6.1 Méthode de Kruskal


Algorithme
Initialisation F = E et EH = ∅
Tant que |EH | < n − 1 Faire
Selectionner e ∈ F tel que l(e) soit minimum.
F = F − {e}
Si G[EH ∪ {e}] est acyclique alors EH = EH ∪ {e}
Fin Tant que

Exemple
On considère le graphe connexe suivant :

35
2
c f

5 6 7
10
11 1
a b e h

12 13 4 8

3
d g

En appliquant Kruskal on obtient l’arbre couvrant minimum suivant :


2
c f

5 6 7

1
a b e h

3
d g

Le poids de l’arbre est 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28.

4.6.2 Méthode de Prim


Soit G = (S, E, l) un graphe connexe valué. La méthode consiste à construire de proche
en proche un arbre couvrant minimum H = (T, F ). Pour ce faire on fixe un sommet
quelconque s0 .

Algorithme
Initialisation T = {s0 }, θ = ω(s0 ) et F = ∅ ;
Tant que S − T 6= ∅ Faire
Selectionner e ∈ θ tel que l(e) soit minimum.
Soit si l’extrémité qui n’est pas dans T ;
F = F ∪ {e}, T = T ∪ {si } et θ = (θ ∪ ω(si )) − (θ ∩ ω(si ))
Fin Tant que

4.7 Exercices
4.7.1 Exercice 1
Déterminer tous les arbres ayant six sommets.

4.7.2 Exercice 2
Montrer qu’un arbre qui a exactement deux sommets pendants est une chaîne élémen-
taire.

36
4.7.3 Exercice 3
Montrer qu’un arbre a au moins ∆ sommets pendants (∆ est le degré maximum).

4.7.4 Exercice 4
Montrer qu’une arête e d’un graphe G, connexe appartient à tout arbre couvrant de G
si et seulement si e est un isthme de G.

4.7.5 Exercice 5
Montrer que dans un graphe connexe G, une arête e est une boucle si et seulement si
e n’appartient à aucun arbre couvrant de G.

4.7.6 Exercice 6
Soit G = (X, E), un graphe connexe. On appelle distance de deux sommets x et y de
G la plus petite longueur des chaînes qui relient x et y, et on note d(x, y) cette distance.
On appelle centre du graphe G tout sommet x tel que la quantité M axy∈X d(x, y) soit la
plus petite possible.
Montrer que si G est un arbre alors il a soit un centre soit deux centres qui sont alors
voisins.

4.7.7 Exercice 7
Soit G = (X, E) le graphe valué défini par sa matrice d’adjacence M .

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12


x1 1 4
x2 1 4
x3 4
x4 4 4 1 5
x5 1 4
x6 4 7
x7 5 2
x8 1 2
x9 1 3
x10 3 4 7
x11 4 3
x12 4 7 2 2 7 3

1. En détaillant bien toutes les étapes, appliquez l’algorithme de Kruskal sur le graphe
G. Quel est le poids d’un arbre couvrant de poids minimal ?
2. En utilisant le même graphe que la question précédente, calculer le poids d’un arbre
couvrant de poids maximum. Donner un arbre de poids couvrant maximal.
3. Discuter des différences fondamentales entre l’algorithme de Kruskal et l’algorithme
de Prim. Comment résumer ces différences ?
4. Appliquez l’algorithme de Prim vu en cours pour calculer un arbre couvrant de poids
minimal du graphe G.

37
4.7.8 Exercice 8
La circulation en saison pluvieuse est difficile en zone forestières. Il convient alors de
déterminer les itinéraires les plus praticables entre tout couple de villages d’un canton
considèrée. Pour chaque tronçon routier, on dispose d’une évaluation notée entre 0 et 5
traduisant l’état du tronçon (0 : tronçon totalement praticable, 5 : tronçon totalement
impraticable). On suppose ici que chaque tronçon est à double sens et que l’évaluation est
la même pour chacun des sens.
On considère un graphe G = (X, U ) non orienté, où X est l’ensemble des villages du
canton et U l’ensemble des tronçons ; chaque arête u de U étant munie d’une évaluation
l(u) représentant l’état du tronçon u. La recherche d’itinéraires les plus praticables peut
se formuler comme un problème de recherche des chaînes minimax entre toute paire de
sommets du graphe. Dans ce problème, une chaîne µ a pour valeur l(µ) la plus grande
valuation des arêtes de la chaîne, c’est-à-dire l(µ) = M axu∈µ {l(u)}. On cherche donc à
déterminer, entre deux sommets quelconques du graphe, une chaîne de valeur minimale.
Soit A∗ un arbre couvrant de valeur minimale de G.
Partie 1 On considère le canton représenté par le graphe G1 = (X1 , U1 ) suivant :
4
2 6

2 4 4
5 3
5 5 3 4
1 3 5 7 9

1 3 2 2
4
4
4 8
1. Déterminer A∗1 un arbre couvrant de valeur minimale de G1 .
2. Considérons sur A∗1 la chaîne µ(x, y) joignant deux sommets quelconques x et y et
umax l’arête ou l’une des arêtes de plus forte valuation appartenant à cette chaîne.
Soit S et X1 − S les deux composantes connexes obtenue en supprimant umax dans
A∗1 et w(S) le cocycle de S dans G1 .
(a) Considérant la chaîne µ(2, 9) de A∗1 , déterminer umax et w(S). Vérifier que toute
arête de w(S) est de valeur supérieure ou égale à l(umax ).
(b) Déterminer dans G1 , un itinéraire le plus praticable entre 2 et 9. Cet itinéraire
est-il unique ? justifier.
Partie 2 On se place dans le cas général et on considère que le canton est représenté
par un graphe G = (X, U ).
1. Montrer que la propriété de la question (2a) est vraie dans le cas général.
2. Montrer que toute chaîne µ(x, y) de A∗ est une chaîne minimax de x à y dans G.
(NB : Il s’agit de montrer qu’elle est minimale).
3. Proposer une méthode générale pour déterminer les chaînes minimax reliant toute
paire de sommets. Suggérer une façon de discriminer parmi les éventuelles chaînes
minimax multiples.

38
Bibliographie

[1] C. Berge, Graphes, Gauthier-Villars, 1983


[2] C. Berge, Hypergraphs : Combinatorics of Finite sets, Vol. 45 of North-Holland Ma-
thematical library, Elsevier Science Publ. B.V., Amsterdam, 1989.
[3] M. Gondran et M. Minoux, Graphes et Algorithmes, Eyrolles, 1993.
[4] J.C. Fournier, Théorie des Graphes et Applications, Hermes-Lavoisier.
[5] Roseaux, Exercices résolus de Recherche Opérationnelle tome 1 : Graphe.

39