Vous êtes sur la page 1sur 60

Cours de Graphes

Problèmes de flots.

Théorème du Max-flow – Min-cut.

Algos de Ford-Fulkerson et Edmonds-Karp.

Applications.

5 mars 2008 Cours de graphes 4 - Intranet 1


Les grandes lignes du cours
 Définitions de base
 Connexité
 Les plus courts chemins
 Floyd-Warshall, Dijkstra et Bellmann-Ford
 Arbres
 Arbres de recouvrement minimaux
 Problèmes de flots, Ford & Fulkerson
 Coloriage de graphes
 Couplage
 Chemins d’Euler et de Hamilton
 Problèmes NP-complets
5 mars 2008 Cours de graphes 4 - Intranet 2
I N T R O D U C T I O N

5 mars 2008 Cours de graphes 4 - Intranet 3


Les graphes de flots
-----------------------------------------------------------------
 Un graphe de flot est :
 un graphe orienté,
 les arcs portent des capacités (poids positifs),
 qui possède deux sommets particuliers :
• la source s et le puits p .
 On a en plus :
 Le graphe est quasi-fortement connexe avec s comme unique racine !
 Si nous inversons tous les arcs, le graphe est quasi-fortement connexe avec p
comme unique racine !
 Donc, tout sommet u appartient à un chemin simple orienté qui relie s à p en
passant par u !

5 mars 2008 Cours de graphes 4 - Intranet 4


Les graphes de flots
-----------------------------------------------------------------
Les capacités !
Exemple :
10
20 20
Source s 15
10
10
17 8

10 5
Uniquement
des arcs 15
sortants !
Tous les autres sommets
peuvent être atteints !

5 mars 2008 Cours de graphes 4 - Intranet 5


Les graphes de flots
-----------------------------------------------------------------
Les capacités !
Exemple :
10
20 20
Source s 15 Puits p
10
10
17 8

10 5
Uniquement
15 des arcs
entrants !
Depuis tout autre sommet
nous pouvons atteindre p !

5 mars 2008 Cours de graphes 4 - Intranet 6


Les graphes de flots
-----------------------------------------------------------------
Les capacités !
Exemple :
10
20 20
Source s 15 Puits p
10
10
u 8
17

10 5
15

Tout sommet u appartient à un


chemin simple de s vers p !

5 mars 2008 Cours de graphes 4 - Intranet 7


L A

D Y N A M I Q U E

5 mars 2008 Cours de graphes 4 - Intranet 8


Les graphes de flots
-----------------------------------------------------------------
 La dynamique :

 La source produit, elle est la seule à produire !


 Le puits consomme, il est le seul à le faire !
 Les autres sommets transmettent, sans produire, ni consommer,
ni stocker !

 Un peu de discipline :

 Sur chaque arc le flot est compris entre zéro et la capacité de


l’arc !
 Représentation :

flot / capacité

5 mars 2008 Cours de graphes 4 - Intranet 9


I L L U S T R A T I O N

5 mars 2008 Cours de graphes 4 - Intranet 10


Les graphes de flots
-----------------------------------------------------------------
flot / capacité
Exemple :
5 / 10
10 / 20 13 / 20
Source s 0 / 15 Puits p
5 / 10
0 / 10
5 / 17 8/8

7 / 10 4/5
7 / 15

5 mars 2008 Cours de graphes 4 - Intranet 11


Les graphes de flots
-----------------------------------------------------------------
flot / capacité
Exemple :
10 / 10
15 / 20 18 / 20
Source s 0 / 15 Puits p
5 / 10
0 / 10
5 / 17 8/8

7 / 10 4/5
7 / 15

5 mars 2008 Cours de graphes 4 - Intranet 12


Les graphes de flots
-----------------------------------------------------------------
flot / capacité
Exemple :
10 / 10
15 / 20 18 / 20
Source s 0 / 15 Puits p
5 / 10
1 / 10
6 / 17 8/8

7 / 10 5/5
7 / 15

5 mars 2008 Cours de graphes 4 - Intranet 13


Les graphes de flots
-----------------------------------------------------------------
flot / capacité
Exemple :
10 / 10
15 / 20 18 / 20
Source s 0 / 15 Puits p
5 / 10
1 / 10
6 / 17 8/8

7 / 10 5/5
7 / 15 Voici une coupe
qui est saturée !

En rouge les arcs qui


gardent de la marge !
5 mars 2008 Cours de graphes 4 - Intranet 14
U N E

A P P L I C A T I O N

5 mars 2008 Cours de graphes 4 - Intranet 15


