You are on page 1of 57

Chapitre 8 : Flots dans les r

eseaux
Algorithmique de graphes
Sup Galilee-INFO2
Sylvie Borne

2011-2012

eseaux Chapitre 8 : Flots dans les r

1/57

Plan
1

Flot realisable

Le probl`eme du flot maximum


Exemple
Plusieurs sources, plusieurs puits
Flot maximum et programmation lineaire

Chanes augmentantes

Algorithme de Ford et Fulkerson (1961)


Procedure de marquage (labelling)
Algorithme de la chane augmentante
Algorithme de Ford et Fulkerson

La coupe minimum
Implementation et complexite de lalgorithme de Ford et
Fulkerson

Chapitre 8 : Flots dans les r


eseaux -

2/57

Probl`eme de flot

Probl`eme de plus court chemin


une personne seule de la source `a la destination.
Probl`eme de flot
acheminement dune quantite de marchandises (divisibles : on
peut acheminer nos marchandises par des routes differentes) de la
source vers la destination.

Chapitre 8 : Flots dans les r


eseaux -

3/57

Probl`eme de flot : Applications


Applications :
logistique : transport de marchandises : train, camion,
bateau,. . .
distribution deau (canalisations)
transport de petrole : reseau`e de pipelines
energie : reseau EDF, centrales clients
information : reseau telephonique, reseau dentreprises,
internet.

Chapitre 8 : Flots dans les r


eseaux -

4/57

Reseau de transport
D
efinition : reseau de transport
~ ), s, t, c) est forme
Un reseau de transport note R = (G = (V , E
de :
~ ) un graphe oriente
G = (V , E
s V appele sommet source
t V appele sommet destination ou puits
~ N, Q+ fonction capacite (`a chaque arc (i, j) E
~ est
c :E
associee une capacite c(i, j) 0).
Remarque :
s et t sont deux sommets particuliers de G .

Chapitre 8 : Flots dans les r


eseaux -

Flot r
ealisable

5/57

