chapitre 8 : flots dans les r eseaux - lipnborne/docs/graphes_chap8_flots_pres.pdf · chapitre 8 :...
TRANSCRIPT
![Page 1: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/1.jpg)
Chapitre 8 : Flots dans les reseauxAlgorithmique de graphes
Sup Galilee-INFO2
Sylvie Borne
2011-2012
Chapitre 8 : Flots dans les reseaux - 1/57
![Page 2: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/2.jpg)
Plan1 Flot realisable
2 Le probleme du flot maximumExemplePlusieurs sources, plusieurs puitsFlot maximum et programmation lineaire
3 Chaınes augmentantes
4 Algorithme de Ford et Fulkerson (1961)Procedure de marquage (labelling)Algorithme de la chaıne augmentanteAlgorithme de Ford et Fulkerson
5 La coupe minimum
6 Implementation et complexite de l’algorithme de Ford etFulkerson
Chapitre 8 : Flots dans les reseaux - 2/57
![Page 3: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/3.jpg)
Probleme de flot
Probleme de plus court chemin→ une personne seule de la source a la destination.
Probleme de flot→ acheminement d’une quantite de marchandises (divisibles : onpeut acheminer nos marchandises par des routes differentes) de lasource vers la destination.
Chapitre 8 : Flots dans les reseaux - 3/57
![Page 4: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/4.jpg)
Probleme de flot : Applications
Applications :
logistique : transport de marchandises : train, camion,bateau,. . .
distribution d’eau (canalisations)
transport de petrole : reseaue de pipelines
energie : reseau EDF, centrales → clients
information : reseau telephonique, reseau d’entreprises,internet.
Chapitre 8 : Flots dans les reseaux - 4/57
![Page 5: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/5.jpg)
Reseau de transport
Definition : reseau de transportUn reseau de transport note R = (G = (V , ~E ), s, t, c) est forme
de :
G = (V , ~E ) un graphe oriente
s ∈ V appele sommet source
t ∈ V appele sommet destination ou puits
c : ~E → N,Q+ fonction capacite (a chaque arc (i , j) ∈ ~E estassociee une capacite c(i , j) ≥ 0).
Remarque :s et t sont deux sommets particuliers de G .
Chapitre 8 : Flots dans les reseaux - Flot realisable 5/57
![Page 6: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/6.jpg)
Flot realisable
Definition : flot realisableSoit R = (G = (V , ~E ), s, t, c) un reseau. Un flot f dans R est
une application f :→ N,Q+.Un flot f est realisable dans R si
1 contrainte de capacite0 ≤ f (i , j) ≤ c(i , j) ∀(i , j) ∈ ~E
2 contraintes de conservation de flot (Loi de Kirschoff)∑i | (i ,j)∈~E
f (i , j)−∑
k | (j ,k)∈~E
f (j , k) = 0 ∀j ∈ V \{s, t}
(quantite qui entre dans j = quantite qui sort de j)
Chapitre 8 : Flots dans les reseaux - Flot realisable 6/57
![Page 7: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/7.jpg)
Flot realisableExemple :
s
v1
v2
t
(5)
(6)
(4)
(7)
( ?)
5
5
2
3
7
capacite
flotx
(2)
Le flot est realisable.
contraintes de capacite Okcontraintes de conservationde flot Oken v1 : 5-2-3=0en v2 : 5+2-7=0
Chapitre 8 : Flots dans les reseaux - Flot realisable 7/57
![Page 8: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/8.jpg)
Valeur d’un flot
Definition : valeur d’un flotSoit R = (G = (V , ~E ), s, t, c) un reseau.
La valeur d’un flot f realisable entre s et t est la quantite de flotenvoyee de s a t. On la note F et
F =∑
i | (s,i)∈~E
f (s, i)−∑
j | (j ,s)∈~E
f (j , s) =
∑i | (i ,t)∈~E
f (i , t)−∑
j | (t,j)∈~E
f (t, j)
Exemple :Ici, la valeur du flot est de 10. (F = 5 + 5 = 3 + 7 = 10).
Chapitre 8 : Flots dans les reseaux - Flot realisable 8/57
![Page 9: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/9.jpg)
Arc sature
Definition : arc satureUn arc (i , j) est dit sature pour un flot f si f (i , j) = c(i , j).
Exemple :
s
v1
v2
t
(5)
(6)
(4)
(7)
( ?)
5
5
2
3
7
capacite
flotx
(2)
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 reseaux - Flot realisable 9/57
![Page 10: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/10.jpg)
Arc retourRemarque :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) decapacite infinie et appele arc de retour.
s
v1
v2
t
(5)
(6)
(4)
(7)
5
5
2
3
7
(2)
F = 10(+∞)
Si aucun autrearc n’entre en s,la valeur F duflot f est alorsdonnee a f (t, s).
Chapitre 8 : Flots dans les reseaux - Flot realisable 10/57
![Page 11: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/11.jpg)
Le probleme du flot maximum
Probleme :Soit un reseau R = (G = (V , ~E ), s, t, c).Le probleme du flot maximum consiste a determinerun flot realisable entre s et t qui soit de valeurmaximum.
Chapitre 8 : Flots dans les reseaux - Le probleme du flot maximum 11/57
![Page 12: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/12.jpg)
Le probleme du flot maximum : exempleExemple :On remarque que le flot donne dans le reseau precedent n’est pas
maximum. En effet, on peut trouver un flot de valeur 11.
s
v1
v2
t
(5)
(6)
(4)
(7)
(2)
5
76
1
4
11 11
Ce nouveau flot est maximum.En effet, on remarque qu’au mieux il peut rentre 11 unites de flotdans t a cause des capacites 4 et 7 sur les arcs entrants.
Chapitre 8 : Flots dans les reseaux - Le probleme du flot maximum 12/57
![Page 13: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/13.jpg)
Plusieurs sources, plusieurs puits
Remarque :Le probleme du flot maximum peut etre generalise de la maniere
suivante :Supposons qu’il existe un ensemble de sommets sources et unensemble de puits.On desire determiner un flot max qui peut etre envoye de toutesles sources aux differents puits.Ce probleme peut etre ramene au probleme precedent en ajoutantune super-source s0 et un super-puits t0. On relie la super-source atoutes les sources avec des arcs de capacite infinie et on relie lesuper-puits aux differents puits avec des arcs de capacite infinie. Leprobleme se ramene alors a un probleme de flot max de s0 a t0.
Chapitre 8 : Flots dans les reseaux - Le probleme du flot maximum 13/57
![Page 14: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/14.jpg)
Plusieurs sources, plusieurs puits
Exemple :sources : v1 et v2 et puits : v4 et v5
s0
v1
v2
v3
v4
v5
t0
1
(+∞)
(+∞)
(4)
(3)
(4)
(2)
(+∞)
(+∞)
(1)
(2)
(1)
Chapitre 8 : Flots dans les reseaux - Le probleme du flot maximum 14/57
![Page 15: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/15.jpg)
Flot maximum et PL
Soient f (i , j) = flot transitant sur l’arc (i , j) ∀(i , j) ∈ ~EF = valeur du flot f
Le probleme du flot maximum entre s et t peut se formuler de lamaniere suivante :
Max F
s.c.∑
i | (i,j)∈~E
f (i , j)−∑
k | (j,k)∈~E
f (j , k) =
−F si j = s0 si j 6= s, tF si j = t
∀j ∈ V
0 ≤ f (i , j) ≤ c(i , j) ∀(i , j) ∈ ~E
Ce programme lineaire a |~E |+ 1 variableset 2|~E |+ |V | contraintes.
Chapitre 8 : Flots dans les reseaux - Le probleme du flot maximum 15/57
![Page 16: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/16.jpg)
Chaınes augmentantes
Exemple :
s
v1
v2
t
(5)
(6)
(4)
(7)
(2)
Pour determiner un flot maximum dans ce reseau, on peutcommencer par envoyer du flot sur des chemins de s a t.
Chapitre 8 : Flots dans les reseaux - Chaınes augmentantes 16/57
![Page 17: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/17.jpg)
Chaınes augmentantes
→ Par exemple, on peut commencer par envoyer un flot de 2 sur lechemin (s, 1, 2, t).
s
v1
v2
t
(5)
(6)
(4)
(7)
(2)
Chapitre 8 : Flots dans les reseaux - Chaınes augmentantes 17/57
![Page 18: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/18.jpg)
Chaınes augmentantes
→ Vu qu’il y a une reserve de capacite de 3 sur le chemin (s, 1, t),on peut envoyer 3 unites de flot.
s
v1
v2
t
(5)
(6)
(4)
(7)
(2)
2
22
22
0
0
Chapitre 8 : Flots dans les reseaux - Chaınes augmentantes 18/57
![Page 19: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/19.jpg)
Chaınes augmentantes
→ Vu qu’il reste une reserve de 5 sur le chemin (s, 2, t), on peutenvoyer un flot de 5 sur ce chemin.
s
v1
v2
t
(5)
(6)
(4)
(7)
(2)5
5
2
25
3
0
Mais ce flot n’est pas maximum.
Chapitre 8 : Flots dans les reseaux - Chaınes augmentantes 19/57
![Page 20: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/20.jpg)
Chaınes augmentantesConsiderons la chaıne
s
v1
v2
t
(6)
(4)
(2)
5
2
3
On remarque que l’on 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 reseaux - Chaınes augmentantes 20/57
![Page 21: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/21.jpg)
Chaınes augmentantes
Donc en augmentant le flot de 1 sur les arcs (s, 2) et (1, t) et en lediminuant de 1 sur l’arc (1, 2) on aura le flot realisable suivant :
s
v1
v2
t
(5)
(6) (7)
(2)
5
2
3
10
5 710
(4)
Chapitre 8 : Flots dans les reseaux - Chaınes augmentantes 21/57
![Page 22: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/22.jpg)
Chaınes augmentantes
Les contraintes de conservation de flot sont respectees.v1
v2
t
+1
-1s
v1
v2
+1
-1
Chapitre 8 : Flots dans les reseaux - Chaınes augmentantes 22/57
![Page 23: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/23.jpg)
Chaınes augmentantes
Definition : chaıne augmentanteUne chaıne C entre s et t est dite augmentante par rapport a un
flot f = (f (i , j), (i , j) ∈ ~E ) realisable entre s et t si
f (i , j) < c(i , j) si (i , j) ∈ C+ ((i , j) ∈ ~E ) arc conforme)
f (i , j) > 0 si (i , j) ∈ C− ((j , i) ∈ ~E ) arc non conforme)
ou C+ est l’ensemble des arcs de C rencontres dans le bon sens etC− est l’ensemble des arcs de C rencontres dans le sens contraire.
Chapitre 8 : Flots dans les reseaux - Chaınes augmentantes 23/57
![Page 24: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/24.jpg)
Chaınes augmentantes
Exemple :
s
v1
v2
t
(6)
(4)
(2)
arcs conformesarcs non conformes5 < 6, 2 > 0, 3 < 4La chaıne (s, 2, 1, t) est bien une chaıne augmentante.
Chapitre 8 : Flots dans les reseaux - Chaınes augmentantes 24/57
![Page 25: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/25.jpg)
Chaınes augmentantes
Lemme :Soit f = (f (i , j), (i , j) ∈ ~E ) realisable entre s et t.
S’il existe une chaıne augmentante par rapport a f entre s ett,alors f n’est plus maximum.Preuve :
�
Chapitre 8 : Flots dans les reseaux - Chaınes augmentantes 25/57
![Page 26: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/26.jpg)
Procedure de marquage
Cette procedure permet, etant donne un flot realisable, dedeterminer si elle existe, une chaıne augmentante par rapport a f .Cette procedure est basee sur 2 operations de marquage dits :marquage direct et marquage indirect.
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 26/57
![Page 27: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/27.jpg)
Marquage direct
Marquage direct :Si pour un arc (i , j) on a
*
f (i, j) < c(i, j)i j
i marquej non marquef (i , j) < c(i , j)alorson marque jet on pose
δ(j) =min(δ(i), c(i , j)− f (i , j))δ(j) est la quantite max avec laquelle on peut augmenter le flot des a j .(δ(i) est une valeur associee a i , elle est initialisee a l’infini pour s.)
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 27/57
![Page 28: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/28.jpg)
Marquage indirect
Marquage indirect :Si pour un arc (j , i) on a
*
f (j, i) > 0i j
i marquej non marquef (j , i) > 0alorson marque jet on pose
δ(j) =min(δ(i), f (j , i))
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 28/57
![Page 29: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/29.jpg)
Algorithme de la chaıne augmentante
Supposons que l’on dispose d’un flot realisablef = (f (i , j), (i , j) ∈ ~E ) entre s et t.
Etape 1 : (initialisation)
Marquer s par (s,+).Poser δ(s) = +∞.
Etape 2 : Repeter les operations suivantes jusqu’a ce que tsoit marque ou qu’il ne soit plus possible de mar-quer.
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 29/57
![Page 30: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/30.jpg)
Algorithme de la chaıne augmentante
Operation a)Si il existe un arc (i , j) tel que
i marquej non marquef (i , j) < c(i , j)
AlorsMarquer j par (i ,+)Poser δ(j) = min(δ(i), c(i , j)− f (i , j))
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 30/57
![Page 31: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/31.jpg)
Algorithme de la chaıne augmentante
Operation b)Si il existe un arc (j , i) tel que
i marquej non marquef (j , i) > 0
AlorsMarquer j par (i ,−)Poser δ(j) = min(δ(i), f (j , i))
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 31/57
![Page 32: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/32.jpg)
Algorithme de la chaıne augmentante
Etape 3 : Si t est marque Alorsune chaıne augmentante C entre s et t est
detectee et on pose ε = δ(t)Sinon
le flot f est maximum.
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 32/57
![Page 33: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/33.jpg)
Algorithme de la chaıne augmentanteExemple :Considerons le reseau suivant ou le flot de depart est nul (donc
uniquement marquage direct possible).
1 3 5
2
4 6
7
(5)
(1)
(3)
(4)(7)
(2)(4)
(4)
(5)
(1)
(1) (6)
(9)
(1)
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 33/57
![Page 34: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/34.jpg)
Algorithme de Ford et FulkersonOn suppose que l’on dispose d’un flot initial f = (f (i , j), (i , j) ∈ ~E )entre s et t (on peut prendre f = 0).
Etape 1 : Appliquer l’algorithme de la chaıne augmentante af .Si t est marque,
STOP f est optimal.Sinon
une chaıne augmentante C est detectee, aller al’etape 2.
Etape 2 : Changer le flot f comme suit :
f (i , j) =
f (i , j) si (i , j) 6∈ Cf (i , j) + ε si (i , j) ∈ C+
f (i , j)− ε si (i , j) ∈ C−Aller a l’etape 1.
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 34/57
![Page 35: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/35.jpg)
Algorithme de Ford et Fulkerson
Exemple :
1 3 5
2
4 6
7
(5)
(1)
(3)
(4)(7)
(2)(4)
(4)
(5)
(1)
(1) (6)
(9)
(1)4
1 0
3
45
0
2 0
2
11 2
7 99
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 35/57
![Page 36: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/36.jpg)
Algorithme de Ford et Fulkerson
Exemple :
1 3 5
2
4 6
7
(5)
(1)
(3)
(4)(7)
(2)(4)
(4)
(5)
(1)
(1) (6)
(9)
(1)4
1 0
3
4
2
11
711
2
0
7
2
4
11
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 36/57
![Page 37: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/37.jpg)
Algorithme de Ford et Fulkerson
Exemple :
1 3 5
2
4 6
7
(5)
(1)
(3)
(4)(7)
(2)(4)
(4)
(5)
(1)
(1) (6)
(9)
(1)4
1 0
3
4
2
11
77
2
13
2
4
6
13
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 37/57
![Page 38: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/38.jpg)
Algorithme de Ford et Fulkerson
Exemple :
1 3 5
2
4 6
7
(5)
(1)
(3)
(4)(7)
(2)(4)
(4)
(5)
(1)
(1) (6)
(9)
(1)4
1 0
3
4
1
7
4
6
14
3
1 3
0
8 14
Chapitre 8 : Flots dans les reseaux - Algorithme de Ford et Fulkerson (1961) 38/57
![Page 39: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/39.jpg)
Coupe
Definition : coupeEtant donne un graphe G =(V , ~E ) et un sous-ensemble S desommets de V , on appelle coupeassociee a S , et on la note δ(S),l’ensemble des arcs (i , j) tels quei ∈ S et j ∈ V \S .
Chapitre 8 : Flots dans les reseaux - La coupe minimum 39/57
![Page 40: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/40.jpg)
Coupe
Exemple :
1 2
5
4
3
δ({1, 3, 4}) = {(1, 2), (1, 5), (3, 2), (4, 5)}
Chapitre 8 : Flots dans les reseaux - La coupe minimum 40/57
![Page 41: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/41.jpg)
Coupe
Definition : separeEtant 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 :
1 2
5
4
3
La coupe ci-contre separe 1 et5.Elle separe aussi 3 et 2.
Chapitre 8 : Flots dans les reseaux - La coupe minimum 41/57
![Page 42: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/42.jpg)
Capacite d’une coupe
Definition : capacite d’une coupeSi c = (c(i , j), (i , j) ∈ ~E ) est un systeme de capacites associe aux
arcs du graphe G = (V , ~E ) et si δ(S) est une coupe du graphealors la capacite de δ(S) est definie par
C (δ(S)) =∑
(i ,j)∈δ(S)
c(i , j).
Chapitre 8 : Flots dans les reseaux - La coupe minimum 42/57
![Page 43: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/43.jpg)
Flots et coupes
Theoreme :Soit un reseau R = (G = (V , ~E ), s, t, c).
Si f = (f (i , j), (i , j) ∈ ~E ) est un flot realisable entre s et t devaleur F et si δ(S) est une coupe qui separe s et t alors
F ≤ C (δ(S)).
Preuve :
�Chapitre 8 : Flots dans les reseaux - La coupe minimum 43/57
![Page 44: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/44.jpg)
Th du flot max - coupe min
Theoreme : Th du flot max - coupe minLa valeur maximum d’un flot realisable entre s et t est egale
a la capacite minimum d’une coupe separant s et t.Preuve :
�
Chapitre 8 : Flots dans les reseaux - La coupe minimum 44/57
![Page 45: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/45.jpg)
Th du flot max - coupe min
Exemple :
1 3 5
2
4 6
7
(5)
(1)
(3)
(4)(7)
(2)(4)
(4)
(5)
(1)
(1) (6)
(9)
(1)1 0
3
4
1
14
3
7
4
0
3
4
1
6
148
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 reseaux - La coupe minimum 45/57
![Page 46: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/46.jpg)
Flots entiers
Remarque :Si les capacites sont entieres alors le flot max a des valeurs
entieres.
Chapitre 8 : Flots dans les reseaux - La coupe minimum 46/57
![Page 47: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/47.jpg)
Graphe d’ecart
Definition : graphe d’ecartSoit R = (G = (V , ~E ), s, t, c) un reseau. Soit f un flot sur R.
Gf = (V , ~Ef ) est le graphe d’ecart de f avec pour (i , j) ∈ ~E :
f (i , j) < c(i , j) ⇒ (i , j) ∈ ~Ef (arc conforme)
f (i , j) > 0 ⇒ (j , i) ∈ ~Ef (arc non conforme)
Chapitre 8 : Flots dans les reseaux - Implementation et complexite de l’algorithme de Ford et Fulkerson 47/57
![Page 48: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/48.jpg)
Graphe d’ecart
Exemple :
1 3 5
2
4 6
7
(5)
(1)
(3)
(4)(7)
(2)
(4)
(5)
(1)
(1) (6)
(9)
(1)4
4
13
(4)2
7
1 0
3
4
1
2 1
6
7 13
2
Chapitre 8 : Flots dans les reseaux - Implementation et complexite de l’algorithme de Ford et Fulkerson 48/57
![Page 49: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/49.jpg)
Graphe d’ecart
Exemple :arcs conformes
arcs non conformes
1 3 5
2
4 6
7
4
(5)
Chapitre 8 : Flots dans les reseaux - Implementation et complexite de l’algorithme de Ford et Fulkerson 49/57
![Page 50: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/50.jpg)
Graphe d’ecart
Exemple :arcs conformes
arcs non conformes
1 3 5
2
4 6
7
7
(7)
Chapitre 8 : Flots dans les reseaux - Implementation et complexite de l’algorithme de Ford et Fulkerson 50/57
![Page 51: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/51.jpg)
Graphe d’ecart
Exemple :arcs conformes
arcs non conformes
1 3 5
2
4 6
7
0(1)
Chapitre 8 : Flots dans les reseaux - Implementation et complexite de l’algorithme de Ford et Fulkerson 51/57
![Page 52: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/52.jpg)
Graphe d’ecart
Exemple :
arcs non conformes
arcs conformes
1 3 5
2
4 6
7
Chapitre 8 : Flots dans les reseaux - Implementation et complexite de l’algorithme de Ford et Fulkerson 52/57
![Page 53: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/53.jpg)
Graphe d’ecartRemarque :La recherche d’une chaıne augmentante se ramene a un parcours
en profondeur dans le graphe d’ecart a partir s.Exemple :
arcs non conformes
arcs conformes
1 3 5
2
4 6
7
Chapitre 8 : Flots dans les reseaux - Implementation et complexite de l’algorithme de Ford et Fulkerson 53/57
![Page 54: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/54.jpg)
Graphe d’ecart
Remarque :On calcule ensuite les capacites residuelles sur la chaıne de s a t.
Exemple :
arcs non conformes
arcs conformes
2 2 3
1
2
1 3 5
2
4 6
7
ε = 1
Chapitre 8 : Flots dans les reseaux - Implementation et complexite de l’algorithme de Ford et Fulkerson 54/57
![Page 55: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/55.jpg)
Complexite
1 Complexite d’une iteration : O(m)
recherche d’une chaıne augmentanteparcours en profondeur :O(m)2m arcs au pluscalcul de la capacite residuelle pour la chaınetrouver le minimum d’au plus n − 1 capacites residuellesO(n)calcul du nouveau flot : O(n)construction du nouveau graphe d’ecart :au max 2× (n − 1) arcs qui changent : O(n)
2 Nombre max d’iterations de Ford / Fulkerson
Chapitre 8 : Flots dans les reseaux - Implementation et complexite de l’algorithme de Ford et Fulkerson 55/57
![Page 56: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/56.jpg)
Complexite
1 Complexite d’une iteration : O(m)
2 Nombre max d’iterations de Ford / Fulkersonhypotheses : c ∈ N et le flot de depart est entier.Les capacites residuelles sont entieres.⇒ la suite des flots est entiere.⇒ la valeur du flot augmente au moins de 1 a chaqueiteration.⇒ au plus F ∗ iterations avec F ∗=valeur du flot max.F ∗ ≤
∑j c(s, j) ≤ (n − 1)C avec C = max
(i ,j)∈~Ec(i , j)
donc au pire, (n − 1)C iterations.
Complexite dans le pire des cas de Ford / Fulkerson : O(n.m.C )
Chapitre 8 : Flots dans les reseaux - Implementation et complexite de l’algorithme de Ford et Fulkerson 56/57
![Page 57: Chapitre 8 : Flots dans les r eseaux - LIPNborne/Docs/Graphes_chap8_Flots_Pres.pdf · Chapitre 8 : Flots dans les r eseaux Algorithmique de graphes Sup Galil ee-INFO2 Sylvie Borne](https://reader034.vdocuments.net/reader034/viewer/2022051909/5ffd2ce637fda55f111c0298/html5/thumbnails/57.jpg)
Ameliorations de Ford et Fulkerson
Idee 1 : Choisir une chaıne augmentante de capacite residuellemaximum.→ pas de garantie que les augmentations suivantes→ ce n’est plus un parcours mais la recherche d’un chemin dedebit maximum
Idee 2 : Choisir une chaıne augmentante la plus courte possible entermes de nombre d’arcs.→ parcours en largeur
Chapitre 8 : Flots dans les reseaux - Implementation et complexite de l’algorithme de Ford et Fulkerson 57/57