Vous êtes sur la page 1sur 40

COURS DE RO1 : THEORIE DES GRAPHES ET

APPLICATIONS
Dr Etienne Tna SORO
1
30 mars 2012
1. Universit de Cocody-Abidjan, UFR de Mathmatiques et Informatique ; 22 BP 582 Abidjan
22
Chapitre 1
Graphes orients
1.1 Dnitions et premires proprits
1.1.1 Sommets et arcs
Un graphe orient G est dni par la donne dun ensemble S dont les lments sont
appels des sommets ou noeuds et dun ensemble A dont les lments sont des couples
dlments de S appels arcs. On le note G = (S, A). Le nombre n de sommets de G est
appel lordre de G et m celui des arcs de G est appele la taille de G.
Exemple
Soit G = (S, A) le graphe orient dni 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
y
x
c
a
b
e
d
Etant donn un arc u = (x, y), on dit que le sommet x est lorigine ou lextrmit
initiale de u; le sommet y est le but ou lextrmit nale ou terminale de u. On dit aussi
que y est un successeur de x et que x est un prdcesseur de y. On dit galement que les
sommets x et y sont adjacents ou voisins et que larc u est incident x et y.
1.1.2 Demi-degr et degr
Deux arcs sont adjacents sils sont incidents au moins une extrmit commune.
Le demi-degr extrieur du sommet x, not d
+
G
(x) ou plus simplement d
+
(x) est le nombre
darcs ayant x pour extrmit initiale.
Le demi-degr intrieur du sommet x, not d

G
(x) ou plus simplement d

(x) est le nombre


darcs ayant x pour extrmit nale.
Le degr du sommet x, not d
G
(x) ou plus simplement d(x) est : d(x) = d
+
(x) +d

(x).
1
Proposition 1 La somme des degrs des sommets de G est gale deux fois la taille de
G.
Preuve : Il sut de remarquer que dans la somme des degrs chaque arc est compt
deux fois : une fois dans le demi-degr extrieur et une autre fois dans le demi-degr
intrieur.
Corollaire 1 Dans un graphe orient, le nombre de sommets de degrs impairs est pair.

Etant donn X S, on dnit :


w
+
(X) est lensemble des arcs ayant leur extrmit initiale dans X et leur extrmit
terminale dans S X.
w

(X) est lensemble des arcs ayant leur extrmit initiale dans XS et leur extrmit
terminale dans X.
w(X) = w
+
(X) +w

(X) est appel un cocycle du graphe.


1.1.3 Chane, chane lmentaire, cycle, cycle lmentaire
Une Chane de longueur k est une suite = a
1
, a
2
, . . . a
k
de k arcs telle que deux arcs
conscutifs sont adjacents. On notera = x
0
a
1
x
1
. . . x
k1
a
k
x
k
, si lon veut prciser les
sommets rencontrs. Les sommets x
0
et x
k
sont appels les extrmits de la chane . On
dit que la chane rlie les sommets x
0
et x
k
.
Une chane lmentaire est une chane telle quen la parcourant, on ne rencontre pas
deux fois le mme sommet. De faon quivalente, on peut la dnir comme une chane dont
les sommets sont tous de degr 2 sauf ses extrmits.
Proposition 2 De toute chane on peut extraire un chane lmentaire.
Un cycle est une chane dont les extrmits concident. Un cycle lmentaire est un
cycle dont tous les sommets sont de degr 2.
1.1.4 Chemin, chemin lmentaire, circuit et circuit lmentaire
Un chemin est une chane dont tous les arcs sont orients dans le mme sens. Formel-
lement on dit quun chemin de longueur k est une suite = a
1
, a
2
, . . . , a
k
darcs telle que
lextrmit initiale (resp. nale) de chaque arc a
i
avec 2 i k 1 est lextrmint nale
de larc a
i1
(resp. lextrmit initiale de larc a
i+1
). Pour indiquer les extrmits on note :
= x
1
a
1
x
2
a
2
x
3
. . . x
k1
a
k
x
k
. Les sommets x
1
et x
k
sont appels les extrmits du chemin
. On dit que le chemin relie les sommets x
1
et x
k
.
Un chemin lmentaire est un chemin tel quen le parcourant, on ne rencontre pas deux
fois le mme sommet. Dans un chemin lmentaire tous les sommets sont de degr 2 au plus.
Un circuit est un chemin dont les extrmits concident. Un circuit lmentaire est un
circuit dont tous les sommets sont de degr 2.
2
1.2 Reprsentations dun graphe
1.2.1 Matrice dincidence (sommets-arcs)
La matrice dincidence sommets-arcs dun graphe orient G = (S, A) est la matrice
P = (p
xu
) coecients entiers : 0, -1 et 1 tels que pour tout u = (x, y) A, tous les
coecients de la colonne u sont nuls sauf p
xu
= 1 et p
yu
= 1.
Si x est une ligne de P alors
w
+
(x) = {u / p
xu
= 1}
w

(x) = {u / p
xu
= 1}
1.2.2 Exemple
1 2
4 3
a
b
c
d
e
On obtient la matrice dincidence :
_
_
_
_
1 1 0 0 0
1 0 1 1 0
0 1 1 0 1
0 0 0 1 1
_
_
_
_
1.2.3 Matrice dadjacence (sommets-sommets)
La matrice dadjacence sommets-sommets dun graphe orient G = (S, A) est la matrice
Q = (q
xy
) coecients entiers : 0 et 1 tels que pour tout x et y dans S on a :
q
xy
= 1 si et seulement si (x, y) A.
La matrice dadjacence de lexemple prcdent est
_
_
_
_
0 1 1 0
0 0 1 1
0 0 0 1
0 0 0 0
_
_
_
_
1.2.4 Tableaux et
On considre ici que les sommets sont rangs et dsigns 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 numro (i). Et donc lensemble 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, S
1
une partie de S et A
1
une partie de A.
On appelle sous-graphe engendr par S
1
, le graphe not G
S
1
dont les sommets sont les
lments de S
1
et dont les arcs sont les arcs de G ayant leurs deux extrmits dans S
1
.
On appelle graphe partiel engendr par A
1
, le graphe not G[A
1
] ayant le mme en-
semble S de sommets que G et dont les arcs sont ceux de A
1
.
Le sous-graphe partiel engendr par S
1
et A
1
est le graphe partiel de G
S
1
engendr par
A
1
.
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 complmentaire de G a le mme
ensemble de sommets que G et comme arcs les arcs complmentaires A :
(x, y) A (x, y) /

A
(x, y) / A (x, y)

