Chapitre 8 : Flots dans les r´ eseaux
Algorithmique de graphes Sup Galil´ee-INFO2
Sylvie Borne
2011-2012
Chapitre 8 : Flots dans les r´eseaux - 1/57
Plan
1 Flot r´ealisable
2 Le probl`eme du flot maximum Exemple
Plusieurs sources, plusieurs puits
Flot maximum et programmation lin´eaire
3 Chaˆınes augmentantes
4 Algorithme de Ford et Fulkerson (1961) Proc´edure de marquage (labelling) Algorithme de la chaˆıne augmentante Algorithme de Ford et Fulkerson
5 La coupe minimum
6 Impl´ementation et complexit´e de l’algorithme 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 d’une quantit´e de marchandises (divisibles : on peut acheminer nos marchandises par des routes diff´erentes) 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 d’eau (canalisations)
transport de p´etrole : r´eseau`e de pipelines
´
energie : r´eseau EDF, centrales → clients
information : r´eseau t´el´ephonique, r´eseau d’entreprises, internet.
Chapitre 8 : Flots dans les r´eseaux - 4/57
R´ eseau de transport
D´efinition:r´eseau de transport
Un r´eseau de transport not´eR= (G = (V, ~E),s,t,c) est form´e de :
G = (V, ~E) un graphe orient´e s ∈V appel´e sommet source
t ∈V appel´e sommet destination ou puits
c :~E →N,Q+ fonction capacit´e (`a chaque arc (i,j)∈~E est associ´ee une capacit´ec(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 r´ ealisable
D´efinition:flot r´ealisable
Soit R= (G = (V, ~E),s,t,c) un r´eseau. Un flot f dans Rest une applicationf :→N,Q+.
Un flotf est r´ealisable dans R si
1 contrainte de capacit´e
0≤f(i,j)≤c(i,j) ∀(i,j)∈~E
2 contraintes de conservation de flot (Loi de Kirschoff) X
i|(i,j)∈~E
f(i,j)− X
k|(j,k)∈~E
f(j,k) = 0 ∀j ∈V\{s,t}
(quantit´e qui entre dansj = quantit´e qui sort de j)
Chapitre 8 : Flots dans les r´eseaux - Flot r´ealisable 6/57
Flot r´ ealisable
Exemple :
s
v1
v2
t
(5)
(6)
(4)
(7)
( ?)
5
5
2 3
7
capacit´e flot x (2)
Le flot est r´ealisable.
contraintes de capacit´e Ok contraintes de conservation de flot Ok
env1 : 5-2-3=0 env2 : 5+2-7=0
Chapitre 8 : Flots dans les r´eseaux - Flot r´ealisable 7/57
Valeur d’un flot
D´efinition:valeur d’un flot
Soit R= (G = (V, ~E),s,t,c) un r´eseau.
La valeur d’un flotf r´ealisable entres et t est la quantit´e de flot envoy´ee des `a t. On la noteF et
F = X
i|(s,i)∈~E
f(s,i)− X
j|(j,s)∈E~
f(j,s) = X
i|(i,t)∈~E
f(i,t)− X
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 r´eseaux - Flot r´ealisable 8/57
Arc satur´ e
D´efinition:arc satur´e
Un arc (i,j) est dit satur´e pour un flotf si f(i,j) =c(i,j).
Exemple :
s
v1
v2
t
(5)
(6)
(4)
(7)
( ?)
5
5
2 3
7
capacit´e flot x (2)
Ici, les arcs (s,1),(1,2) et (2,t) sont satur´es.
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 v´erifi´ee en tout sommet (y compris (s et t), on ajoute un arc artificiel (t,s) de capacit´e infinie et appel´e arc de retour.
s
v1
v2
t
(5)
(6)
(4)
(7) 5
5
2 3
7 (2)
F= 10 (+∞)
Si aucun autre arc n’entre en s, la valeur F du flot f est alors donn´ee `af(t,s).
Chapitre 8 : Flots dans les r´eseaux - Flot r´ealisable 10/57
Le probl` eme du flot maximum
Probl`eme :
Soit un r´eseau R= (G = (V, ~E),s,t,c).
Le probl`eme du flot maximum consiste `a d´eterminer un flot r´ealisable 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 donn´e dans le r´eseau pr´ec´edent n’est pas maximum. En effet, on peut trouver un flot de valeur 11.
s
v1
v2
t
(5)
(6)
(4)
(7) (2)
5
7 6
1 4
11 11
Ce nouveau flot est maximum.
En effet, on remarque qu’au mieux il peut rentre 11 unit´es de flot danst `a cause des capacit´es 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 g´en´eralis´e de la mani`ere suivante :
Supposons qu’il existe un ensemble de sommets sources et un ensemble de puits.
On d´esire d´eterminer un flot max qui peut ˆetre envoy´e de toutes les sources aux diff´erents puits.
Ce probl`eme peut ˆetre ramen´e au probl`eme pr´ec´edent en ajoutant une super-sources0 et un super-puits t0. On relie la super-source `a toutes les sources avec des arcs de capacit´e infinie et on relie le super-puits aux diff´erents puits avec des arcs de capacit´e infinie. Le probl`eme se ram`ene alors `a un probl`eme de flot max de s0 `at0.
Chapitre 8 : Flots dans les r´eseaux - Le probl`eme du flot maximum 13/57
Plusieurs sources, plusieurs puits
Exemple :
sources : v1 etv2 et puits :v4 etv5
s0
v1
v2
v3
v4
v5
t0
1
(+∞)
(+∞) (4)
(3)
(4)
(2) (+∞)
(+∞) (1)
(2)
(1)
Chapitre 8 : Flots dans les r´eseaux - Le probl`eme du flot maximum 14/57
Flot maximum et PL
Soientf(i,j) = flot transitant sur l’arc (i,j) ∀(i,j)∈E~ F = valeur du flotf
Le probl`eme du flot maximum entre s et t peut se formuler de la mani`ere suivante :
Max F
s.c. X
i|(i,j)∈~E
f(i,j)− X
k|(j,k)∈~E
f(j,k) =
−F sij=s 0 sij6=s,t
F sij=t
∀j∈V
0≤f(i,j)≤c(i,j) ∀(i,j)∈E~
Ce programme lin´eaire a|~E|+ 1 variables et 2|~E|+|V|contraintes.
Chapitre 8 : Flots dans les r´eseaux - Le probl`eme du flot maximum 15/57
Chaˆınes augmentantes
Exemple :
s
v1
v2
t
(5)
(6)
(4)
(7) (2)
Pour d´eterminer un flot maximum dans ce r´eseau, on peut commencer par envoyer du flot sur des chemins des `at.
Chapitre 8 : Flots dans les r´eseaux - Chaˆınes augmentantes 16/57
Chaˆınes augmentantes
→Par exemple, on peut commencer par envoyer un flot de 2 sur le chemin (s,1,2,t).
s
v1
v2
t
(5)
(6)
(4)
(7) (2)
Chapitre 8 : Flots dans les r´eseaux - Chaˆınes augmentantes 17/57
Chaˆınes augmentantes
→Vu qu’il y a une r´eserve de capacit´e de 3 sur le chemin (s,1,t), on peut envoyer 3 unit´es de flot.
s
v1
v2
t
(5)
(6)
(4)
(7) (2)
2
2 2
2 2
0
0
Chapitre 8 : Flots dans les r´eseaux - Chaˆınes augmentantes 18/57
Chaˆınes augmentantes
→Vu qu’il reste une r´eserve de 5 sur le chemin (s,2,t), on peut envoyer un flot de 5 sur ce chemin.
s
v1
v2
t
(5)
(6)
(4)
(7) (2)
5
5
2
2 5
3
0
Mais ce flot n’est pas maximum.
Chapitre 8 : Flots dans les r´eseaux - Chaˆınes augmentantes 19/57
Chaˆınes augmentantes
Consid´erons 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 r´eseaux - Chaˆınes augmentantes 20/57
Chaˆınes augmentantes
Donc en augmentant le flot de 1 sur les arcs (s,2) et (1,t) et en le diminuant de 1 sur l’arc (1,2) on aura le flot r´ealisable suivant :
s
v1
v2
t
(5)
(6) (7)
(2) 5
2 3 10
5 7 10
(4)
Chapitre 8 : Flots dans les r´eseaux - Chaˆınes augmentantes 21/57
Chaˆınes augmentantes
Les contraintes de conservation de flot sont respect´ees.
v1
v2
t +1
-1 s
v1
v2 +1
-1
Chapitre 8 : Flots dans les r´eseaux - Chaˆınes augmentantes 22/57
Chaˆınes augmentantes
D´efinition:chaˆıne augmentante
Une chaˆıneC entre s et t est dite augmentante par rapport `a un flotf = (f(i,j),(i,j)∈E~) r´ealisable entres 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) o`u C+ est l’ensemble des arcs de C rencontr´es dans le bon sens et C− est l’ensemble des arcs deC rencontr´es dans le sens contraire.
Chapitre 8 : Flots dans les r´eseaux - Chaˆınes augmentantes 23/57
Chaˆınes augmentantes
Exemple :
s
v1
v2
t
(6)
(4) (2)
arcs conformes arcs non conformes 5<6, 2>0, 3<4
La chaˆıne (s,2,1,t) est bien une chaˆıne augmentante.
Chapitre 8 : Flots dans les r´eseaux - Chaˆınes augmentantes 24/57
Chaˆınes augmentantes
Lemme :
Soitf = (f(i,j),(i,j)∈~E) r´ealisable entre s et t.
S’il existe une chaˆıne augmentante par rapport `af entres et t,
alors f n’est plus maximum.
Preuve :
Chapitre 8 : Flots dans les r´eseaux - Chaˆınes augmentantes 25/57
Proc´ edure de marquage
Cette proc´edure permet, ´etant donn´e un flot r´ealisable, de
d´eterminer si elle existe, une chaˆıne augmentante par rapport `af. Cette proc´edure est bas´ee sur 2 op´erations de marquage dits : marquage direct et marquage indirect.
Chapitre 8 : Flots dans les r´eseaux - 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 j
i marqu´e j non marqu´e 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 quantit´e max avec laquelle on peut augmenter le flot de s `aj.
(δ(i) est une valeur associ´ee `ai, elle est initialis´ee `a l’infini pours.)
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 j
i marqu´e j non marqu´e 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 chaˆıne augmentante
Supposons que l’on dispose d’un flot r´ealisable f = (f(i,j),(i,j)∈~E) entres et t.
Etape 1´ : (initialisation)
Marquer s par (s,+).
Poser δ(s) = +∞.
Etape 2´ : R´ep´eter les op´erations suivantes jusqu’`a ce que t soit marqu´e ou qu’il ne soit plus possible de mar- quer.
Chapitre 8 : Flots dans les r´eseaux - Algorithme de Ford et Fulkerson (1961) 29/57
Algorithme de la chaˆıne augmentante
Op´eration a)
Siil existe un arc (i,j) tel que i marqu´e
j non marqu´e f(i,j)<c(i,j) Alors
Marquer j par (i,+)
Poser δ(j) =min(δ(i),c(i,j)−f(i,j))
Chapitre 8 : Flots dans les r´eseaux - Algorithme de Ford et Fulkerson (1961) 30/57
Algorithme de la chaˆıne augmentante
Op´eration b)
Siil existe un arc (j,i) tel que i marqu´e
j non marqu´e f(j,i)>0 Alors
Marquer j par (i,−)
Poser δ(j) =min(δ(i),f(j,i))
Chapitre 8 : Flots dans les r´eseaux - Algorithme de Ford et Fulkerson (1961) 31/57
Algorithme de la chaˆıne augmentante
Etape 3´ : Si t est marqu´e Alors
une chaˆıne augmentante C entre s et t est d´etect´ee et on pose =δ(t)
Sinon
le flot f est maximum.
Chapitre 8 : Flots dans les r´eseaux - Algorithme de Ford et Fulkerson (1961) 32/57
Algorithme de la chaˆıne augmentante
Exemple :
Consid´erons le r´eseau suivant o`u le flot de d´epart 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 r´eseaux - Algorithme de Ford et Fulkerson (1961) 33/57
Algorithme de Ford et Fulkerson
On suppose que l’on dispose d’un flot initialf = (f(i,j),(i,j)∈~E) entres et t (on peut prendref = 0).
Etape 1´ : Appliquer l’algorithme de la chaˆıne augmentante `a f.
Si t est marqu´e,
STOPf est optimal.
Sinon
une chaˆıne augmentanteC est d´etect´ee, aller `a l’´etape 2.
Etape 2´ : Changer le flot f comme suit : f(i,j) =
f(i,j) si (i,j)6∈ C f(i,j) + si (i,j)∈ C+ f(i,j)− si (i,j)∈ C− Aller `a l’´etape 1.
Chapitre 8 : Flots dans les r´eseaux - Algorithme de Ford et Fulkerson (1961) 34/57
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) 4 (1)
1 0
3
4 5
0
2 0
2
1
1 2
7 9
9
Chapitre 8 : Flots dans les r´eseaux - Algorithme de Ford et Fulkerson (1961) 35/57
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) 4 (1)
1 0
3
4
2
1 1 11 7
2 0
7
2
4
11
Chapitre 8 : Flots dans les r´eseaux - Algorithme de Ford et Fulkerson (1961) 36/57
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) 4 (1)
1 0
3
4
2
1 1 7 7
2 13
2
4
6
13
Chapitre 8 : Flots dans les r´eseaux - Algorithme de Ford et Fulkerson (1961) 37/57
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) 4 (1)
1 0
3
4
1 7
4
6 14
3
1 3
0
8 14
Chapitre 8 : Flots dans les r´eseaux - Algorithme de Ford et Fulkerson (1961) 38/57
Coupe
D´efinition:coupe
Etant donn´´ e un graphe G = (V, ~E) et un sous-ensembleS de sommets deV, on appelle coupe associ´ee `a S, et on la noteδ(S), l’ensemble des arcs (i,j) tels que i ∈S etj ∈V\S.
Chapitre 8 : Flots dans les r´eseaux - La coupe minimum 39/57
Coupe
Exemple :
1 2
5 4
3
δ({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:s´epare
Etant donn´´ es deux sommetss ett deG et une coupeδ(S), on dit queδ(S) s´epare s ett sis ∈S et t∈V\S.
Exemple :
1 2
5 4
3
La coupe ci-contre s´epare1 et 5.
Elle s´epare aussi 3et 2.
Chapitre 8 : Flots dans les r´eseaux - La coupe minimum 41/57
Capacit´ e d’une coupe
D´efinition:capacit´e d’une coupe
Sic = (c(i,j),(i,j)∈~E) est un syst`eme de capacit´es associ´e aux arcs du grapheG = (V, ~E) et siδ(S) est une coupe du graphe alors la capacit´e de δ(S) est d´efinie par
C(δ(S)) = X
(i,j)∈δ(S)
c(i,j).
Chapitre 8 : Flots dans les r´eseaux - La coupe minimum 42/57
Flots et coupes
Th´eor`eme :
Soit un r´eseau R= (G = (V, ~E),s,t,c).
Si f = (f(i,j),(i,j)∈E~) est un flot r´ealisable entre s et t de valeurF et si δ(S) est une coupe qui s´epare s et t alors
F ≤C(δ(S)).
Preuve :
Chapitre 8 : Flots dans les r´eseaux - La coupe minimum 43/57
Th du flot max - coupe min
Th´eor`eme : Th du flot max - coupe min
La valeur maximum d’un flot r´ealisable entre s et t est ´egale
`a la capacit´e minimum d’une 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 :
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 8 14
Remarque :
Tous les arcs appartenant `a la coupe sont satur´es et la valeur du flot sur ces arcs est bien de3+4+1+6=14.
Chapitre 8 : Flots dans les r´eseaux - La coupe minimum 45/57
Flots entiers
Remarque :
Si les capacit´es sont enti`eres alors le flot max a des valeurs enti`eres.
Chapitre 8 : Flots dans les r´eseaux - La coupe minimum 46/57
Graphe d’´ ecart
D´efinition:graphe d’´ecart
Soit R= (G = (V, ~E),s,t,c) un r´eseau. Soit f un flot sur R.
Gf = (V, ~Ef) est le graphe d’´ecart def 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)
Chapitre 8 : Flots dans les r´eseaux - Impl´ementation et complexit´e de l’algorithme de Ford et Fulkerson 47/57
Graphe d’´ ecart
Exemple :
1 3 5
2
4 6
7 (5)
(1) (3)
(4) (7)
(2) (4)
(5) (1)
(1) (6)
(9) 4 (1)
4 13
(4) 2
7
1 0
3
4
1
2 1
6
7 13
2
Chapitre 8 : Flots dans les r´eseaux - Impl´ementation et complexit´e de l’algorithme de Ford et Fulkerson 48/57
Graphe d’´ ecart
Exemple :
arcs conformes arcs non conformes
1 3 5
2
4 6
7 4
(5)
Chapitre 8 : Flots dans les r´eseaux - Impl´ementation et complexit´e de l’algorithme de Ford et Fulkerson 49/57
Graphe d’´ ecart
Exemple :
arcs conformes arcs non conformes
1 3 5
2
4 6
7 7
(7)
Chapitre 8 : Flots dans les r´eseaux - Impl´ementation et complexit´e de l’algorithme de Ford et Fulkerson 50/57
Graphe d’´ ecart
Exemple :
arcs conformes arcs non conformes
1 3 5
2
4 6
7 (1)0
Chapitre 8 : Flots dans les r´eseaux - Impl´ementation et complexit´e de l’algorithme de Ford et Fulkerson 51/57
Graphe d’´ ecart
Exemple :
arcs non conformes arcs conformes
1 3 5
2
4 6
7
Chapitre 8 : Flots dans les r´eseaux - Impl´ementation et complexit´e de l’algorithme de Ford et Fulkerson 52/57
Graphe d’´ ecart
Remarque :
La recherche d’une chaˆıne augmentante se ram`ene `a un parcours en profondeur dans le graphe d’´ecart `a partirs.
Exemple :
arcs non conformes arcs conformes
1 3 5
2
4 6
7
Chapitre 8 : Flots dans les r´eseaux - Impl´ementation et complexit´e de l’algorithme de Ford et Fulkerson 53/57
Graphe d’´ ecart
Remarque :
On calcule ensuite les capacit´es r´esiduelles 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 r´eseaux - Impl´ementation et complexit´e de l’algorithme de Ford et Fulkerson 54/57
Complexit´ e
1 Complexit´e d’une it´eration : O(m) recherche d’une chaˆıne augmentante parcours en profondeur :O(m) 2m arcs au plus
calcul de la capacit´e r´esiduelle pour la chaˆıne
trouver le minimum d’au plusn−1 capacit´es r´esiduelles O(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’it´erations de Ford / Fulkerson
Chapitre 8 : Flots dans les r´eseaux - Impl´ementation et complexit´e de l’algorithme de Ford et Fulkerson 55/57
Complexit´ e
1 Complexit´e d’une it´eration : O(m)
2 Nombre max d’it´erations de Ford / Fulkerson hypoth`eses :c ∈Net le flot de d´epart est entier.
Les capacit´es r´esiduelles sont enti`eres.
⇒ la suite des flots est enti`ere.
⇒ la valeur du flot augmente au moins de 1 `a chaque it´eration.
⇒ au plusF∗ it´erations avec F∗=valeur du flot max.
F∗≤P
jc(s,j)≤(n−1)C avec C =max(i,j)∈~Ec(i,j) donc au pire, (n−1)C it´erations.
Complexit´e dans le pire des cas de Ford / Fulkerson : O(n.m.C)
Chapitre 8 : Flots dans les r´eseaux - Impl´ementation et complexit´e de l’algorithme de Ford et Fulkerson 56/57
Am´ eliorations de Ford et Fulkerson
Id´ee 1 : Choisir une chaˆıne augmentante de capacit´e r´esiduelle maximum.
→pas de garantie que les augmentations suivantes
→ce n’est plus un parcours mais la recherche d’un chemin de d´ebit maximum
Id´ee 2 : Choisir une chaˆıne augmentante la plus courte possible en termes de nombre d’arcs.
→parcours en largeur
Chapitre 8 : Flots dans les r´eseaux - Impl´ementation et complexit´e de l’algorithme de Ford et Fulkerson 57/57