Flot realisable
D
efinition : flot realisable
~ ), s, t, c) un reseau. Un flot f dans R est
Soit R = (G = (V , E
une application f : N, Q+ .
Un flot f est realisable dans R si
1

contrainte de capacite
~
0 f (i, j) c(i, j) (i, j) E

contraintes
de conservation
de flot (Loi de Kirschoff)
X
X
f (i, j)
f (j, k) = 0 j V \{s, t}
~
i | (i,j)E

~
k | (j,k)E

(quantite qui entre dans j = quantite qui sort de j)

Chapitre 8 : Flots dans les r


eseaux -

Flot r
ealisable

6/57

Flot realisable
Exemple :
v1
( ?) capacit
e

(5)
5

(4)

flot

(2) 2
7
(7)

5
(6)

v2

Le flot est realisable.

Chapitre 8 : Flots dans les r


eseaux -

Flot r
ealisable

contraintes de capacite Ok
contraintes de conservation
de flot Ok
en v1 : 5-2-3=0
en v2 : 5+2-7=0
7/57

Valeur dun flot


D
efinition : valeur dun flot
~ ), s, t, c) un reseau.
Soit R = (G = (V , E
La valeur dun flot f realisable entre s et t est la quantite de flot
envoyeeX
de s `a t. On la X
note F et
F =
f (s, i)
f (j, s) =
~

Xi | (s,i)E
f (i, t)
~
i | (i,t)E

Xj | (j,s)E
f (t, j)
~
j | (t,j)E

Exemple :
Ici, la valeur du flot est de 10. (F = 5 + 5 = 3 + 7 = 10).

Chapitre 8 : Flots dans les r


eseaux -

Flot r
ealisable

8/57

Arc sature
D
efinition : arc sature
Un arc (i, j) est dit sature pour un flot f si f (i, j) = c(i, j).
Exemple :
v1
( ?) capacit
e

(5)
5

(4)

(2) 2
5
(6)

flot

7
(7)

v2

Ici, les arcs (s, 1), (1, 2) et (2, t) sont satures.


Les arcs (s, 2) et (1, t) ne le sont pas.
Chapitre 8 : Flots dans les r
eseaux -

Flot r
ealisable

9/57

Arc retour
Remarque :
Pour que la contrainte de conservation de flot soit verifiee en tout
sommet (y compris (s et t), on ajoute un arc artificiel (t, s) de
capacite infinie et appele arc de retour.
v1

(5)
5

(4)
3

(2) 2
5
(6)

7
(7)

Si aucun autre
arc nentre en s,
la valeur F du
flot f est alors
donnee `a f (t, s).

v2
F = 10
(+)
eseaux Chapitre 8 : Flots dans les r

Flot r
ealisable

10/57

Le probl`eme du flot maximum

Probl`eme :
~ ), s, t, c).
Soit un reseau R = (G = (V , E
Le probl`eme du flot maximum consiste `a determiner
un flot realisable entre s et t qui soit de valeur
maximum.

Chapitre 8 : Flots dans les r


eseaux -

Le probl`
eme du flot maximum

11/57

Le probl`eme du flot maximum : exemple


Exemple :
On remarque que le flot donne dans le reseau precedent nest pas
maximum. En effet, on peut trouver un flot de valeur 11.
v1

(5)
5

(4)
4

(2) 1

11

11
6
(6)

7
(7)

v2

Ce nouveau flot est maximum.


En effet, on remarque quau mieux il peut rentre 11 unites de flot
dans t `a cause des capacites 4 et 7 sur les arcs entrants.
Chapitre 8 : Flots dans les r
eseaux -

Le probl`
eme du flot maximum

12/57

Plusieurs sources, plusieurs puits


Remarque :
Le probl`eme du flot maximum peut etre generalise de la mani`ere
suivante :
Supposons quil existe un ensemble de sommets sources et un
ensemble de puits.
On desire determiner un flot max qui peut etre envoye de toutes
les sources aux differents puits.
Ce probl`eme peut etre ramene au probl`eme precedent en ajoutant
une super-source s0 et un super-puits t0 . On relie la super-source `a
toutes les sources avec des arcs de capacite infinie et on relie le
super-puits aux differents puits avec des arcs de capacite infinie. Le
probl`eme se ram`ene alors `a un probl`eme de flot max de s0 `a t0 .

Chapitre 8 : Flots dans les r


eseaux -

Le probl`
eme du flot maximum

13/57

Plusieurs sources, plusieurs puits


Exemple :
sources : v1 et v2 et puits : v4 et v5
v1
(+)

s0

v4

(4)

(1)

v2

eseaux Chapitre 8 : Flots dans les r

(4)

v3
(2)

(+)

(+)

(2)

(3)

(+)

(1)
1

Le probl`
eme du flot maximum

t0

v5

14/57

Flot maximum et PL
~
Soient f (i, j) = flot transitant sur larc (i, j) (i, j) E
F = valeur du flot f
Le probl`eme du flot maximum entre s et t peut se formuler de la
mani`ere suivante :

Max

s.c.

F
0
f (i, j)
f (j, k) =

F
i | (i,j)~
E
k | (j,k)~
E
X

0 f (i, j) c(i, j)

si j = s
si j =
6 s, t
si j = t

j V
~
(i, j) E

~ | + 1 variables
Ce programme lineaire a |E
~ | + |V | contraintes.
et 2|E
eseaux Chapitre 8 : Flots dans les r

Le probl`
eme du flot maximum

15/57

Chanes augmentantes
Exemple :
v1
(5)

(4)

(2)

(7)

(6)

v2

Pour determiner un flot maximum dans ce reseau, on peut


commencer par envoyer du flot sur des chemins de s `a t.
Chapitre 8 : Flots dans les r
eseaux -

Chanes augmentantes

16/57

Chanes augmentantes
Par exemple, on peut commencer par envoyer un flot de 2 sur le
chemin (s, 1, 2, t).
v1
(5)

(4)

(2)

(7)

(6)

v2

Chapitre 8 : Flots dans les r


eseaux -

Chanes augmentantes

17/57

Chanes augmentantes
Vu quil y a une reserve de capacite de 3 sur le chemin (s, 1, t),
on peut envoyer 3 unites de flot.
v1

(5)
2

(4)
0

(2) 2

2
0
(6)

2
(7)

v2

Chapitre 8 : Flots dans les r


eseaux -

Chanes augmentantes

18/57

Chanes augmentantes
Vu quil reste une reserve de 5 sur le chemin (s, 2, t), on peut
envoyer un flot de 5 sur ce chemin.
v1

(5)
5

(4)
3

(2) 2

(7)

(6)

v2

Mais ce flot nest pas maximum.

Chapitre 8 : Flots dans les r


eseaux -

Chanes augmentantes

19/57

Chanes augmentantes
Considerons la chane
v1
(4)
3

(2) 2

5
(6)

v2

On remarque que lon peut :


augmenter le flot de 1 sur (s, 2),
diminuer le flot de 2 sur (1, 2),
augmenter le flot de 1 sur (1, t).
Chapitre 8 : Flots dans les r
eseaux -

Chanes augmentantes

20/57

Chanes augmentantes
Donc en augmentant le flot de 1 sur les arcs (s, 2) et (1, t) et en le
diminuant de 1 sur larc (1, 2) on aura le flot realisable suivant :
v1

(5)
5

(4)
3

(2) 2

10

10

(7)

(6)

v2

eseaux Chapitre 8 : Flots dans les r

Chanes augmentantes

21/57

Chanes augmentantes
Les contraintes de conservation de flot sont respectees.
v1

v1
+1

-1

-1
+1

v2

Chapitre 8 : Flots dans les r


eseaux -

v2

Chanes augmentantes

22/57

Chanes augmentantes

D
efinition : chane augmentante
Une chane C entre s et t est dite augmentante par rapport `a un
~ ) realisable entre s et t si
flot f = (f (i, j), (i, j) E
~ ) arc conforme)
f (i, j) < c(i, j) si (i, j) C + ((i, j) E
~ ) arc non conforme)
f (i, j) > 0 si (i, j) C ((j, i) E
o`
u C + est lensemble des arcs de C rencontres dans le bon sens et
C est lensemble des arcs de C rencontres dans le sens contraire.

eseaux Chapitre 8 : Flots dans les r

Chanes augmentantes

23/57

Chanes augmentantes
Exemple :
v1
(4)

(2)

(6)

v2

arcs conformes
arcs non conformes
5 < 6, 2 > 0, 3 < 4
La chane (s, 2, 1, t) est bien une chane augmentante.
eseaux Chapitre 8 : Flots dans les r

Chanes augmentantes

24/57

Chanes augmentantes
Lemme :
~ ) r
Soit f = (f (i, j), (i, j) E
ealisable entre s et t.
Sil existe une chane augmentante par rapport `
a f entre s et
t,
alors f nest plus maximum.
Preuve :


Chapitre 8 : Flots dans les r
eseaux -

Chanes augmentantes

25/57

Procedure de marquage

Cette procedure permet, etant donne un flot realisable, de


determiner si elle existe, une chane augmentante par rapport `a f .
Cette procedure est basee sur 2 operations de marquage dits :
marquage direct et marquage indirect.

eseaux Chapitre 8 : Flots dans les r

Algorithme de Ford et Fulkerson (1961)

26/57

Marquage direct
Marquage direct :
Si pour un arc (i, j) on a

f (i, j) < c(i, j)

i marque
j non marque
f (i, j) < c(i, j)
alors
on marque j
et on pose

(j) =min((i), c(i, j) f (i, j))


(j) est la quantite max avec laquelle on peut augmenter le flot de
s `a j.
((i) est une valeur associee `a i, elle est initialisee `a linfini pour s.)
Chapitre 8 : Flots dans les r
eseaux -

Algorithme de Ford et Fulkerson (1961)

27/57

Marquage indirect
Marquage indirect :
Si pour un arc (j, i) on a

f (j, i) > 0

i marque
j non marque
f (j, i) > 0
alors
on marque j
et on pose
(j) =min((i), f (j, i))

Chapitre 8 : Flots dans les r


eseaux -

Algorithme de Ford et Fulkerson (1961)

28/57

Algorithme de la chane augmentante


Supposons que lon dispose dun flot realisable
~ ) entre s et t.
f = (f (i, j), (i, j) E

Etape
1

Etape
2

eseaux Chapitre 8 : Flots dans les r

(initialisation)
Marquer s par (s, +).
Poser (s) = +.
Repeter les operations suivantes jusqu`a ce que t
soit marque ou quil ne soit plus possible de marquer.

Algorithme de Ford et Fulkerson (1961)

29/57

Algorithme de la chane augmentante

Op
eration a)
Si il existe un arc (i, j) tel que
i marque
j non marque
f (i, j) < c(i, j)
Alors
Marquer j par (i, +)
Poser (j) = min((i), c(i, j) f (i, j))

eseaux Chapitre 8 : Flots dans les r

Algorithme de Ford et Fulkerson (1961)

30/57

Algorithme de la chane augmentante

Op
eration b)
Si il existe un arc (j, i) tel que
i marque
j non marque
f (j, i) > 0
Alors
Marquer j par (i, )
Poser (j) = min((i), f (j, i))