Application
-----------------------------------------------------------------

 La SNCF étudie son réseau ferré de la région parisienne :

 Nous connaissons les capacités des gares de Paris !


 Nous connaissons le réseau et ses capacités !
 Nous connaissons les capacités des gares de banlieue !

 Nous limitons les capacités des trains dans les gares !

 Nous levons cette limitation pour certaines gares !


 Nous limitons la capacité globale de tous les trains !

5 mars 2008 Cours de graphes 4 - Intranet 16


Application
-----------------------------------------------------------------
Capacités de trains en gares, au départ !
Limitation 23 17
globale Lyon
en Versailles
50 20
trains ! Austerlitz
Evry
250 +
Lazare
S Marne la Vallée P
Est
Saint-Denis 25
40
Nord
23
25
Les capacités d’accueil Les lignes Les capacités d’accueil
des différentes gares ! et leurs des différentes gares !
capacités !

5 mars 2008 Cours de graphes 4 - Intranet 17


Application
-----------------------------------------------------------------
Capacités de trains en gares, au départ !
Limitation 23 17
globale Lyon
en Versailles
50 20
trains ! Austerlitz
Evry
250 +
Lazare
S Marne la Vallée P
Est
Saint-Denis 25
40
Nord
23
25
Les capacités d’accueil Les lignes Les capacités d’accueil
des différentes gares ! et leurs des différentes gares !
capacités !

5 mars 2008 Cours de graphes 4 - Intranet 18


L E S

D E F I N I T I O N S

D E

B A S E
5 mars 2008 Cours de graphes 4 - Intranet 19
Définitions
-----------------------------------------------------------------
 La représentation :
 Les capacités : c : V x V -> R+
I
 Si ( u , v ) n’existe pas, alors c ( u , v ) = 0 !

 Les flots : f : V x V -> R ( flots négatifs ! )


 f ( u , v ) >= 0 , si le flot va de u vers v , I
 f ( u , v ) <= 0 , si le flot va de v vers u !

 Les contraintes :
 f ( u , v ) <= c ( u , v )
 f(u,v) = -f(v,u)

 f ( u , v ) = 0 , si u est différent de s et de p .

vV
5 mars 2008 Cours de graphes 4 - Intranet 20
F O R D & F U L K E R S O N

U N

A L G O R I T H M E

G E N E R I Q U E
5 mars 2008 Cours de graphes 4 - Intranet 21
Ford & Fulkerson
-----------------------------------------------------------------

Initialiser le flot à 0

Tantqu’il existe un chemin augmentant

Augmenter le flot le long


du chemin en question !

C’est quoi ?

Comment le trouver ?

Lequel choisir ?

5 mars 2008 Cours de graphes 4 - Intranet 22


L E S

F L O T S

5 mars 2008 Cours de graphes 4 - Intranet 23


Ford & Fulkerson
-----------------------------------------------------------------
 Comment changer le flot ?
f(u,v) = -f(v,u)
c(u,v)
f(u,v)
u v
c(v,u)
Attention :
 D’abord :
f ( u , v ) <= c ( u , v ) +/- c ( u , v )
=/
- f ( u , v ) = f ( v , u ) <= c ( v , u )
+/- c ( v , u )
 Donc :

- c ( v , u ) <= f ( u , v ) <= c ( u , v )

5 mars 2008 Cours de graphes 4 - Intranet 24


Ford & Fulkerson
-----------------------------------------------------------------
 Comment changer le flot ?
f(u,v) = -f(v,u)
c(u,v)
f(u,v)
u v
c(v,u)

 Ensuite :
 Le flot f ( u , v ) est le flot dans l’arc ( u , v ) diminué du flot
dans l’arc ( v , u ) !

3/5 2/5
+2 -1
u v u v
1/4 3/4

5 mars 2008 Cours de graphes 4 - Intranet 25


Ford & Fulkerson
-----------------------------------------------------------------
 Comment changer le flot ?
f(u,v) = -f(v,u)
c(u,v)
f(u,v)
u v
c(v,u)

 Le flot dans l’arc ( u , v ) est porté au maximum !


 Le flot dans l’arc ( v , u ) est ramené à zéro !
5/5
+5
u v
0/4

5 mars 2008 Cours de graphes 4 - Intranet 26


Ford & Fulkerson
-----------------------------------------------------------------
 Comment changer le flot ?
f(u,v) = -f(v,u)
c(u,v)
f(u,v)
u v
c(v,u)

 Le flot dans l’arc ( v , u ) est porté au maximum !


 Le flot dans l’arc ( u , v ) est ramené à zéro !