A
On dit que G est biparti si lensemble des sommets S peut tre partitionn en deux
sous ensembles S
1
et S
2
de tel sorte que, tout arc a une extrmit dans S
1
et lautre dans S
2
.
On dit que G est complet si G est strict tel que deux sommets distincts quelconques
sont relis 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 chane reliant x et y. On associe cette notion de connexit
une relation dquivalence R dnie par :
xRy
_
soit x = y,
soit il existe une chane reliant x et y.
Les classes dquivalence induites sur S par cette relation forment une partition de S
en : S
1
, . . . , S
p
. 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 G
1
, . . . , G
p
engendrs par les sous ensembles S
1
, . . . , S
p
sont appels les
composantes connexes du graphe G. Chaque composante connexe est un graphe connexe.
Un point darticulation dun graphe est un sommet dont la suppression augmente le
nombre de composantes connexes. Un isthme est un arc dont la suppression a le mme
eet.
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 dquivalence T dnie par :
xT y
_
soit x = y,
soit il existe un chemin allant de x y et un chemin allant de y x.
Les classes dquivalence induites sur S par cette relation forment une partition de S
en : S
1
, . . . , S
q
. Le nombre q de classes distinctes est appel le nombre de forte connexit
du graphe.
Les sous graphes G
1
, . . . , G
q
engendrs par les sous ensembles S
1
, . . . , S
q
sont appels
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 sil na quune seule composante
fortement connexe.
1.4.3 Graphe rduit
Soit G = (S, A) un graphe orient. On appelle graphe rduit de G, le graphe quotient
G
r
= G/T du graphe G par la relation dquivalence T . Les sommets de G
r
sont les
composantes fortement connexes et il existe un arc de G
i
G
j
si et seulement sil existe
au moins un arc allant dun sommet de G
i
un sommet de G
j
dans G.
Proposition 5 Le graphe G
r
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 nest pas fortement connexe. Donc
G admet q > 1 composantes fortement connexes, nots G
1
, . . . , G
q
. Daprs la proposition
5
5, le graphe rduit G
r
est sans circuit. Il existe, daprs la proposition 6, un sommet G
p
(avec p {1, . . . , q}) dans G
r
tel que d
+
(G
p
) = 0. Tout arc de G dont lextrmit initiale
est dans G
p
a aussi son extrmit nale dans G
p
. Daprs lhypothse, dans le graphe
G
p
= (S
p
, A
p
) on a :

xSp
d

(x) =

xSp
d
+
(x),
mais comme G est connexe il existe une composante fortement connexe G
i
= (S
i
, A
i
), un
sommet y S
i
et un sommet x S
p
tels que (y, x) A. Ce qui donne dans G :

xSp
d

(x) >

xSp
d
+
(x),
ce qui contredit lhypothse sur les degrs.
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 daprs la proposition 6, il existe s S tel que d

(s) = 0 et
comme tout sous graphe dun graphe sans circuit est un graphe sans circuit on deduit que
pour toute source s le graphe G{s} est sans circuit.
Rciproquement 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 dun graphe
Soit G = (S, A) un graphe orient strict. Un tri topologique ( on dit aussi bonne num-
rotation ou encore numrotation acyclique) de G est une numration (ou une indexation)
s
1
, . . . , s
n
des sommets de G tel que si (s
i
, s
j
) A alors i < j. De faon quivalente cest
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 sil est
sans circuit.
Preuve : Soit G = (S, A) un graphe orient strict.
Supposons que Gadmet un tri topologique f et quil contient un circuit s
1
a
1
s
2
. . . s
k
a
k
s
1
.
Le tri donne
f(s
1
) < . . . < f(s
k
) < f(s
1
) et donc f(s
1
) < f(s
1
);
ce qui est absurde.
Rciproquement si G est sans circuit alors en posant S
1
= S et G
1
= G, on a daprs
la proposition 8
Il existe s
1
S
1
tel que d

G
1
(s
1
) = 0 et posons S
2
= S
1
{s
1
} et G
2
= G
S
2
6
Il existe s
2
S
2
tel que d

G
2
(s
2
) = 0 et posons S
3
= S
2
{s
2
} et G
3
= G
S
3
. . .
Il existe s
n1
S
n1
tel que d

G
n1
(s
n1
) = 0 et posons S
n
= S
n1
{s
n1
} et G
n
=
G
S
n1
Il existe s
n
S
n
tel que d

Gn
(s
n
) = 0.
Ainsi on construit un tri topologique.
1.6 Arborescence
1.6.1 Dnitions
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 dorigne r. Une arborescence est un graphe
orient a une seule racine et sans cycle.
On dit que G possde la condition des demi-degrs intrieurs lorsque d

(s) = 1 pour
tout sommet s de G sauf pour un sommet quon note r, pour lequel d