eseaux Chapitre 8 : Flots dans les r

Algorithme de Ford et Fulkerson (1961)

31/57

Algorithme de la chane augmentante

Etape
3

eseaux Chapitre 8 : Flots dans les r

Si t est marque Alors


une chane augmentante C entre s et t est
detectee et on pose  = (t)
Sinon
le flot f est maximum.

Algorithme de Ford et Fulkerson (1961)

32/57

Algorithme de la chane augmentante


Exemple :
Considerons le reseau suivant o`
u le flot de depart est nul (donc
uniquement marquage direct possible).
2
(5)

(3)
(1)

(1)
(7)

(4)

(9)

(1)
(4)

(2)

(1)

(5)

(6)

(4)

eseaux Chapitre 8 : Flots dans les r

Algorithme de Ford et Fulkerson (1961)

33/57

Algorithme de Ford et Fulkerson


~)
On suppose que lon dispose dun flot initial f = (f (i, j), (i, j) E
entre s et t (on peut prendre f = 0).

Etape
1 : Appliquer lalgorithme de la chane augmentante `a
f.
Si t est marque,
STOP f est optimal.
Sinon
une chane augmentante C est detectee, aller `a
letape 2.

Etape
2 : Changer le
flot f comme suit :
si (i, j) 6 C
f (i, j)
f (i, j) +  si (i, j) C +
f (i, j) =

f (i, j)  si (i, j) C
Aller `a letape 1.
Chapitre 8 : Flots dans les r
eseaux -