0/5 0/5
-4 +4
u v v u
4/4 4/4

5 mars 2008 Cours de graphes 4 - Intranet 27


L E S

C A P A C I T E S

R E S I D U E L L E S

5 mars 2008 Cours de graphes 4 - Intranet 28


Ford & Fulkerson
-----------------------------------------------------------------
 Comment changer le flot ?
f(u,v) = -f(v,u)
c(u,v)
f(u,v)
u v
c(v,u)

r(u,v) = c(u,v) - f(u,v)

r(v,u) = c(v,u) - f(v,u)

r ( u , v ) = +/- r ( v , u )

/
5 mars 2008 Cours de graphes 4 - Intranet 29
Ford & Fulkerson
-----------------------------------------------------------------
 Comment changer le flot ?
f(u,v) = -f(v,u)
c(u,v)
f(u,v)
u v
c(v,u)

r(u,v) = c(u,v) - f(u,v)


0 X3 / 5
r(u,v) = 5–2 = 3
2 -6
u v
4 X1 / 4 r ( v , u ) = 4 – (– 2) = 6

5 mars 2008 Cours de graphes 4 - Intranet 30


L E

G R A P H E

R E S I D U E L

5 mars 2008 Cours de graphes 4 - Intranet 31


Ford & Fulkerson
-----------------------------------------------------------------
 Le graphe résiduel donne pour toute paire de sommets u et v la
marge de flot qui est encore disponible !

3/5
-2
u v
1/4

5 mars 2008 Cours de graphes 4 - Intranet 32


Ford & Fulkerson
-----------------------------------------------------------------
 Le graphe résiduel donne pour toute paire de sommets u et v la marge de flot qui est
encore disponible !

 Le graphe résiduel R :

 Il a les mêmes sommets que le graphe de flot G !


 Il possède un arc ( u , v ) si la capacité résiduelle r ( u , v ) dans le graphe G est
strictement positive !
 L’arc en question est pondéré par la capacité résiduelle !

 Un chemin augmentant est un chemin de s vers p dans le graphe résiduel R !

 Le poids du chemin augmentant est le poids de l’arc le plus léger du chemin augmentant
!

5 mars 2008 Cours de graphes 4 - Intranet 33


I L L U S T R A T I O N

5 mars 2008 Cours de graphes 4 - Intranet 34


Ford & Fulkerson
-----------------------------------------------------------------
u
1/4 0/3
 Un exemple :
s 2/3 1/2 p Le graphe G !
r(s,u) =
c(s,u) - f(s,u) 2/6 3/3
= 4–1 = 3 v

r(u,s) = u
c(u,s) - f(u,s) 3
= c(u,s)+f(s,u)
1
= 0+1 = 1 s p Construction
du graphe R !

5 mars 2008 Cours de graphes 4 - Intranet 35


Ford & Fulkerson
-----------------------------------------------------------------
u
1/4 0/3
 Un exemple :
s 2/3 1/2 p Le graphe G !
r(s,v) =
c(s,v) - f(s,v) 2/6 3/3
= 6–2 = 4 v

r(v,s) = u
c(v,s) - f(v,s) 3
= c(v,s)+f(s,v)
1
= 0+2 = 2 s p Construction
2 du graphe R !
4
v

5 mars 2008 Cours de graphes 4 - Intranet 36


Ford & Fulkerson
-----------------------------------------------------------------
u +3
1/4 0/3
 Un exemple :
-2 +1
s 2/3 1/2 p Le nouveau
graphe G !
+3
2/6 3/3
v Un chemin
augmentant
u de poids 3 !
3
3
1
s 2 3 p Le graphe
2 résiduel R !
4 3
v

5 mars 2008 Cours de graphes 4 - Intranet 37


Ford & Fulkerson
-----------------------------------------------------------------

 Pour changer le flot :

4/7 6/7
devient
+2

4/7 2/7
devient
+2

4/7 5/7 4/7


devient ou
2/5 1/5 0/5
+2 ou ...

5 mars 2008 Cours de graphes 4 - Intranet 38


Ford & Fulkerson
-----------------------------------------------------------------
u
1/4 3/3
 Suite . . .
s 0/3 2/2 p Le nouveau
graphe G !
5/6 3/3
v

u
3
3
1
s 5 p Construction
5 du graphe R !
1 3
v

5 mars 2008 Cours de graphes 4 - Intranet 39