(r) = 0.
Exemple
r
a
b
c
d
e
f
g
h
Les sommets puits a, d, e, h, g sont appels feuilles. d et e sont frres et ls de b. les
descendants de c sont f, g, h.
1.6.2 Caractrisation 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 possde la condition des demi-degrs intrieurs.
6. G est acyclique et possde la condition des demi-degrs intrieurs.
7
7. G est sans circuits et possde la condition des demi-degrs intrieurs.
Preuve : Exercice.
1.7 Parcours dans les graphes
Lide gnrale des algorithmes de parcours dans les graphes est :
Initialisation
Tant que non ni Faire
Selection dun sommet
Traitement du sommet
Lalgorithme dtaill est le suivant o chaque sommet peut avoir trois tat :
non-atteint : lalgorithme ne le connait pas encore.
atteint : lalgorithme a rencontr le sommet mais ne la pas encore trait.
examin : lalgorithme 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
comprhension de lalgorithme.
Lalgorithme dtaill
-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
pre(s) := (*s est une racine*)
-traiter :=-traiter {s}
Tant que -traiter := Faire
y := choix(-traiter)
-traiter := -traiter{y}
Pour tout z de Succ(y) Faire
Si tat(z) = non-atteint Alors
pre(z) := y
tat(z) := atteint
-traiter := -traiter {z}
tat(y) := examin
8
1.8 Exercices
1.8.1 Exercice 1
On considre le graphe G = (X, U) dni 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 dadjacence, puis par sa matrice dincidence.
2. Ce graphe contient-il des circuits ? Si oui, donnez-les.
3. Est-il fortement connexe ? si oui justier sinon dterminer son graphe rduit.
1.8.2 Exercice 2
On propose deux mthodes pour coder un graphe G = (S, A) en machine : la matrice
dadjacence M et la le des successeurs de tableaux ALPHA1, ALPHA2 et BETA. La
le des successeurs BETA est le tableau des successeurs, les successeurs du sommet s se
trouvant entre les adresses ALPHA1(s) et ALPHA2(s) dans le tableau BETA (en cours
on avait un seul tableau ALPHA).
Sommets Sommets antrieurs
1 1,2,4
2 1
3 1,2,5
4 1,5
5 4
1. Donner une reprsentation sagittale du graphe ci-dessus.
2. Rapporter les tableaux M, ALPHA1, ALPHA2 et BETA.
3. Ecrire un algorithme permettant de passer de la le des successeurs la matrice
dadjacence. Quelle est la complexit de cet algorithme ?
4. Ecrire un algorithme permettant de passer de la matrice dadjacence la le 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 lmen-
taire. Peut-on tendre ce rsultat aux chanes ?
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 dterminer les composantes fortement connexes dun
graphe.
9
1.8.5 Exercice 5
Soient G = (S, A) un graphe oriente dordre n , M la matrice dadjacence associe et I
la matrice identit dordre n. On pose N = (I +M)
n1
= (N
ij
)
ij
.
1. Montrer que I +M +M
2
+. . . +M
n1
= N.
2. Montrer que N
ij
= 1 si et seulement sil existe un chemin allant de i j de longueur
au plus gale n1. Dduire que G est fortement connexe si et seulement si N
ij
= 1
pour tous i et j.
3. En utilisant les rsultats des questions prcdentes, dterminer les composantes for-
tement connexes du graphe de lexercice 1.8.1 et dterminer son graphe rduit.
1.8.6 Exercice 6
Soit G = (S, A) un graphe oriente dordre n et f une application de S dans {1, 2, . . . , n}.
On dit que f est un tri topologique (on dit aussi bonne numrotation ou numrotation
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 G
X
engendr par X possde au moins un sommet sans prdcesseurs.
2. Montrer que G est sans circuits si et seulement sil 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 prd-
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 mme 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 dnis constituent une partition de lensemble
des sommets de G, appele classement par niveaux. Les niveaux sont par ailleurs ordonns
dans lordre des valeurs des plus grandes longueurs correspondantes.
1. Montrer que deux sommets dun mme niveau ne sont jamais relis par un arc.
2. Montrer que chaque arc de G va dun niveau un niveau suprieur.
3. Montrer quen numrotant les sommets de G dans lordre croissant des niveaux, et
de faon quelconque lintrieur dun mme niveau, on obtient un tri topologique.
4. Dterminer le classement par niveaux des sommets du graphe dont lensemble 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 dun
classement par niveaux obtenu comme indiqu la question 3).
1.8.8 Exercice 8
Soit G=(S, A) le graphe dni par :
10
Sommets Sommets antrieurs
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 dadjacence.
2. Ce graphe contient-il des circuits ? Si oui, donnez-les.
3. Est-il fortement connexe ? justiez votre rponse.
4. Dterminer son graphe rduit G
r
.
5. Montrer que G
r
est sans circuit.
6. Donner la matrice M
r
dadjacence du graphe rduit G
r
et calculer ses puissances
successives. Que constatez-vous ?
7. Plus gnralement, montrer quun 1-graphe G (quelconque) est sans circuits si et
seulement si sa matrice M dadjacence est nilpotente (cest- -dire quil 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 quil 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 x de G.
1. Enoncer un algorithme de calculs des distances de r tous les autres sommets de G.
On sappuiera sur celui des parcours en largeur dun graphe (voir cours).
2. Pour tout entier k 0, on note D
k
lensemble des sommets distance k de r et M
k
lensemble des sommets marqus distance k de r dans lalgorithme (NB : pour viter
toute confusion au niveau de la distance on dira simplement que M
k
est lensemble
des sommets marqus k dans lalgorithme). Noter que D
0
= M
0
= r.
(a) Montrer que les M
k
sont deux deux disjoints. Quen est-il des D
k
?
(b) Montrer par rcurrence que M
k
= D
k
pour tout k.
(c) Calculer la complexit de lalgorithme.
11
Chapitre 2
Chemins optimaux
2.1 Notion de distance et problmes de cheminement
2.1.1 Graphe valu
Soit G = (S, A) un graphe (orient ou non). On associe chaque arc (ou arte) a A
un rel l(a) appel poids ou longueur de a. Lapplication l ainsi dnie :
l : A R
a l(a)
est appele 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 (s
0
, s
k
) un chemin allant de s
0
s
k
. On appelle
longueur du chemin ou bien poids du chemin (s
0
, s
k
) et on note l((s
0
, s
k
)) la somme des
poids des arcs de (s
0
, s
k
). Remarquer que si la valuation l est constante gale 1 alors la
notion dnie ici concide avec la notion de longueur dun chemin comme nombre de ses
arcs. Un circuit de longueur strictement ngative est appel circuit absorbant.
Proposition 11 Soient s et t deux sommets de G. Pour quil existe un plus court chemin
allant de s t il faut et il sut que tout chemin allant de s t ne contienne pas de circuit
absorbant.
Preuve : Soit C lensemble des chemin de s t. Si C contient un circuit alors
on note

le chemin de s t associ mais nempruntant pas le circuit et on a :


l() = l(

) +l().
Sil existe un chemin C contenant un circuit absorbant alors il nexiste pas de plus
court chemin de s t. Il sut en eet de considrer 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 lmentaires. Comme ils forment un ensemble
ni, 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 sil est de longueur maximum.
Proposition 12 Soient s et t deux sommets de G. Pour quil existe un plus long chemin
allant de s t il faut et il sut 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 Problmes de cheminement
Les problmes considrs sont :
1. Recherche dun plus court chemin dun sommet un autre (problme de 2 sommets).
2. Recherche dun plus court chemin dun sommet tous les autres (problme avec un
sommet origine unique).
3. Recherche dun plus court chemin entre tous les couples de sommets (problme de
tous les couples de sommets).
La suite du chapitre est consacr au problme avec un sommet origine unique. La rsolution
dpend de la nature des graphes et de la valuation.
2.2 Cas o le graphe est non valu
On considre 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
dnie.
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 le. On rappelle quune le fonctionne selon le principe du premier
entr, premier sorti. Les oprations lmentaires sont.
enler(F,s) : met s dans la le la queue.
tte-le(F) : retourne le sommet qui est en tte de F sans lenlever.
dler(F,s) : enlve le sommet qui est en tte sans le retourner.
le-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
Enler(F,r)
d(r, r) = 0
s := r
c)
Tant que le-vide(F)=Faux
Pour tout successeur t de s qui nest pas encore atteint
d(r, t) = d(r, s) + 1
Atteint(t) :=Vrai
Enler(F,t)
Fin Pour
Dler(F,s) s :=tte-le(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
Lensemble de plus courts chemins dtermins dnit dans le graphe une arborescence
de plus courts chemins.
Exemple
2 3 4
1 5 6 7 8
9 10
Lalgorithme 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-
blmes dordonnancement
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 = s
1
, s
2
, . . . , s
n
de sorte que tout prdcesseur s
i
de s
j
est tel que i < j.
2. La distance entre deux sommets s et t est bien dnie car G est sans circuits. Donc
on peut calculer les distances de proche en proche dans G.
_
d(s
1
, s
1
) = 0
d(s
1
, s
j
) = Min
s
i

1
(s
j
)
(d(s
1
, s
i
) +l(s
i
, s
j
))
3. la plus grande longueur ou distance D(s, t) est bien dnie car G est sans circuits.
Donc on peut calculer les plus grandes distances de proche en proche dans G.
_
D(s
1
, s
1
) = 0
D(s
1
, s
j
) = Max
s
i

1
(s
j
)
(D(s
1
, s
i
) +l(s
i
, s
j
))
2.3.2 Graphe potentiel-tches ou graphe MPM
Le graphe potentiel-tches, aussi appel graphe MPM est une modlisation dun projet
qui permet une planication dans le temps des direntes tches : cest un ordonnancement.
Soit un projet dcompos en n tches lmentaires 1, 2, . . . , n. Pour chaque tche i, il est
donn sa dure d
i
et les tches antrieures cest--dire les tches qui doivent tre achves
pour que la tche i puisse commencer.
Tches Dures Tches antrieures
.
.
.
.
.
.
.
.
.
i d
i
j, k
.
.
.
.
.
.
.
.
.
Dnition
Soient G = (S, A, l) le graphe potentiel-tches associ au projet avec S = {, 1, 2, . . . , n, }
o dsigne le dbut et la n du projet, considrs comme des tches ctives de dure
nulle. (i, j) A si la tche i est antrieure a la tche j. La longueur ou le poids de larc
(i, j) est l(i, j) = d
i
. Il est claire que G est orient strict et sans circuits.
15
Notions de dates
La date au plus tt t
i
dune tche i est la date la plus rapproche (optimiste) laquelle
i peut commencer. On a : t

= 0 et t

est la dure minimum du projet.


_
t

= 0
t
i
= Max
j
1
(i)
(t
j
+d
i
) pour i {1, . . . , n, }
La date au plus tard T
i
dune tche i est la date la plus tardive (pessimiste) laquelle
i doit commencer pour que la dure minimale de ralisation du projet soit respecte cest-
-dire T

= t

. Les dates au plus tard se calcul par un compte rebours partir de T

et
T
i
= Min
j(i)
(T
j
d
i
) pour i = n, n 1, . . . , 2, 1
on galement
T
i
= D(, ) D(i, )
.
La date de n au plus tard T

i
dune tche i est la date la plus pessimiste de n dune
tche et se calcul par la formule suivant :
T

i
= Min
j(i)
(t
j
d
i
) pour i = n, n 1, . . . , 2, 1
Exemple : On considre un projet qui comporte 7 tches : a, b, c, d, e, f, g.
Tches a b c d e f g
Dures 4 3 6 2 8 7 1
Tches antrieures a,b b c,d,e c
On obtient le graphe potentiel-tches G = (S, A, l) ci-dessous, o S = {deb, a, b, c, d, e, f, g, fin}
a c g
deb b d f n
e
4
3
3
8
6
6
2
1
7
Tches deb a b c d e f g n
Dures 0 4 3 6 2 8 7 1 0
t
i
0 0 0 4 3 0 10 10 17
T
i
0 0 1 4 8 2 10 16 17
Les marges
La marge totale est le dlai MT(i) = T
i
t
i
pouvant tre accord une tche sans
repousser la dure minimal du projet. On dit quune tche i est critique si MT(i) = 0. La
succession de taches qui imposent la dure minimale du projet est appele chemin critique.
16
La marge libre dune tche i est le dlai ML(i) pouvant tre accord au commencement
de la tche sans modier la marge totale des tches qui suivent.
ML(i) = Min
j(i)
(t
j
d
i
) t
i
ou encore
ML(i) = T

i
t
i
. Contrairement la marge totale, la marge libre peut tre consomme sans aucune cons-
quence sur les tches qui suivent dans le projet. La marge libre dune tche est toujours
infrieure 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 reprsentent la n dune tche et le dbut dune autre et dont
les arcs reprsentent les tches.
Dnitions
Les successives se suivent dans le temps et sont reprsentes par un chemin. Par exemple
les tches a, b, c sont successives :
1 2 3 4
a b c
Les tches simultanes ont le mme dbut dexcution. Par exemple les tches a, b sont
simultanes :
2
1 3
b
a
Les tches convergentes aboutissent la mme tape. Par exemple a, b sont conver-
gentes :
2
3 1
a
b
Les contraintes de liaison apparaissent quand un tche appartenant une suite de
tches successives ne peut tre excute avant quune autre tche, nappartenant pas
cette suite, ne soit acheve.
17
1 2 3 4
5 6 7 8
b c
g
d e f
f ne peut pas commencer avant que c ne soit acheve mme si e est termine. On ne
peut pas avoir le graphe suivant :
1 2 6
3 4 5 7
b
c
d e
g
f
car cela signirait que e doit tre acheve pour que g commence, ce qui nest pas n-
cessaire.
les tches ctives sont introduites pour viter que deux tches soient la fois simulta-
nes et convergentes.
Construction dun 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 tches successives
entre deux niveaux conscutifs. Puis on trace le graphe PERT partir de ce graphe de
mannire ce que toutes les tches aboutissent une tape et que lantriorit des tches
soit respecte. Noter que toutes les tches du niveau 1 sont simultanes 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 = {s
1
, s
2
, . . . , s
n
}.
2.4.1 Algorithme de Dijkstra
1. Initialisation
S

= {s
2
, s
3
, . . . , s
n
}
(s
0
) = 0
(s
i
) = l(s
1
, s
i
) si s
i
est un successeur de s
1
sinon (s
i
) =
2. Selection dun sommet
Slectionner s
j
S

tel que (s
j
) = Min
s
i
S
((s
i
)
Faire S

{s
j
}
Si S

est vide FIN


Sinon aller en 3
3. Calcul des valeurs de
Faire pour tout s
i
la fois dans (s
j
) et dans S

(s
i
) Min((s
i
), (s
j
) +l(s
j
, s
i
))
et retourner en 2
18
Lalgorithme considre les sommets dans un ordre qui dpend des valeurs (s
i
) appeles
labels. A la n on a (s
i
) = d(s
1
, s
i
) pour tout s
i
S.
2.4.2 Exemple dapplication
On considre le graphe suivant :
b d
a e
c
f
7
1
5
4
2
1
2
7
5
3
On obtient alors :
Sommets a b c d e f
Initialisation 0 7 1
Itration 1
.
.
. 6 1 3 8
Itration 2
.
.
. 5
.
.
. 8 3 8
Itration 3
.
.
. 5
.
.
. 8
.
.
. 6
Itration 4
.
.
.
.
.
.
.
.
. 8
.
.
. 6
Itration 5
.
.
.
.
.
.
.
.
. 8
.
.
.
.
.
.
On obtient une arborescence de parcours
b d
a e
c
f
1
2
1
2
5
2.5 Cas o les longueurs sont quelconques
Soit G = (S, A, l) un graphe orient strict o S = {s
1
, s
2
, . . . , s
n
}.
2.5.1 Algorithme de Bellmann
1. Initialisation

0
(s
1
) = 0
19

0
(s
i
) = pour tout s
i
= s
1
k = 1
2. A litration k
Faire
k
(s
1
) = 0
et
k
(s
i
) = Min(
k1
(s
i
), Min
s
j

1
(s
i
)
(
k1
(s
j
) +l(s
j
, s
i
))) pour tout s
i
= s
1
3. Si
k
(s
i
) =
k1
(s
i
) 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 dapplication
On considre le graphe suivant :
b d
a e
c
f
7
8
2
4
1
2
-2
2
2
3
On obtient alors :
Sommets a b c d e f
Initialisation 0
Itration 1 0 7 8
Itration 2 0 7 8 11 8 9
Itration 3 0 7 6 10 8 9
Itration 4 0 7 6 10 8 8
Itration 5 0 7 6 10 8 8
On obtient une arborescence de parcours
2.6 Exercices
2.6.1 Exercice 1
Dterminer le graphe potentiel-tapes (graphe PERT) et une arborescence de chemins
minimaux du projet suivant :
Tches a b c d e f g
Dures 4 3 6 2 8 7 1
Tches Pralables a,b b c,d,e c
20
2.6.2 Exercice 2
Reprendre lexemple du paragraphe 4.2 du cours. Drouler lalgorithme de Dijkstra et
dterminer une arborescence de chemins minimaux.
2.6.3 Exercice 3
Reprendre lexemple du paragraphe 5.2 cours. Drouler lalgorithme 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}, dni par sa matrice
M = (m
ij
)
ij
telle que m
ij
= 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 justication supplmentaire).
2. Rsolvez le problme du plus court chemin de 1 9. On justiera le choix de lalgo-
rithme, et on noubliera pas de donner la n un chemin optimal (pas seulement sa
valeur).
3. On suppose maintenant que la valeur dun chemin est non plus la somme des lon-
gueurs des arcs mais leur produit. Indiquez comment modier lalgorithme utilis
la question 2 pour trouver un chemin minimum (indiquer simplement la/les mo-
dication(s) ; il nest pas ncessaire de prouver la validit du nouvel algorithme).
Appliquez votre algorithme modi sur le graphe donn plus haut, pour trouver un
chemin optimal de 1 9.
4. On suppose maintenant que la valeur dun chemin est non plus la somme des lon-
gueurs des arcs ni leur produit mais la plus petite longueur des arcs. Indiquez com-
ment modier lalgorithme utilis la question 2 pour trouver un chemin maximum.
(Indiquer simplement la/les modication(s) ; il nest pas ncessaire de prouver la va-
lidit du nouvel algorithme). Appliquez votre algorithme modi sur le graphe donn
plus haut, pour trouver un chemin optimal de 1 9.
2.6.5 Exercice 5
Une entreprise commande la ralisation dun projet informatique. Un analyste est
charg de le raliser et de fournir au plus tt au client un planning dexcution du projet.
21
Aprs avoir recens les direntes oprations, leurs dures en jours et le matriel ou le
personnel ncessaire leur ralisation, on dispose du tableau suivant :
Tche Tches antrieures Dure Personnel ou Matriel
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 aects ce projet. Toute tche commence
par un programmeur doit tre acheve par lui.
1. Apres avoir dni le graphe des niveaux, vous tracerez le rseau PERT associe au
projet.
2. Vous tracerez ensuite le chronogramme en portant chaque tache sa date de dbut
au plus tt et en indiquant les marges libres en pointille.
3. Donner le chemin critique et sa dure.
4. Sur le chronogramme, vous noterez en indice des taches et entre parenthses les
moyens ncessaires son excution en utilisant les codes suivant : T pour Terminal
et P pour Programmeur. Vous indiquerez alors les plages horaires ou on ne dispose
pas de susamment de personnel ou de matriel.
5. En utilisant les marges libres des taches, vous proposerez une solution pour remdier
le plus ecacement aux problmes prcdents. Le cas chant, une augmentation de
la dure du projet pourra tre envisage.
6. Vous tracerez un nouveau chronogramme qui vous permettra dtablir votre plan-
ning : pour chaque tache on indiquera sa date de dbut au plus tt et sa date de n
au plus tard.
7. Le programmeur aecte la ralisation de la tache I est absent 3 jours. Cela a-til
une rpercussion sur le dlai du projet ? Mme question si le terminal est en panne
pendant 2 jours a la date 12.
22
Chapitre 3
Rseaux de transport et Flots
3.1 Flot dans un rseau de transport
3.1.1 Rseau de transport
Un rseau de transport est un graphe R = (X, A, c) valu positivement sans boucle
ayant deux ensembles disjoints S X, ensemble des entres (ou sources) et P X
lensemble des sorties (ou puits). Les valuations des arcs sont appeles capacits. On verra
plus loin quon peut, sans perdre en gnralit, se ramener un rseau une entre et
sortie uniques.
On rappelle que pour tout Z X on note
+
(Z) (resp.

(Z)) lensemble des arcs