Algorithme de Ford et Fulkerson (1961)

34/57

Algorithme de Ford et Fulkerson


Exemple :
2
(5)

1
(1)

4
(7)

3
(4)

(3)

0
(1)

0
(4)

(2)

(5)

(9)

5
7

(1)
1

1
(1)

7
9

2
(6)

(4)

eseaux Chapitre 8 : Flots dans les r

Algorithme de Ford et Fulkerson (1961)

35/57

Algorithme de Ford et Fulkerson


Exemple :
2
(5)

1
(1)

4
(7)

3
(4)

11

(3)

0
(1)

0
(4)

(2)

(5)

(9)

5
7

(1)
1

1
(1)

7
11

4
(6)

(4)

eseaux Chapitre 8 : Flots dans les r

Algorithme de Ford et Fulkerson (1961)

36/57

Algorithme de Ford et Fulkerson


Exemple :
2
(5)

1
(1)

4
(7)

3
(4)

13

(3)

0
(1)

2
(4)

(2)

(5)

(9)

5
7

(1)
1

1
(1)

7
13

6
(6)

(4)

Chapitre 8 : Flots dans les r


eseaux -

Algorithme de Ford et Fulkerson (1961)

37/57

Algorithme de Ford et Fulkerson


Exemple :
2
(5)

1
(1)

4
(7)

3
(4)

14

(3)

0
(1)

3
(4)

(2)

(5)

(9)

5
8

(1)
0

1
(1)

7
14

6
(6)

(4)

Chapitre 8 : Flots dans les r


eseaux -

Algorithme de Ford et Fulkerson (1961)

38/57

Coupe

D
efinition : coupe