Ford & Fulkerson
-----------------------------------------------------------------
 Pour calculer plus rapidement . . .
 Si le graphe résiduel comporte la situation suivante ( l’arc ( v , u )
peut être absent si y = 0 ) ,
x
u v
y
 et que le chemin augmentant passe par l’arc ( u , v ) avec un poids
p,
 alors dans le nouveau graphe nous avons la situation suivante ( l’arc (
u , v ) peut être absent si x – p = 0 ) :
x-p
u v
y+p

5 mars 2008 Cours de graphes 4 - Intranet 40


Ford & Fulkerson
-----------------------------------------------------------------
u
3
 Illustration : 3
1
s 2 3 p L’ancien
Un chemin 2 graphe R !
augmentant 4 3
de poids 3 ! v

u
3
3
1
s 5 p Le nouveau
5 graphe R !
1 3
v

5 mars 2008 Cours de graphes 4 - Intranet 41


Ford & Fulkerson
-----------------------------------------------------------------
u
3
 Illustration : 3
1
s 2 3 p L’ancien
Un chemin 2 graphe R !
augmentant 4 3
de poids 3 ! v

u
3
3
1
s 5 p Le nouveau
5 graphe R !
1 3
v

5 mars 2008 Cours de graphes 4 - Intranet 42


Ford & Fulkerson
-----------------------------------------------------------------
u
1/4 3/3
 Suite . . .
s 0/3 2/2 p Le nouveau
graphe G !
Les arcs qui 5/6 3/3
gardent une v
marge ! ! !
u
3
3
1
s 5 p Le nouveau
5 graphe R !
1 3
v

5 mars 2008 Cours de graphes 4 - Intranet 43


L E
T H E O R E M E
D U
F L O T M A X I M A L
E T D E
L A C O U P E
M I N I M A L E
5 mars 2008 Cours de graphes 4 - Intranet 44
Théorème du Max-Flow Min-Cut
-----------------------------------------------------------------
 Une coupe ( S , P ) ( cut en anglais ) :

s ... ... p

S P
 Nous partitionnons les sommets du graphe pour

 obtenir une partie S quasi-fortement connexe de racine s


 et une partie P quasi-fortement connexe de racine p , si nous inversons les
arcs.

5 mars 2008 Cours de graphes 4 - Intranet 45


Théorème du Max-Flow Min-Cut
-----------------------------------------------------------------
 Le flot à travers une coupe ( S , P ) : f ( S , P )

f(S,P) =  f(u,v) = 4+2-3

uS
vP
4/…

s ... 3/… ... p

2/…
 Dans le sens S’ P’P , nous S
S vers P en positifS’’
comptons ! P’’
 Dans le sens P vers S , nous comptons en négatif !

5 mars 2008 Cours de graphes 4 - Intranet 46


Théorème du Max-Flow Min-Cut
-----------------------------------------------------------------
 La capacité d’une coupe ( S , P ) : c ( S , P )

c(S,P) =  c(u,v) = 4+2

uS
vP
…/4

s ... …/3 ... p

…/2
 Dans le sens S vers P , nous S P
considérons l’arc !
 Dans le sens P vers S , nous ignorons l’arc !

5 mars 2008 Cours de graphes 4 - Intranet 47


Théorème du Max-Flow Min-Cut
-----------------------------------------------------------------
 Pour toute coupe ( S , P ) , nous avons :

f ( S , P ) <= c ( S , P )

4/7

s ... 3/4 ... p

2/5
f ( S , P ) = 4 + 2 – 3 <= 4 + 2 <= 7 + 5 = c ( S , P )
S P
f ( S , P ) =  f ( u , v ) <=  f ( u , v ) <=  c ( u , v ) = c ( S , P )
u  S , v P u  S , v P u  S , v P
f ( u , v ) >= 0

5 mars 2008 Cours de graphes 4 - Intranet 48


Théorème du Max-Flow Min-Cut
-----------------------------------------------------------------
 Pour le flot f à travers un graphe G, nous avons :

 f = f ( S , P ) , quelque soit la coupe ( S , P ) !

 Pour toute coupe ( S , P ) , on a f ( S , P ) <= c ( S , P ) !

 Donc, 0 <= f <= min c(S,P)


coupes ( S , P )
…/5
…/7
…/8
s p
…/3 …/1
f <= 10 …/7
f <= 6
5 mars 2008 Cours de graphes 4 - Intranet 49
L E

T H E O R E M E

M A X - F L O W

