Professional Documents
Culture Documents
eseaux
Algorithmique de graphes
Sup Galilee-INFO2
Sylvie Borne
2011-2012
1/57
Plan
1
Flot realisable
Chanes augmentantes
La coupe minimum
Implementation et complexite de lalgorithme de Ford et
Fulkerson
2/57
Probl`eme de flot
3/57
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 .
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
Flot r
ealisable
6/57
Flot realisable
Exemple :
v1
( ?) capacit
e
(5)
5
(4)
flot
(2) 2
7
(7)
5
(6)
v2
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
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).
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
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
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.
Le probl`
eme du flot maximum
11/57
(5)
5
(4)
4
(2) 1
11
11
6
(6)
7
(7)
v2
Le probl`
eme du flot maximum
12/57
Le probl`
eme du flot maximum
13/57
s0
v4
(4)
(1)
v2
(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
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
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
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
Chanes augmentantes
19/57
Chanes augmentantes
Considerons la chane
v1
(4)
3
(2) 2
5
(6)
v2
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
Chanes augmentantes
21/57
Chanes augmentantes
Les contraintes de conservation de flot sont respectees.
v1
v1
+1
-1
-1
+1
v2
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.
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
26/57
Marquage direct
Marquage direct :
Si pour un arc (i, j) on a
i marque
j non marque
f (i, j) < c(i, j)
alors
on marque j
et on pose
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))
28/57
Etape
1
Etape
2
(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.
29/57
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))
30/57
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))
31/57
Etape
3
32/57
(3)
(1)
(1)
(7)
(4)
(9)
(1)
(4)
(2)
(1)
(5)
(6)
(4)
33/57
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 -
34/57
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)
35/57
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)
36/57
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)
37/57
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)
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.
La coupe minimum
39/57
Coupe
Exemple :
2
3
4
({1, 3, 4}) = {(1, 2), (1, 5), (3, 2), (4, 5)}
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 minimum
41/57
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)
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
Chapitre 8 : Flots dans les r
eseaux -
La coupe minimum
44/57
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.
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)
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
Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson
48/57
Graphe decart
Exemple :
2
arcs conformes
arcs non conformes
(5)
4
Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson
49/57
Graphe decart
Exemple :
(7)
arcs conformes
arcs non conformes
Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson
50/57
Graphe decart
Exemple :
arcs conformes
arcs non conformes
(1) 0
Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson
51/57
Graphe decart
Exemple :
arcs conformes
arcs non conformes
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
Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson
55/57
Complexite
1
Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson
56/57
Impl
ementation et complexit
e de lalgorithme de Ford et Fulkerson
57/57