Najoua Dridi
Définition
Un réseau est un graphe R=(X,U,c) avec
c: U IN
(i,j)c(i,j)= capacité de l’arc (i,j)
En plus, R dispose de deux sommets particuliers:
• e: entrée du réseau, avec d°int(e)=0
• s: sortie du réseau avec d°ext(s)=0
2
Définition
Flot sur un réseau R:
Soit m le nombre d’arcs de R.
ϕ =(ϕ(u1),…, ϕ(um)) est un flot si pour tout arc u:
• ϕ(u)≥0
• ϕ(u)≤c(u)
• ϕ se conserve aux sommets autres que e et s
ϕ(u)= flux sur l’arc u
3
Problème posé
Etant donné un réseau R=(X,U,c), trouver un flot
ϕ tel que : 0 (e, i) soit maximal
( e,i )U
4
Exemple
5
1ère amélioration: Flot complet
On a ϕ0=120,
Le chemin: e 1 3 s ne contient aucun
arc saturé
Augmentation maximale du flot sur le chemin
saturer l’arc le plus proche de la saturation
7
1ère amélioration- flot complet
En général:
• S’il existe un chemin μ de e vers s sans passer
par un arc saturé, calculer:
d Min ( c ( u ) ( u ))
0
u
Ajouter d à tous les arcs de μ On obtient un
nouveau flot sur R et une augmentation de 0
d’une valeur égale à d
0
10
2ème amélioration: chaîne augmentante
11
2ème amélioration: chaîne augmentante
Définition:
Soit μ une chaîne entre e et s avec:
μ+ ={ arcs de μ orientés de e vers s}
μ- ={ arcs de μ orientés de s vers e}
Si le flux de tout arc de μ+ peut augmenter et
celui de tout arc de μ- est strictement positif,
μ est appelée chaîne augmentante
12
2ème amélioration: chaîne augmentante
Dans le cas général:
Si une chaîne augmentante μ existe, calculer:
d1 Min(c(u ) (u )) d 2 Min( (u ))
u u
d Min(d1 , d 2 )
• Ajouter d au flux de chaque arc de μ+
• Retrancher d au flux de chaque arc de μ-
ϕ0 augmente de d
Refaire ce travail tant qu’une telle chaîne existe.
13
Chaîne augmentante: Procédure de marquage
• Marquer le sommet e par (x)
• A partir de tout sommet i marqué, on marque tout sommet j
par:
(+i) si (i,j) ϕ(i,j)<c(i,j)
(-i) si (j,i) ϕ(j,i)>0
14
Algorithme de Ford- Fulkerson
1/ Choisir un flot quelconque ϕ, calculer ϕ0
2/ Rendre le flot complet
3/ Marquage: Recherche d’une chaîne augmentante
• Si une telle chaîne existe Modifier ϕ sur cette
chaîne: Calculer d1, d2, d ϕ0 = ϕ0 +d
Refaire le marquage
• Sinon, le flot est maximal fin
15
1er Marquage
Reprenons l’exemple précédent et faisons un premier marquage:
16
2 ème Marquage
On ne peut marquer que les sommets e et 1.
s n’est pas marqué le flot obtenu est maximal
17
Flot maximal et coupe de capacité minimale
Notations: Soit A
( A ) ( i , j ) U / i A et j A
( A ) ( i , j ) U / i A et j A
U 1 ( i , j ) U / i A et j A
( A) (u )
u ( A )
( A) (u )
u ( A )
18
Flot maximal et coupe de capacité minimale
Théorème1
Soit A
( A) ( A)
(u ) (u )
( A) U1
(u ) (u )
( A) U1
( A) ( A) □
19
Flot maximal et coupe de capacité minimale
20
Flot maximal et coupe de capacité minimale
Soit A
C
c ((uu )
( A)
A
C
Max 0 Min C
flot A X
e A , s A
21
Flot maximal et coupe de capacité minimale
Preuve
En tenant compte de l’arc de retour, le th1 donne:
(u ) 0 (u ) , d’où
( A) ( A)
0
( A)
(u ) (u )
( A)
comme ϕ ≥ 0 et ϕ ≤ c
0 (u ) c (u )
( A) ( A)
□
22
Flot maximal et coupe de capacité minimale
Preuve
A={sommets marqués au dernier marquage}, d’où
On a : 0 (u ) (u ) , en plus:
( A) ( A)
• u
• u
0 C 0 C
23
Flot maximal et coupe de capacité minimale
+
0 C
24