Académique Documents
Professionnel Documents
Culture Documents
188 / 222
189 / 222
Applications
Applications directes: information / rseaux de communication parties / chaines dassemblage courent lectrique / rseaux lectrique liquide / tuyaux ... Applications indirectes (prochaine fois): trafic arien, segmentation dimages,
190 / 222
Plan du cours
Dfinitions Exemples Graphe rsiduel / chaine augmentante Algorithme de Ford-Fulkerson Coupe dun reseau Thorme de la coupe et du flot (MaxFlow-MinCut)
191 / 222
Dfinition
Un rseau de flots est un graphe orient G=(X,E) pour lequel
chaque arc (x,y) de E a une capacit associ c(x,y), t.q. c(x,y) 0 on distingue 2 sommets, la source (s) et le puits (p)
Exemple
u 20 s 10 v 30 10 p
20
192 / 222
193 / 222
On suppose
Si (x,y) est un arc dans E alors (y,x) nest pas un arc (pas darcs antiparallles). Si (x,y) nest pas un arc, sa capacit sera 0 Pas darc de type (x,x) Pour chaque sommet x dans G, il existe un chemin s ~~> x ~~> t
donc graphe connexe et |E| |X| - 1
f (v, u) = f (u, v)
v X v X
194 / 222 195 / 222
Valeur de ce flot?
a
20 5 20 20
d
5
20 5
g
10 5
f (s, v) f (u, s)
v X u X
5 5
20
20
e
5
20
h
5
30
f ( x, p ) f ( p , u )
u X
20
10
v X
20
20
20
20
197 / 222
Flot maximum?
a
20 5 30 20
Parenthse 1
d
5 20 5 5 20
g
20
5 5
u 10 30 p 20 30 s 10 v 30 10 p
20
e
5
20
h
5
p s
25
10
20
10
20
10
10
20 v
10 v
20
20
198 / 222
199 / 222
Parenthse 2
Plusieurs sources / puits: transformer dans rseau ayant une seule source, un seul puits. La mthode Ford-Fulkerson
s1
20
d
5
20 5
p1
20
s2
20
e
5
20
p2
5
s3
20
20
20
p3
200 / 222 201 / 222
Lintuition
Etant donn le flot actuel (au dbut flot 0 partout)
trouver une chaine augmentante (chaine reliant s p sur laquelle les flux peuvent encore tre augments sans dpasser les capacits)
202 / 222
203 / 222
Gf peut avoir des arcs antiparallles, mais pour le reste la dfinition de flot sapplique aux rseaux rsiduels aussi.
205 / 222
g
3/3 1/1
s
3/3
1/5
1/5
p
2/5
e
1/1 Graphe rsiduel:
d s e
g p h
206 / 222
207 / 222
Chaine augmentante
Une chaine L reliant s p dans le graphe rsiduel: sommets v1,v2, ,vk
v1 = s, vk = p capacit rsiduelle cf(L) de p:
min{cf(u,v): (u,v) dans p} possible dajouter cf(L) units de flot entre vj et vj+1 pour j = 1 k-1
Gf peut avoir des arcs antiparallles, mais pour le reste la dfinition de flot sapplique aux rseaux rsiduels aussi.
208 / 222
209 / 222
Example
Flot: Graphe rsiduel:
s 5/10 v
15
p 20
2/4 3/3
3/4
20/20
v 10
1/3
15
15
alors c units de flot peuvent tre ajouter f le long du la chaine L dans le rseau G.
u 15/20 s 5/10 v 15/30 0/10 p s 5 5 20/20 v
212 / 222
u 5 15 15 15 p 20 10
213 / 222
Complexit?
Pour capacits relles la mthode ne converge pas forcement (ne termine pas)! Pour capacits entires (rationnelles aussi )?
Exemple
Combien ditrations au pire des cas? u 1000 1 1000 L
Si flot maximale fm , on va excuter la boucle while val(fm) fois au pire des cas. Trouver la chaine? O(V+E) : BFS ou DFS Donc O(val(fm)E)
s 1000 v
1000
214 / 222
215 / 222
Algorithme de Edmonds-Karp
f initialis 0 fin = false while fin = false
1. 2. 3. construire Gf fin = true trouver s~~>p par une recherche en largeur chaine L dans Gf ayant capacit cf(L) > 0
1. 2. fin = false ajouter au flot f les cf(L) units le long de L
Remarque: L sera chaque fois la chaine la plus courte! Complexit: O(VE2) voir la prochaine fois.
216 / 222
cap(S,P), flot(S,P) ?
S={s, a, b, e, h},
a
20/20 5/5 5/5 25/30 20/20 0/5 0/5 0/20 20/20
Flots et coupes
g
0/5 20/20
P = {c, f, i, d, g, p}
d
20/20 0/5
Si f est un flot dans G, pout tout coupe (S,P) dans G, on a val(f) = f(S,P) f(P,S) Preuve?
e
0/5
20/20 15/20
h
5/5
30/30
20/20
0/5
0/10
15/25
20/20
10/10
218 / 222
219 / 222
6 6
t
10
8 3 2 5 3 5 4
5 6
40
t
4 8
220 / 222
221 / 222