sortant (entrant) de Z cest--dire les arcs ayant lextrmit initiale dans Z (resp. X Z)
et lextrmit nale dans X Z (resp. Z).
Exemple
s1 x1 x2
p1
s2
s3 x3 x4 p2
[1]
[4]
[5]
[5]
[1]
[2]
[2]
[6]
[2]
[3]
[3] [2]
[2]
[2]
[8] [7]
[2]
3.1.2 Flot
Un ot sur un rseau de transport R = (X, A, c) est une application f : A N qui
vrie :
1. 0 f(a) c(a) pour tout a A
2.

a
+
({x})
f(a) =

({x})
f(a) pour tout x X (S P)
3.

a
+
({s})
f(a)

({s})
f(a) 0 pour tout s S et

({p})
f(a)

a
+
({p})
f(a)
0 pour tout p P.
23
Si on pose dune mannire gnrale pour tout Z X, f
+
(Z) =

a
+
(Z)
f(a) et f

(Z) =

(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 prcdentes, on a : f
+
(S) f

(S) = f

(P) f
+
(P).
Preuve :
0 =

xX
(f
+
(x) f

(x)) (3.1)
=

xS
(f
+
(x) f

(x)) +

xX(SP)
(f
+
(x) f

(x)) +

xP
(f
+
(x) f

(x))
(3.2)
=

xS
(f
+
(x) f

(x)) +

xP
(f
+
(x) f

(x)) (3.3)
= (f
+
(S) f

(S)) + (f
+
(P) f

(P)). (3.4)
La quantit f
+
(S) f

(S) est le ot rsultant sortant de S et f

(P) f
+
(P) est le ot
rsultant entrant dans P. La proposition prcdente arme la loi de conservation pour
le ot qui traverse le rseau de transport. On appelle valeur du ot f et on note v(f) la
quantit f
+
(S) f

(S) = f

(P) f
+
(P).
Proposition 14 Ltude dun ot dans un rseau de transport quelconque peut toujours
se ramener ltude dun ot dans un rseau de transport entre et sortie uniques.
Preuve : Soit R = (X, A, c) un rseau et posons S = {s
1
, s
2
, ..., s
r
} et P = {p
1
, p
2
, ..., p
t
}.
A ce rseau, on ajoute un sommet s avec les arcs (s, s
i
) (i = 1, 2, . . . , r) de capacit et le
sommet p avec les arcs (p
j
, p) (j = 1, 2, . . . , t) de capacit . On obtient ainsi un nouveau
rseau R

entre et sortie unique et on pose S

= {s} et P

= {p}. Il reste montrer que


tout ot f sur R correspond un ot sur R

de mme valeur et inversement.


Soit donc f un ot sur R. On dnit f

comme suit : f

/A = f et
f

((s, s
i
)) = f
+
(s
i
) f

(s
i
) pour i = 1, 2, . . . , r
et
f

((p
j
, p)) = f

(p
j
) f
+
(p
j
) pour j = 1, 2, . . . , t
On vrie (en exercice) facilement que f

est bien un ot sur R

et que v(f) = v(f

).
Inversement, tant donn un ot sur R

on en dduit directement un ot sur R de mme


valeur en considrant sa restriction sur les arcs de R.
Dans un ot f sur un rseau une entre et sortie unique, lentre est une source et
la sortie est un puits (au sens usuel dnit plus haut) et on a : v(f) = f
+
(s) = f

(p) car
f
+
(p) = f

(s) = 0. En ajoutant au rseau larc (p, s) de capacit innie on obtient un


rseau dans lequel la loi de conservation du ot est vrie en tout sommet. Dans toute
la suite du chapitre, on suppose que les rseaux considrs sont une entre
et sortie uniques.
Proposition 15 Si R = (X, A, c) un rseau et Z X alors f
+
(Z) = f

(Z)
Preuve : On somme lgalit de la loi de conservation sur Z. Aprs des simplications
appropries on obtient le rsultat.
24
3.2 Flot maximum et coupe minimum
3.2.1 Dnitions et proprits
Soit R = (X, A, c) un rseau. Une coupe de R est un ensemble darcs de R de la forme
suivante : K =
+
(Z) o Z X tel que s Z et p / Z. La capacit dune coupe K est
la somme des capacits des arcs de K : c(K) =

aK
c(a).
Proposition 16 Pour tout ot f et toute coupe K sur un rseau R on a : v(f) c(K)
Preuve : on a :
c(K) f
+
(Z) f
+
(Z) f

(Z) =

xZ
(f
+
(x) f

(x)) = f
+
(s) = v(f)
Un ot maximum est un ot de valeur la plus grande possible. De mme une coupe
minimum est une coupe de capacit la plus petite possible.
Corollaire 2 Pour tout ot f et toute coupe K sur un rseau R si v(f) = c(K) alors f
est un ot maximum et K est une coupe minimum.
3.2.2 Chane augmentante ou amliorante
Soit R = (X, A, c) un rseau et s et p lentre et la sortie de R. Un arc est satur si le
ot qui le traverse est gal sa capacit. Un chemin ou une chane est satur(e) si il ou elle
contient un arc satur. Un chemin insatur allant de s p est dit chemin augmentant ou
amliorant. Une chane augmentante ou amliorante est une chane de s p dont les arcs
parcourus dans le sens direct sont insaturs et ceux parcourus dans le sens inverse sont
traverss par un ot strictement positif.
Proposition 17 Sil existe pour un ot f sur un rseau R une chane augmentante alors
il existe un ot f

tel que v(f) < v(f

).
Preuve : Soit = (a
1
, . . . , a
k
) une chane augmentante avec a
1
= s et a
k
= p les
extrmits. On note
+
lensemble des arcs de parcourus dans le sens de s p et

celui
des arcs de parcourus dans le sens inverse. On pose :
() = Min
i=1,2,...,k
(a
i
)
o (a
i
) = c(a
i
) f(a
i
) si a
i

+
et (a
i
) = f(a
i
) > 0 lorsque a
i

. On dnit le ot
f

par :
f

(a) =
_
_
_
f(a) +() si a
+
f(a) () si a

f(a) si a /
Vrier (en exercice) que f

est bien un ot sur R. On a v(f

) = v(f) +() et comme


() > 0, v(f

) > v(f).
Proposition 18 Sil nexiste pas pour le ot f sur R une chane augmentante alors il
existe une coupe K telle que c(K) = v(f).
Preuve : Il sut de prendre K =
+
(Z) avec Z est constitu par s et les sommets x
tels quil existe une chane insature allant de s x. Il est claire que p / Z. Vrier (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 :
c(K) = f
+
(Z) = f
+
(Z) f

(Z) =

xZ
(f
+
(x) f

(x)) = f
+
(s) = v(f).
Les preuves des propositions suivantes quon laisse en exercice, sont des consquences di-
rectes des propositions prcdentes.
Proposition 19 Un ot sur un rseau est maximum si et seulement sil nexiste pas de
chane augmentante.
Proposition 20 Dans un rseau la valeur dun ot maximum est gale la capacit dune
coupe minimum.
3.3 Algorithme de Ford-Fulkerson
Soit R = (X, A, c) un rseau, s son entre et p sa sortie. Un ot sur R est dit complet
sil nexiste pas de chemin insatur allant de s p.
3.3.1 Algorithme de recherche dun ot complet
On part dun ot f (par exemple tel que v(f) = 0) et on lamliore pas pas par une
procdure 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 marqus sont examins alors le ot est complet ;
sinon aller en (2)
4. Amliorer le ot
Eacer les marques
Aller en (1)
Exemple
En trois dpts 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 possibilits de transport laide de camoins. Ces possibilits sont rapportes
dans le tableau suivant :
D E F
A 15 10 0
B 15 5 5
C 5 0 10
Dterminer un plan de transport permettant de transporter des dpts aux destinations
une quantit maximum.
26
Ce problme se modlise aisment par un rseau de transport R :
A D
s
B E
p
C F
[20]
[35]
[10]
[15]
[10] [15]
[5]
[5]
[5]
[10]
[25]
[20]
[20]
On applique lalgorithme et on obtient les chemins amliorants suivants :
Chemins
sADp 15
sAEp 5
sBDp 10
sBEp 5
sBFp 5
sCFp 10
Le ot obtenu a pour valeur 50 et il est complet (justier).
3.3.2 Algorithme de recherche dun ot maximum (Ford-Fulkerson)
On part, par exemple dun ot complet. On lamliore tant quil existe des chanes
augmentantes.
algorithme
1. Marquer lentre s
2. Soit x un sommet marqu non examin
Etudier tous les successeurs y de x :
Marquer y par (+x) sil est non marqu et si f(x, y) < c(x, y).
Etudier tous les prdcesseurs z de x :
Marquer z par (x) sil est non marqu et si f(z, x) > 0
3. Si p est marqu (on a une chane augmentante), aller en (4)
Sil reste des sommets marqus non examins aller (2)
sinon le ot est maximum, FIN.
4. Amliorer le ot laide de la chane amliorante ayant permis de marquer p.
Eacer les marques et aller en (1)
En application de lalgorithme lexemple prcdent on obtient un ot maximum de
valeur 55. Une coupe minimale est K =
+
(Z) avec Z = {s, B}. Elle est telle que tous les
arcs a
+
(Z) sont saturs et le ot qui traverse tout arc a

(Z) est nul sauf le ot


traversant larc (p, s).
27
3.4 Exercices
3.4.1 Exercice 1
Prouver que le ot rapport ci-dessous nest pas maximal. Laugmenter. Combien y
a-t-il de ots de valeur maximale ? La valuation des arcs represente le ot sur la capacit.
B
s
A C F
D
p
E
10/20
10/10
0/10
10/10
10/10
0/10
0/10
10/10
10/10
10/20
3.4.2 Exercice 2
On considre dans cet exercice un problme de transport de marchandises. Plus pr-
cisment, une entreprise extrait une matire premire sur trois sites de production p
1
, p
2
et p
3
. Lentreprise possde trois usines u
1
, u
2
et u
3
. Des camions permettent damener la
matire premire des sites de productions aux usines. Plus prcisment, la matire extraite
en p
1
peut tre amene en u
1
et u
2
, celle extraite en p
2
peut tre amene en u
1
, u
2
et u
3
,
celle extraite en p
3
peut tre amene en u
2
et u
3
. Dans les usines, la matire premire est
utilise pour fabriquer des produits destins la vente.
Le but pour lentreprise est de produire le plus possible, donc dutiliser le maximum de
matire premire. Les trois sites de productions p
1
, p
2
et p
3
peuvent extraire au maximum
respectivement 15, 15 et 25 milliers de tonnes (Mt) de matire. Les capacits des liaisons
entre un site p
i
et une usine u
j
sont de 10 Mt de matire premire. Enn, en raison de
capacit de production limite, lusine u
1
peut utiliser au maximum 30 Mt de matire
premire, lusine u
2
au maximum 15 Mt et lusine u
3
au maximum 30 Mt.
1. Modliser la situation par un rseau de transport.
2. Faites passer un ot o de p
1
partent 10 Mt vers u
1
et 5 Mt vers u
2
, de p
2
partent 5
Mt vers u
1
, 5 Mt vers u
2
et 5 Mt vers u
3
, de p
3
partent 5 Mt vers u
2
et 10 Mt vers
u
3
. Ce ot est-il complet ?
3. Appliquez lalgorithme de Ford et Fulkerson pour trouver un ot maximum. Donnez
galement une coupe de capacit minimum.
4. On voudrait modliser les deux nouvelles contraintes suivantes.
(a) En raison de limites sur les engins travaillant sur les sites p
1
et p
2
, la quantit
totale de matire premire extraite sur les sites p
1
et p
2
ne peut dpasser 25.
(b) En raison de limites sur les personnels travaillant dans les usines p
2
et p
3
, la
quantit totale de matire utilise dans les usines u
2
et u
3
ne peut dpasser 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 dbutant en s et terminant en t. Deux s t-chemins sont
dits arc-disjoints sils nont pas darc en commun (mais ils peuvent avoir des sommets en
commun).
0 8
4
1 6 t
s
5 7 9
2
3
Quel est le nombre maximal de s t-chemins arc-disjoints de la gure ? Cette solution
est-elle unique ? Justiez vos rponses (on pourra modliser ce problme avec des ots).
29
Chapitre 4
Graphe non orient et Problme de
larbre couvrant minimum
4.1 Graphe non orient
Lorsque lorientation des arcs ne joue aucun rle, on parle de graphe non orient ou
simplement de graphe. Plus formellement on a :
4.1.1 Dnition
Un graphe non orient G est dni par la donne dun ensemble S dont les lments
sont appels des sommets ou noeuds et dun ensemble E dont les lments sont des sous
ensembles 1 ou 2 lments de S appeles artes. On le note G = (S, E). Le nombre n de
sommets de G est appel lordre de G et le nombre m des artes de G est appele la taille
de G.
Exemple
Soit G = (S, E) le graphe dni par : S = {x, y, z} et E = {a, b, c, d} o b = {z, x},
c = {x, y} et d = {z, y}.
z
y
x
c
b
d
Etant donne une arte u = {x, y}, on dit que les sommets x et y sont les extrmits
de u. On dit galement de les sommets x et y sont adjacents et que larc u est incident
x et y.
30
4.1.2 Artes et degr
Deux artes sont adjacentes si elles sont incidentes au moins une extrmit commune.
Le degr du sommet x, not d
G
(x) ou plus simplement d(x) est le nombre dartes ayant
x pour extrmint.
Les resultats (Proposition et Corollaire) du paragraphe 1.1.2 restent valables.
Etant donn X S, on appelle cocycle de G lensemble w(X) des artes ayant une
extrmit dans X et lautre extrmit dans S X.
4.1.3 Chane, chane lmentaire, cycle, cycle lmentaire
Une Chane de longueur k est une suite = e
1
, e
2
, . . . , e
k
de k artes telle que deux
artes conscutives sont adjacentes. On notera = x
1
e
1
x
2
. . . x
k
e
k
x
k+1
, si lon veut prci-
ser les sommets rencontrs. Les sommets x
1
et x
k
sont appels les extrmits de la chane
. On dit que la chane rlie les sommets x
1
et x
k
.
Une chane lmentaire est un chane telle quen la parcourant, on ne rencontre pas
deux fois le mme sommet. De faon quivalente, on peut dnir un chane comme une
chane dont les sommets sont tous de degr 2 sauf ses extrmints. La proposition 2 est
valable pour les chanes.
Un cycle est une chane dont les extrmits concident.
Un cycle lmentaire est un cycle minimal pour linclusion i.e ne contenant strictement
aucun autre cycle.
4.2 Reprsentation dun graphe
4.2.1 Cas des graphes non orients
Matrice dincidence (sommets-artes)
La matrice dincidence sommets-artes dun graphe non orient G = (S, E) est la ma-
trice P = (p
xu
) coecients entiers : 0 et 1 tels que pour tout u = {x, y} E, tous les
coecients de la colonne u sont nuls sauf p
xu
= p
yu
= 1.
Si x est une ligne de P alors
w(x) = {u / p
xu
= 1}
Exemple
1 2
4 3
a
b
c
d
e
On obtient la matrice dincidence :
31
_
_
_
_
1 1 0 0 0
1 0 1 1 0
0 1 1 0 1
0 0 0 1 1
_
_
_
_
Matrice dadjacence (sommets-sommets)
La matrice dadjacence sommets-sommets dun graphe non orient G = (S, E) est la
matrice Q = (q
xy
) coecients entiers : 0 et 1 tels que pour tout x et y dans S on a :
q
xy
= 1 si et seulement si {x, y} A.
La matrice dadjacence de lexemple prcdent est
_
_
_
_
0 1 1 0
1 0 1 1
1 1 0 1
0 1 1 0
_
_
_
_
Tableaux et
On considre ici que les sommets rangs et sont dsigns 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 numro (i). Et donc lensemble 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 G
A
dont les sommets sont les
lments de A et dont les arcs ou artes sont les arcs ou artes de G ayant leurs deux
extrmits dans A.
On appelle graphe partiel engendr par Y , le graphe not G[Y ] ayant le mme ensemble
X de sommets que G et dont les arcs ou artes sont ceux de Y .
Le sous-graphe partiel engendr par A et Y est le graphe partiel de G
A
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 arte (resp. un arc). Si
G est strict alors le graphe complmentaire de G a le mme ensemble de sommets que G
et comme arcs les arcs complmentaires X :
(x, y) X (x, y) /

X
32
(x, y) / X (x, y)

X
On dit que G est biparti si lensemble des sommets S peut tre partitionn en deux
sous ensembles S
1
et S
2
de tel sorte que, toute arte a une extrmit dans S
1
et lautre
dans S
2
.
On dit que G est complet si G est simple (resp. strict) tel que deux sommets distincts
quelconques sont relis par une seule arte (resp. un seul arc).
4.4 Dnitions et proprits des arbres
Un arbre est un graphe simple connexe sans cycles. Un graphe simple sans cycles qui
nest pas ncessairement connexe est appel une fort (chaque composante connexe est un
arbre). Une chane lmentaire est un arbre.
Exemples darbre
a
b d
e c
f 1 2 3 4
g
h i
Proposition 21 Un arbre tel que n 2 possde au moins deux sommets pendants (ie de
degr 1).
Preuve : Il sut de considrer une chane = {s
0
, e
1
, s
1
, . . . , s
k1
, e
k
, s
k
} de longueur
la plus grande possible (maximale) o k 1 car n 2. On montre par labsurde que
s
0
et s
k
sont des sommets pendants. Par exemple supposons que s
0
nest pas pendant
alors il existerait une arte f = e
1
incidente s
0
et soit y lautre sommet incident f. Si
y {s
0
, s
1
, . . . , s
k
} alors larbre contiendrait un cycle ce qui est absurde ; sinon la chane
= {y, f, s
0
, e
1
, s
1
, . . . , s
k1
, e
k
, s
k
} contiendrait ce qui est galement absurde.
Proposition 22 Si G est un arbre alors m = n 1.
Preuve : On fait une preuve par rcurrence sur n. Il est facile dtablir le rsultat pour
n = 1 car un arbre ne peut contenir une boucle. On suppose que n > 1. Daprs 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 hypothse de rcurrence on a : m
G
= n
G
1. Comme m
G
= m
G
1
et n
G
= n
G
1 on obtient m
G
= n
G
1.
Proposition 23 Dans un arbre, deux sommets quelconque sont relis par une chane l-
mentaire unique.
33
Preuve : Soient x et y deux sommets dun arbre. Il existe une chane lmentaire qui
relie x et y car le graphe est connexe et supposons quil existe une autre chane distincte
de la prcdente qui les relie. En concatnant les deux chanes on obtient un cycle ce qui
contredit le fait que le graphe est acyclique.
Proposition 24 Une arte e E est un isthme de G = (S, E) si et seulement si e
nappartient aucun cycle de G
Preuve : Soit G = (S, E) un graphe connexe (cela sut). Si e = {s, t} E nest pas
un isthme alors il existe dans G {e} une chane reliant s et t les extrmits de e et
donc en concatnant et e on obtient un cycle contenant e. Donc si e nappartient
aucun cycle de G alors e est un isthme. Inversement supposons que e appartient un cycle
c = (s
0
, e, s
1
, e
2
, s
2
, . . . , s
k1
, e
k
, s
0
) et x et y deux sommets de G {e}. Comme G est
connexe il existe une chane = {x = t
0
, f
1
, t
1
, f
2
, . . . , t
k1
, f
k
, t
k
= y} qui relie x et y.
Si est G {e} alors G {e} est connexe et e nest pas un isthme. Sinon e = f
i
avec
i = 1, . . . , k et posons s
0
= t
i1
et s
1
= t
i
. Il sut de considrer la chane obtenu par
la concatnation des trois chanes suivantes : {x = t
0
, f
1
, . . . , t
i1
}, {s
1
, e
2
, . . . , e
k
, s
0
} et
{t
i
, f
i+1
, . . . , f
k
, t
k
= y}. Elle est dans G{e} et donc G{e} est connexe. Donc si e est
un isthme alors e nappartient aucun cycle de G.
Corollaire 3 Toute arte dun arbre est un isthme.
Thorme 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 arte est un isthme.
5. Deux sommets quelconques de G sont relis par une et une seule chane lmentaire.
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 fort de G ou encore fort couvrante de G est un
graphe partiel sans cycle de G (non ncessairement connexe).
Proposition 25 Tout graphe connexe a un arbre couvrant.
Preuve : Il sut de supprimer tous les isthmes.
Corollaire 4 Si G est connexe alors m n 1 et on a lgalit si et seulement si G est
un arbre.
Preuve : G admet un arbre T couvrant, donc m m
T
= n
T
1 = n 1. comme T est
un graphe partiel de G le cas de lgalit nest possible que lorsque G = T.
Proposition 26 Un graphe partiel dun graphe connexe G est un arbre couvrant de G si
et seulement sil est connexe et minimal par rapport la suppression dartes.
34
Preuve : Soit H un graphe partiel dun graphe connexe G.
Si H est un arbre couvrant de G alors H est connexe et toute arte e de H y est un
isthme donc H {e} nest pas connexe. Rciproquement supposons que H est connexe et
minimal par rapport la suppression dartes. Donc la suppression dune arte quelconque
e de H augmente le nombre de composante connexe de H et larte e est un isthme. Donc
e nappartient aucun cycle et par consquence H est acyclique et donc H est un arbre
couvrant.
Proposition 27 Un graphe partiel dun graphe connexe G est un arbre couvrant de G si
et seulement sil est acyclique et maximal par rapport lajout dartes.
Preuve : Soit H un graphe partiel dun graphe connexe G.
Si H est un arbre couvrant alors H est acyclique et soit e une arte quelconque de G nap-
partenant pas H. Il existe une chane = {x, e
1
, x
1
, . . . , x
k1
, e
k
, y} reliant les extrmits
x et y de e. En concatnant et e on obtient le cycle C = (x, e
1
, x
1
, . . . , x
k1
, e
k
, y, e, x) ;
ce qui tablit que la condition est ncessaire. Pour montrer quelle est susante supposons
que H est acyclique et maximal par rapport lajout dartes. soient x et y deux sommets
quelconques de H, il existe dans G une chane unique = {x
0
= x, e
1
, x
1
, . . . , x
k1
, e
k
, x
k
=
y}. Si toutes les artes e
i
avec i = 1, 2, . . . , k sont dans H alors H est connexe. Si-
non on construit partir de une chane dans H rliant x et y de la faon suivante :
Pour toute arte e
i
qui nest pas dans H, il existe dans H une chane unique
i
=
{x
i1
, e
i
1
, x
i
1
, . . . , e
i
k
, x
i
} qui rlie x
i1
et x
i
. On remplace x
i1
, e
i
, x
i
dans par
i
.
4.6 Problme de larbre 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 artes de H. Le problme de larbre couvrant
minimum est la dterminantion dun arbre couvrant de poids le plus petit possible. On
prsente ici deux algorithmes : celui de Kruskal et celui de Prim.
4.6.1 Mthode de Kruskal
Algorithme
Initialisation F = E et E
H
=
Tant que |E
H
| < n 1 Faire
Selectionner e F tel que l(e) soit minimum.
F = F {e}
Si G[E
H
{e}] est acyclique alors E
H
= E
H
{e}
Fin Tant que
Exemple
On considre le graphe connexe suivant :
35
c
f
a
b
e
h
d
g
11
5
12
10
1
2
13
3
6
4
7
8
En appliquant Kruskal on obtient larbre couvrant minimum suivant :
c
f
a
b
e
h
d
g
5
1
2
3
6
4
7
Le poids de larbre est 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28.
4.6.2 Mthode de Prim
Soit G = (S, E, l) un graphe connexe valu. La mthode consiste construire de proche
en proche un arbre couvrant minimum H = (T, F). Pour ce faire on xe un sommet
quelconque s
0
.
Algorithme
Initialisation T = {s
0
}, = (s
0
) et F = ;
Tant que S T = Faire
Selectionner e tel que l(e) soit minimum.
Soit s
i
lextrmit qui nest pas dans T ;
F = F {e}, T = T {s
i
} et = ( (s
i
)) ( (s
i
))
Fin Tant que
4.7 Exercices
4.7.1 Exercice 1
Dterminer tous les arbres ayant six sommets.
4.7.2 Exercice 2
Montrer quun arbre qui a exactement deux sommets pendants est une chane lmen-
taire.
36
4.7.3 Exercice 3
Montrer quun arbre a au moins sommets pendants ( est le degr maximum).
4.7.4 Exercice 4
Montrer quune arte e dun 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 arte e est une boucle si et seulement si
e nappartient 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 chanes 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 Max
yX
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 dni par sa matrice dadjacence 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 dtaillant bien toutes les tapes, appliquez lalgorithme de Kruskal sur le graphe
G. Quel est le poids dun arbre couvrant de poids minimal ?
2. En utilisant le mme graphe que la question prcdente, calculer le poids dun arbre
couvrant de poids maximum. Donner un arbre de poids couvrant maximal.
3. Discuter des dirences fondamentales entre lalgorithme de Kruskal et lalgorithme
de Prim. Comment rsumer ces dirences ?
4. Appliquez lalgorithme 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 dicile en zone forestires. Il convient alors de
dterminer les itinraires les plus praticables entre tout couple de villages dun canton
considre. Pour chaque tronon routier, on dispose dune valuation note entre 0 et 5
traduisant ltat du tronon (0 : tronon totalement praticable, 5 : tronon totalement
impraticable). On suppose ici que chaque tronon est double sens et que lvaluation est
la mme pour chacun des sens.
On considre un graphe G = (X, U) non orient, o X est lensemble des villages du
canton et U lensemble des tronons ; chaque arte u de U tant munie dune valuation
l(u) reprsentant ltat du tronon u. La recherche ditinraires les plus praticables peut
se formuler comme un problme de recherche des chanes minimax entre toute paire de
sommets du graphe. Dans ce problme, une chane a pour valeur l() la plus grande
valuation des artes de la chane, cest--dire l() = Max
u
{l(u)}. On cherche donc
dterminer, entre deux sommets quelconques du graphe, une chane de valeur minimale.
Soit A

un arbre couvrant de valeur minimale de G.


Partie 1 On considre le canton reprsent par le graphe G
1
= (X
1
, U
1
) suivant :
2 6
1 3 5 7 9
4 8
2
5
1
5
4
4
4
5
3
4
3
2
3
4
4
2
1. Dterminer A

1
un arbre couvrant de valeur minimale de G
1
.
2. Considrons sur A

1
la chane (x, y) joignant deux sommets quelconques x et y et
u
max
larte ou lune des artes de plus forte valuation appartenant cette chane.
Soit S et X
1
S les deux composantes connexes obtenue en supprimant u
max
dans
A

1
et w(S) le cocycle de S dans G
1
.
(a) Considrant la chane (2, 9) de A

1
, dterminer u
max
et w(S). Vrier que toute
arte de w(S) est de valeur suprieure ou gale l(u
max
).
(b) Dterminer dans G
1
, un itinraire le plus praticable entre 2 et 9. Cet itinraire
est-il unique ? justier.
Partie 2 On se place dans le cas gnral et on considre que le canton est reprsent
par un graphe G = (X, U).
1. Montrer que la proprit de la question (2a) est vraie dans le cas gnral.
2. Montrer que toute chane (x, y) de A

est une chane minimax de x y dans G.


(NB : Il sagit de montrer quelle est minimale).
3. Proposer une mthode gnrale pour dterminer les chanes minimax reliant toute
paire de sommets. Suggrer une faon de discriminer parmi les ventuelles chanes
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, Thorie des Graphes et Applications, Hermes-Lavoisier.
[5] Roseaux, Exercices rsolus de Recherche Oprationnelle tome 1 : Graphe.
39