Etant
donne un graphe G =
~
(V , E ) et un sous-ensemble S de
sommets de V , on appelle coupe
associee `a S, et on la note (S),
lensemble des arcs (i, j) tels que
i S et j V \S.

Chapitre 8 : Flots dans les r


eseaux -

La coupe minimum

39/57

Coupe
Exemple :
2

3
4

({1, 3, 4}) = {(1, 2), (1, 5), (3, 2), (4, 5)}

Chapitre 8 : Flots dans les r


eseaux -

La coupe minimum

40/57

Coupe
D
efinition : separe

Etant
donnes deux sommets s et t de G et une coupe (S), on dit
que (S) separe s et t si s S et t V \S.
Exemple :
2

La coupe ci-contre separe 1 et


5.
Elle separe aussi 3 et 2.

Chapitre 8 : Flots dans les r


eseaux -

La coupe minimum

41/57

Capacite dune coupe

D
efinition : capacite dune coupe
~ ) est un syst`eme de capacites associe aux
Si c = (c(i, j), (i, j) E
~ ) et si (S) est une coupe du graphe
arcs du graphe G = (V , E
alors la capacite de (S) est definie par
X
C ((S)) =
c(i, j).
(i,j)(S)

eseaux Chapitre 8 : Flots dans les r

La coupe minimum

42/57

Flots et coupes
Th
eor`
eme :
~ ), s, t, c).
Soit un r
eseau R = (G = (V , E
~ ) est un flot r
Si f = (f (i, j), (i, j) E
ealisable entre s et t de
valeur F et si (S) est une coupe qui s
epare s et t alors
F C ((S)).

Preuve :


eseaux Chapitre 8 : Flots dans les r

La coupe minimum

43/57

Th du flot max - coupe min


Th
eor`
eme : Th du flot max - coupe min
La valeur maximum dun flot r
ealisable entre s et t est
egale
`
a la capacit
e minimum dune coupe s
eparant s et t.
Preuve :


Chapitre 8 : Flots dans les r
eseaux -

La coupe minimum

44/57

Th du flot max - coupe min


Exemple :
2
(5)

1
(1)

4
(7)

3
(4)

14

(3)

0
(1)

3
(4)

(2)

(5)

(9)

5
8

(1)
0

1
(1)

7
14

6
(6)

(4)

Remarque :
Tous les arcs appartenant `a la coupe sont satures et la valeur du
flot sur ces arcs est bien de 3+4+1+6=14.
Chapitre 8 : Flots dans les r
eseaux -

La coupe minimum

45/57

Flots entiers

Remarque :
Si les capacites sont enti`eres alors le flot max a des valeurs
enti`eres.

eseaux Chapitre 8 : Flots dans les r

La coupe minimum

46/57

Graphe decart

D
efinition : graphe decart
~ ), s, t, c) un reseau. Soit f un flot sur R.
Soit R = (G = (V , E
~
~ :
Gf = (V , Ef ) est le graphe decart de f avec pour (i, j) E
f (i, j) < c(i, j) (i, j) E~f (arc conforme)
f (i, j) > 0
(j, i) E~f (arc non conforme)

eseaux Chapitre 8 : Flots dans les r

Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson

47/57

Graphe decart
Exemple :
2
(5)

1
(1)

4
(7)

1
13

0
(1)

(3)
3
(4)

2
(4)

(2)

(9)

(5)

7
(1)
1

13

6
(1)
1

(6)

(4)

6
4

Chapitre 8 : Flots dans les r


eseaux -

Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson

48/57

Graphe decart
Exemple :
2

arcs conformes
arcs non conformes

(5)
4

eseaux Chapitre 8 : Flots dans les r

Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson

49/57

Graphe decart
Exemple :

(7)

arcs conformes
arcs non conformes

Chapitre 8 : Flots dans les r


eseaux -

Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson

50/57

Graphe decart
Exemple :
arcs conformes
arcs non conformes

(1) 0

eseaux Chapitre 8 : Flots dans les r

Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson

51/57

Graphe decart
Exemple :
arcs conformes
arcs non conformes

Chapitre 8 : Flots dans les r


eseaux -

Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson

52/57

Graphe decart
Remarque :
La recherche dune chane augmentante se ram`ene `a un parcours
en profondeur dans le graphe decart `a partir s.
Exemple :
arcs conformes
arcs non conformes

4
Chapitre 8 : Flots dans les r
eseaux -

6
Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson

53/57

Graphe decart
Remarque :
On calcule ensuite les capacites residuelles sur la chane de s `a t.
Exemple :
arcs conformes
arcs non conformes

=1

2
2

3
1

4
Chapitre 8 : Flots dans les r
eseaux -

6
Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson

54/57

Complexite
1

Complexite dune iteration : O(m)


recherche dune chane augmentante
parcours en profondeur :O(m)
2m arcs au plus
calcul de la capacite residuelle pour la chane
trouver le minimum dau plus n 1 capacites residuelles
O(n)
calcul du nouveau flot : O(n)
construction du nouveau graphe decart :
au max 2 (n 1) arcs qui changent : O(n)

Nombre max diterations de Ford / Fulkerson

Chapitre 8 : Flots dans les r


eseaux -

Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson

55/57

Complexite
1

Complexite dune iteration : O(m)

Nombre max diterations de Ford / Fulkerson


hypoth`eses : c N et le flot de depart est entier.
Les capacites residuelles sont enti`eres.
la suite des flots est enti`ere.
la valeur du flot augmente au moins de 1 `a chaque
iteration.
au P
plus F iterations avec F =valeur du flot max.

F j c(s, j) (n 1)C avec C = max(i,j)E~ c(i, j)


donc au pire, (n 1)C iterations.

Complexite dans le pire des cas de Ford / Fulkerson : O(n.m.C )


eseaux Chapitre 8 : Flots dans les r

Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson

56/57

Ameliorations de Ford et Fulkerson


Idee 1 : Choisir une chane augmentante de capacite residuelle
maximum.
pas de garantie que les augmentations suivantes
ce nest plus un parcours mais la recherche dun chemin de
debit maximum
Idee 2 : Choisir une chane augmentante la plus courte possible en
termes de nombre darcs.
parcours en largeur

eseaux Chapitre 8 : Flots dans les r

Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson

57/57

You might also like