M I N - C U T
5 mars 2008 Cours de graphes 4 - Intranet 50
Théorème du Max-Flow Min-Cut
-----------------------------------------------------------------
 Les trois conditions suivantes sont équivalentes :
 ( 1 ) Le flot f est maximal !
 ( 2 ) Le graphe résiduel ne contient pas de chemin augmentant !
 ( 3 ) Il existe une coupe ( S , P ) telle que f = c ( S , P ) ! Cette coupe est minimale et
saturée !
 ( 1 ) => ( 2 ) , par absurde !
 S’il y a un chemin augmentant, f n’est pas maximal.
 ( 3 ) => ( 1 )
 Si il existe ( S , P ) telle que f = c ( S , P ) , nous avons
c ( S , P ) = f <= min c ( S , P ) ! f est donc maximal !
coupes ( S , P )

5 mars 2008 Cours de graphes 4 - Intranet 51


Théorème du Max-Flow Min-Cut
-----------------------------------------------------------------
 ( 2 ) => ( 3 )
 Il y a une coupe ( S , P ) avec des arcs retour seulement !

u v
s ... x y ... p
r(u,v) = 0
et donc
a b f(u,v) = c(u,v)
S P r(x,y) = 0
et donc
 Dans le graphe G, il y a trois cas :
f(y,x) = 0
u v
s ... x y ... p r(a,b) = 0
et donc
a b f(a,b) = c(a,b)
S P
5 mars 2008 Cours de graphes 4 - Intranet 52
C O M P L E X I T E

5 mars 2008 Cours de graphes 4 - Intranet 53


Complexité
-----------------------------------------------------------------

 Le calcul du graphe résiduel R et du chemin augmentant est en  ( |


E|)!

 Le nombre d’itérations peut être aussi élevé que la valeur du flot


optimal f* !

1/1000 1/1000

0/1

1/1000 1/1000

Re-nouveau graphe !

5 mars 2008 Cours de graphes 4 - Intranet 54


Complexité
-----------------------------------------------------------------
 Nous améliorons l’algorithme en choisissant le chemin augmentant
le plus lourd à chaque fois !
 C’est celui dont l’arc le plus léger est le plus lourd possible !
 Il est difficile d’établir une borne sur le nombre d’itérations !

 C’est une variante de Dijkstra :



Les arcs inexistants sont initialisés à - ,
 avec extrait_max_D à la place de extrait_min_D et

relax ( x , v )
si min ( D ( x ) , M ( x , v ) ) > D ( v )
D ( v ) <- min ( D ( x ) , M ( x , v ) )
P ( v ) <- x
5 mars 2008 Cours de graphes 4 - Intranet 55
Complexité
-----------------------------------------------------------------
 L’algorithme d’Edmonds et Karp :

 choisit le chemin augmentant le plus court en nombre d’arcs


 et utilise le classique algorithme de la vague pour le trouver.

 Cet algorithme nécessite au plus O ( | V | * | E | ) itérations,

 d’où une complexité globale qui de O ( | V | * | E |^2 ) = O ( | V |


^5 ) .

5 mars 2008 Cours de graphes 4 - Intranet 56


Complexité
-----------------------------------------------------------------
 L’idée derrière Edmonds-Karp :
Le chemin
augmentant !
Graphe s p
résiduel : ... Certains arcs
de retour !

Certains arcs
Nouveau aller !
graphe s p
... Tous les arcs
résiduel :
de retour !
 Il y a de plus en plus de chemins de retour de p vers s !
 Il y a de moins en moins de chemins de s vers p !
 Les chemins augmentants deviennent de plus en plus long !

5 mars 2008 Cours de graphes 4 - Intranet 57


V A R I A N T E S

5 mars 2008 Cours de graphes 4 - Intranet 58


Variantes
-----------------------------------------------------------------

 Réseau de flot multi-sources, multi-puits :

s p
1 1
S P Avec des capacités
s p assez grandes pour
n m les arcs rouges !
 Ce n’est plus le même problème, si s doit envoyer
i à p ! i
s p
1 1
Les arcs transportent
des flots de couleurs
s p mais rien ne garantit la
n n bonne destination !

5 mars 2008 Cours de graphes 4 - Intranet 59


Variantes
-----------------------------------------------------------------

 Nous pouvons aussi faire dépendre la capacité de la couleur ( encore


appelé multi-capacités ) !

…/5
s p
1 …/7 1

s p
n n

 La plupart des variantes de problèmes de flots deviennent vite


compliquées et difficiles à résoudre ! ! !

5 mars 2008 Cours de graphes 4 - Intranet 60

Vous aimerez peut-être aussi