5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
11
Cours de GraphesCours de Graphes
Problèmes de flots.Problèmes de flots.
Théorème du Max-flow – Min-cut.Théorème du Max-flow – Min-cut.
Algos de Ford-Fulkerson et Edmonds-Algos de Ford-Fulkerson et Edmonds-Karp.Karp.
Applications.Applications.
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
22
Définitions de baseDéfinitions de base ConnexitéConnexité Les plus courts cheminsLes plus courts chemins Floyd-Warshall, Dijkstra et Bellmann-Floyd-Warshall, Dijkstra et Bellmann-
FordFord ArbresArbres Arbres de recouvrement minimaux Arbres de recouvrement minimaux Problèmes de flots, Ford & FulkersonProblèmes de flots, Ford & Fulkerson Coloriage de graphesColoriage de graphes CouplageCouplage Chemins d’Euler et de HamiltonChemins d’Euler et de Hamilton Problèmes NP-completsProblèmes NP-complets
Les grandes lignes du coursLes grandes lignes du cours
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
33
I N T R O D U C T I O NI N T R O D U C T I O N
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
44
Un graphe de flot est :Un graphe de flot est :
un graphe orienté,un graphe orienté,
les arcs portent des capacités (poids positifs),les arcs portent des capacités (poids positifs),
qui possède deux sommets particuliers :qui possède deux sommets particuliers :
• la source s et le puits p .la source s et le puits p .
On a en plus :On a en plus :
Le graphe est quasi-fortement connexe avec s comme unique Le graphe est quasi-fortement connexe avec s comme unique racine !racine !
Si nous inversons tous les arcs, le graphe est quasi-fortement Si nous inversons tous les arcs, le graphe est quasi-fortement connexe avec p comme unique racine !connexe avec p comme unique racine !
Donc, tout sommet u appartient à un chemin simple orienté qui Donc, tout sommet u appartient à un chemin simple orienté qui relie s à p en passant par u !relie s à p en passant par u !
Les graphes de flotsLes graphes de flots------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
55
1010
Exemple :Exemple :
2020
1010
1010
1515
1717
55
1515
1010
88
2020Source sSource s
Les capacités !Les capacités !
Tous les autres sommetsTous les autres sommetspeuvent être atteints !peuvent être atteints !
Les graphes de flotsLes graphes de flots------------------------------------------------------------------------------------------------------------------------------
----
UniquementUniquementdes arcsdes arcssortants !sortants !
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
66
1010
Exemple :Exemple :
2020
1010
1010
1515
1717
55
1515
1010
88
2020Source sSource s
Les capacités !Les capacités !
Les graphes de flotsLes graphes de flots------------------------------------------------------------------------------------------------------------------------------
----
Puits pPuits p
Depuis tout autre sommetDepuis tout autre sommetnous pouvons atteindre p !nous pouvons atteindre p !
UniquementUniquementdes arcsdes arcs
entrants !entrants !
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
77
1010
Exemple :Exemple :
2020
1010
1010
1515
1717
55
1515
1010
88
2020Source sSource s
Les capacités !Les capacités !
Les graphes de flotsLes graphes de flots------------------------------------------------------------------------------------------------------------------------------
----
Puits pPuits p
Tout sommet u appartient à unTout sommet u appartient à unchemin simple de s vers p !chemin simple de s vers p !
uu
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
88
L AL A
D Y N A M I Q U ED Y N A M I Q U E
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
99
La dynamique :La dynamique :
La source produit, elle est la seule à produire !La source produit, elle est la seule à produire !
Le puits consomme, il est le seul à le faire !Le puits consomme, il est le seul à le faire !
Les autres sommets transmettent, sans Les autres sommets transmettent, sans produire, ni consommer, ni stocker !produire, ni consommer, ni stocker !
Un peu de discipline :Un peu de discipline :
Sur chaque arc le flot est compris entre zéro et Sur chaque arc le flot est compris entre zéro et la capacité de l’arc !la capacité de l’arc !
Représentation :Représentation :
flot / capacitéflot / capacité
Les graphes de flotsLes graphes de flots------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
1010
I L L U S T R A T I O NI L L U S T R A T I O N
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
1111
Exemple :Exemple :
Source sSource s
Les graphes de flotsLes graphes de flots------------------------------------------------------------------------------------------------------------------------------
----
Puits pPuits p1010 / 20 / 20
00 / 10 / 1055 / 10 / 10
77 / 10 / 10
77 / 15 / 15
55 / 17 / 17
44 / 5 / 5
00 / 15 / 15
55 / 10 / 10
88 / 8 / 8
1313 / 20 / 20
flot flot / capacité/ capacité
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
1212
Exemple :Exemple :
Source sSource s
Les graphes de flotsLes graphes de flots------------------------------------------------------------------------------------------------------------------------------
----
Puits pPuits p1515 / 20 / 20
00 / 10 / 1055 / 10 / 10
77 / 10 / 10
77 / 15 / 15
55 / 17 / 17
44 / 5 / 5
00 / 15 / 15
1010 / 10 / 10
88 / 8 / 8
1818 / 20 / 20
flot flot / capacité/ capacité
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
1313
Exemple :Exemple :
Source sSource s
Les graphes de flotsLes graphes de flots------------------------------------------------------------------------------------------------------------------------------
----
Puits pPuits p1515 / 20 / 20
11 / 10 / 1055 / 10 / 10
77 / 10 / 10
77 / 15 / 15
66 / 17 / 17
55 / 5 / 5
00 / 15 / 15
1010 / 10 / 10
88 / 8 / 8
1818 / 20 / 20
flot flot / capacité/ capacité
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
1414
55 / 10 / 10
Exemple :Exemple :
Source sSource s
Les graphes de flotsLes graphes de flots------------------------------------------------------------------------------------------------------------------------------
----
Puits pPuits p1515 / 20 / 20
11 / 10 / 10
77 / 10 / 10
77 / 15 / 15
66 / 17 / 17
55 / 5 / 5
00 / 15 / 15
1010 / 10 / 10
88 / 8 / 8
1818 / 20 / 20
flot flot / capacité/ capacité
En rouge les arcs quiEn rouge les arcs quigardent de la marge !gardent de la marge !
Voici une coupeVoici une coupequi est saturée !qui est saturée !
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
1515
U N EU N E
A P P L I C A T I O NA P P L I C A T I O N
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
1616
La SNCF étudie son réseau ferré de la région parisienne :La SNCF étudie son réseau ferré de la région parisienne :
Nous connaissons les capacités des gares de Paris !Nous connaissons les capacités des gares de Paris !
Nous connaissons le réseau et ses capacités !Nous connaissons le réseau et ses capacités !
Nous connaissons les capacités des gares de banlieue !Nous connaissons les capacités des gares de banlieue !
Nous limitons les capacités des trains dans les gares !Nous limitons les capacités des trains dans les gares !
Nous levons cette limitation pour certaines gares !Nous levons cette limitation pour certaines gares !
Nous limitons la capacité globale de tous les trains !Nous limitons la capacité globale de tous les trains !
ApplicationApplication------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
1717
LyonLyon
AusterlitzAusterlitz
LazareLazare
EstEst
NordNord
VersaillesVersailles
EvryEvry
Marne la ValléeMarne la Vallée
Saint-DenisSaint-Denis
SS
5050
4040
Les capacités d’accueilLes capacités d’accueildes différentes gares !des différentes gares !
PP
2020
2525
Les capacités d’accueilLes capacités d’accueildes différentes gares !des différentes gares !
1717
2323
Les lignesLes ligneset leurset leurs
capacités !capacités !
2525
Capacités de trains en gares, au départ !Capacités de trains en gares, au départ !
250250
LimitationLimitationglobaleglobaleen en trains !trains !
2323
ApplicationApplication------------------------------------------------------------------------------------------------------------------------------
----
+ +
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
1818
LyonLyon
AusterlitzAusterlitz
LazareLazare
EstEst
NordNord
VersaillesVersailles
EvryEvry
Marne la ValléeMarne la Vallée
Saint-DenisSaint-Denis
SS
5050
4040
Les capacités d’accueilLes capacités d’accueildes différentes gares !des différentes gares !
PP
2020
2525
Les capacités d’accueilLes capacités d’accueildes différentes gares !des différentes gares !
1717
2323
Les lignesLes ligneset leurset leurs
capacités !capacités !
2525
Capacités de trains en gares, au départ !Capacités de trains en gares, au départ !
250250
LimitationLimitationglobaleglobaleen en trains !trains !
2323
ApplicationApplication------------------------------------------------------------------------------------------------------------------------------
----
+ +
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
1919
L E SL E S
D E F I N I T I O N SD E F I N I T I O N S
D ED E
B A S EB A S E
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
2020
La représentation :La représentation :
Les capacités : c : V x V Les capacités : c : V x V --> R+> R+
Si ( u , v ) n’existe pas, alors c ( u , v ) = 0 !Si ( u , v ) n’existe pas, alors c ( u , v ) = 0 !
Les flots : Les flots : f : V x V f : V x V --> R ( flots négatifs ! )> R ( flots négatifs ! )
f ( u , v ) >= 0 , si le flot va de u vers v ,f ( u , v ) >= 0 , si le flot va de u vers v , f ( u , v ) <= 0 , si le flot va de v vers u !f ( u , v ) <= 0 , si le flot va de v vers u !
Les contraintes :Les contraintes :
f ( u , v ) <= c ( u , v )f ( u , v ) <= c ( u , v )
f ( u , v ) = f ( u , v ) = -- f ( v , u ) f ( v , u )
f ( u , v ) = 0 , si u est différent de s et de p .f ( u , v ) = 0 , si u est différent de s et de p .
II
II
DéfinitionsDéfinitions------------------------------------------------------------------------------------------------------------------------------
----
v v V V
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
2121
F O R D & F U L K E R S O NF O R D & F U L K E R S O N
U NU N
A L G O R I T H M EA L G O R I T H M E
G E N E R I Q U EG E N E R I Q U E
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
2222
Initialiser le flot à 0Initialiser le flot à 0
Tantqu’il existe Tantqu’il existe un chemin augmentantun chemin augmentant
Augmenter le flot le longAugmenter le flot le long du chemin en question !du chemin en question !
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
C’est quoi ?C’est quoi ?
Comment le trouver ?Comment le trouver ?
Lequel choisir ?Lequel choisir ?
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
2323
L E SL E S
F L O T SF L O T S
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
2424
Comment changer le flot ?Comment changer le flot ?
D’abord :D’abord :
Donc :Donc :
uu vvf ( u , v )f ( u , v )
c ( u , v )c ( u , v )
c ( v , u )c ( v , u )
f ( u , v ) = f ( u , v ) = -- f ( v , u ) f ( v , u )
f ( u , v ) <= c ( u , v )f ( u , v ) <= c ( u , v )
-- f ( u , v ) = f ( v , u ) <= c ( v , u ) f ( u , v ) = f ( v , u ) <= c ( v , u )
-- c ( v , u ) <= f ( u , v ) <= c ( u , v ) c ( v , u ) <= f ( u , v ) <= c ( u , v )
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
Attention :Attention :
+/- c ( u , v )+/- c ( u , v )==
+/- c ( v , u )+/- c ( v , u )//
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
2525
Comment changer le flot ?Comment changer le flot ?
Ensuite :Ensuite :
Le flot f ( u , v ) est le flot dans l’arc ( u , v ) Le flot f ( u , v ) est le flot dans l’arc ( u , v ) diminué du flot dans l’arc ( v , u ) !diminué du flot dans l’arc ( v , u ) !
uu vvf ( u , v )f ( u , v )
c ( u , v )c ( u , v )
c ( v , u )c ( v , u )
f ( u , v ) = f ( u , v ) = -- f ( v , u ) f ( v , u )
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
uu vv+ 2+ 2
3 / 53 / 5
1 / 41 / 4uu vv-- 1 1
2 / 52 / 5
3 / 43 / 4
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
2626
uu vvf ( u , v )f ( u , v )
c ( u , v )c ( u , v )
c ( v , u )c ( v , u )
f ( u , v ) = f ( u , v ) = -- f ( v , u ) f ( v , u )
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
---- Comment changer le flot ?Comment changer le flot ?
Le flot dans l’arc ( u , v ) est porté au Le flot dans l’arc ( u , v ) est porté au maximum !maximum !
Le flot dans l’arc ( v , u ) est ramené à zéro !Le flot dans l’arc ( v , u ) est ramené à zéro !
uu vv+ 5+ 5
5 / 55 / 5
0 / 40 / 4
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
2727
uu vvf ( u , v )f ( u , v )
c ( u , v )c ( u , v )
c ( v , u )c ( v , u )
f ( u , v ) = f ( u , v ) = -- f ( v , u ) f ( v , u )
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
---- Comment changer le flot ?Comment changer le flot ?
Le flot dans l’arc ( v , u ) est porté au maximum !Le flot dans l’arc ( v , u ) est porté au maximum !
Le flot dans l’arc ( u , v ) est ramené à zéro !Le flot dans l’arc ( u , v ) est ramené à zéro !
uu vv-- 4 4
0 / 50 / 5
4 / 44 / 4vv uu++ 4 4
0 / 50 / 5
4 / 44 / 4
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
2828
L E SL E S
C A P A C I T E SC A P A C I T E S
R E S I D U E L L E SR E S I D U E L L E S
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
2929
Comment changer le flot ?Comment changer le flot ?
r ( u , v ) = c ( u , v ) r ( u , v ) = c ( u , v ) -- f ( u , v ) f ( u , v )
r ( v , u ) = c ( v , u ) r ( v , u ) = c ( v , u ) -- f ( v , u ) f ( v , u )
r ( u , v ) = +/- r ( v , u )r ( u , v ) = +/- r ( v , u )
uu vvf ( u , v )f ( u , v )
c ( u , v )c ( u , v )
c ( v , u )c ( v , u )
f ( u , v ) = f ( u , v ) = -- f ( v , u ) f ( v , u )
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
//
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
3030
Comment changer le flot ?Comment changer le flot ?
r ( u , v ) = c ( u , v ) r ( u , v ) = c ( u , v ) -- f ( u , v ) f ( u , v )
uu vvf ( u , v )f ( u , v )
c ( u , v )c ( u , v )
c ( v , u )c ( v , u )
f ( u , v ) = f ( u , v ) = -- f ( v , u ) f ( v , u )
uu vv22
3 / 53 / 5
1 / 41 / 4
r ( u , v ) = 5 – 2 = 3r ( u , v ) = 5 – 2 = 3
r ( v , u ) = 4 – (– 2) = 6r ( v , u ) = 4 – (– 2) = 6
00 X X
44 X X
- 6- 6
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
3131
L EL E
G R A P H EG R A P H E
R E S I D U E LR E S I D U E L
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
3232
Le graphe résiduel donne pour toute paire de Le graphe résiduel donne pour toute paire de sommets u et v la marge de flot qui est encore sommets u et v la marge de flot qui est encore disponible !disponible !
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
uu vv-- 2 2
3 / 53 / 5
1 / 41 / 4
33
66
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
3333
Le graphe résiduel donne pour toute paire de sommets u et v la Le graphe résiduel donne pour toute paire de sommets u et v la marge de flot qui est encore disponible !marge de flot qui est encore disponible !
Le graphe résiduel R :Le graphe résiduel R :
Il a les mêmes sommets que le graphe de flot G !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 ) Il possède un arc ( u , v ) si la capacité résiduelle r ( u , v ) dans le graphe G est strictement positive !dans le graphe G est strictement positive !
L’arc en question est pondéré par la capacité résiduelle !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 Un chemin augmentant est un chemin de s vers p dans le graphe résiduel R !résiduel R !
Le poids du chemin augmentant est le poids de l’arc le plus léger Le poids du chemin augmentant est le poids de l’arc le plus léger du chemin augmentant !du chemin augmentant !
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
3434
I L L U S T R A T I O NI L L U S T R A T I O N
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
3535
Un exemple :Un exemple :
ss pp
uu
vv
Le graphe G !Le graphe G !
1/41/4
2/62/6
2/32/3 1/21/2
3/33/3
0/30/3
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
ss pp
uu
vv
ConstructionConstructiondu graphe R !du graphe R !
33
11
r ( s , u ) =r ( s , u ) =c ( s , u ) c ( s , u ) -- f ( s , u ) f ( s , u )= 4 – 1 = 3= 4 – 1 = 3
r ( u , s ) =r ( u , s ) =c ( u , s ) c ( u , s ) -- f ( u , s ) f ( u , s )= c ( u , s ) + f ( s , u )= c ( u , s ) + f ( s , u )= 0 + 1 = 1= 0 + 1 = 1
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
3636
Un exemple :Un exemple :
ss pp
uu
vv
Le graphe G !Le graphe G !
1/41/4
2/62/6
2/32/3 1/21/2
3/33/3
0/30/3
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
ss pp
uu
vv
ConstructionConstructiondu graphe R !du graphe R !
4422
r ( s , v ) =r ( s , v ) =c ( s , v ) c ( s , v ) -- f ( s , v ) f ( s , v )= 6 – 2 = 4= 6 – 2 = 4
r ( v , s ) =r ( v , s ) =c ( v , s ) c ( v , s ) -- f ( v , s ) f ( v , s )= c ( v , s ) + f ( s , v )= c ( v , s ) + f ( s , v )= 0 + 2 = 2= 0 + 2 = 2
33
11
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
3737
Un exemple :Un exemple :
Le nouveauLe nouveaugraphe G !graphe G !
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
ss pp
uu
vv
Le grapheLe grapherésiduel R !résiduel R !
33
4422
33
11
33
22 33
Un cheminUn cheminaugmentantaugmentantde poids 3 !de poids 3 !
ss pp
uu
vv
1/41/4
2/62/6
2/32/3 1/21/2
3/33/3
0/30/3
+3+3
+3+3
+1+1--22
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
3838
Pour changer le flot :Pour changer le flot :
4 / 74 / 7
+2+2devientdevient
6 / 76 / 7
4 / 74 / 7
+2+2devientdevient
2 / 72 / 7
4 / 74 / 7
+2+2
devientdevient
2 / 52 / 5
5 / 75 / 7
1 / 51 / 5
ouou4 / 74 / 7
0 / 50 / 5
ouou . . .. . .
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
3939
Suite . . .Suite . . .
Le nouveauLe nouveaugraphe G !graphe G !
ss pp
uu
vv
1/41/4
5/65/6
0/30/3 2/22/2
3/33/3
3/33/3
ConstructionConstructiondu graphe R !du graphe R !
ss pp
uu
vv
33
11
331155
55
33
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
4040
Pour calculer plus rapidement . . .Pour calculer plus rapidement . . .
Si le graphe résiduel comporte la situation suivante Si le graphe résiduel comporte la situation suivante ( l’arc ( v , u ) peut être absent si y = 0 ) ,( l’arc ( v , u ) peut être absent si y = 0 ) ,
et que le chemin augmentant passe par l’arc ( u , v ) et que le chemin augmentant passe par l’arc ( u , v ) avec un poids p , avec un poids p ,
alors dans le nouveau graphe nous avons la alors dans le nouveau graphe nous avons la situation suivante ( l’arc ( u , v ) peut être absent si situation suivante ( l’arc ( u , v ) peut être absent si x – p = 0 ) : x – p = 0 ) :
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
xx
yyuu vv
x - px - p
y + py + puu vv
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
4141
Illustration :Illustration :
L’ancienL’anciengraphe R !graphe R !
Le nouveauLe nouveaugraphe R !graphe R !
ss pp
uu
vv
33
11
331155
55
33
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
ss pp
uu
vv
33
4422
33
11
33
22 33Un cheminUn cheminaugmentantaugmentantde poids 3 !de poids 3 !
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
4242
Illustration :Illustration :
L’ancienL’anciengraphe R !graphe R !
Le nouveauLe nouveaugraphe R !graphe R !
ss pp
uu
vv
33
11
331155
55
33
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
ss pp
uu
vv
33
4422
33
11
33
22 33Un cheminUn cheminaugmentantaugmentantde poids 3 !de poids 3 !
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
4343
Suite . . .Suite . . .
Le nouveauLe nouveaugraphe G !graphe G !
ss pp
uu
vv
1/41/4
5/65/6
0/30/3 2/22/2
3/33/3
3/33/3
Le nouveauLe nouveaugraphe R !graphe R !
ss pp
uu
vv
33
11
331155
55
33
Ford & FulkersonFord & Fulkerson------------------------------------------------------------------------------------------------------------------------------
----
Les arcs quiLes arcs quigardent unegardent unemarge ! ! !marge ! ! !
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
4444
L EL ET H E O R E M ET H E O R E M E
D UD UF L O T M A X I M A LF L O T M A X I M A L
E T D EE T D EL A C O U P EL A C O U P EM I N I M A L EM I N I M A L E
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
4545
Une coupe ( S , P ) ( cut en anglais ) :Une coupe ( S , P ) ( cut en anglais ) :
Nous partitionnons les sommets du graphe pourNous partitionnons les sommets du graphe pour
obtenir une partie S quasi-fortement connexe de racine sobtenir une partie S quasi-fortement connexe de racine s
et une partie P quasi-fortement connexe de racine p , si et une partie P quasi-fortement connexe de racine p , si nous inversons les arcs.nous inversons les arcs.
ss pp. . .. . . . . .. . .
SS PP
Théorème du Max-Flow Min-CutThéorème du Max-Flow Min-Cut------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
4646
Le flot à travers une coupe ( S , P ) : f ( S , P )Le flot à travers une coupe ( S , P ) : f ( S , P )
f ( S , P ) = f ( S , P ) = f ( u , v ) = f ( u , v ) = 4 + 2 4 + 2 -- 3 3
Dans le sens S vers P , nous comptons en positif !Dans le sens S vers P , nous comptons en positif !
Dans le sens P vers S , nous comptons en négatif !Dans le sens P vers S , nous comptons en négatif !
ss pp. . .. . . . . .. . .
SS PP
u u S Sv v P P
44 / …/ …
22 / …/ …
33 / …/ …
Théorème du Max-Flow Min-CutThéorème du Max-Flow Min-Cut------------------------------------------------------------------------------------------------------------------------------
----
S’’S’’ P’’P’’S’S’ P’P’
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
4747
La capacité d’une coupe ( S , P ) : c ( S , P )La capacité d’une coupe ( S , P ) : c ( S , P )
c ( S , P ) = c ( S , P ) = c ( u , v ) = c ( u , v ) = 4 + 24 + 2
Dans le sens S vers P , nous considérons l’arc !Dans le sens S vers P , nous considérons l’arc !
Dans le sens P vers S , nous ignorons l’arc !Dans le sens P vers S , nous ignorons l’arc !
ss pp. . .. . . . . .. . .
SS PP
u u S Sv v P P
… … // 44
… … // 22
… … // 33
Théorème du Max-Flow Min-CutThéorème du Max-Flow Min-Cut------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
4848
Pour toute coupe ( S , P ) , nous avons :Pour toute coupe ( S , P ) , nous avons :
f ( S , P ) <= c ( S , P )f ( S , P ) <= c ( S , P )
f ( S , P ) = f ( S , P ) = 4 + 2 4 + 2 – 3 – 3 <= <= 4 + 2 4 + 2 <= <= 7 + 57 + 5 = c ( S , P )= c ( S , P )
f ( S , P ) = f ( S , P ) = f ( u , v ) f ( u , v ) <= <= f ( u , v ) f ( u , v ) <= <= c ( u , v ) c ( u , v ) = c ( S , P ) = c ( S , P ) u u S , v S , v PP u u S , v S , v PP u u S , v S , v PP f ( u , v ) >= 0f ( u , v ) >= 0
ss pp. . .. . . . . .. . .
SS PP
4 / 4 / 77
2 / 2 / 55
3 / 43 / 4
Théorème du Max-Flow Min-CutThéorème du Max-Flow Min-Cut------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
4949
Pour le flot f à travers un graphe G, nous avons :Pour le flot f à travers un graphe G, nous avons :
f = f ( S , P ) , quelque soit la coupe ( S , P ) !f = f ( S , P ) , quelque soit la coupe ( S , P ) !
Pour toute coupe ( S , P ) , on a f ( S , P ) <= c ( S , Pour toute coupe ( S , P ) , on a f ( S , P ) <= c ( S , P ) !P ) !
Donc, 0 <= f <= min c ( S , P )Donc, 0 <= f <= min c ( S , P ) coupes ( S , P )coupes ( S , P )
ss pp
……/7/7
……/3/3
……/7/7
……/5/5
……/1/1
……/8/8
Théorème du Max-Flow Min-CutThéorème du Max-Flow Min-Cut------------------------------------------------------------------------------------------------------------------------------
----
f <= 10f <= 10f <= 6f <= 6
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
5050
L EL E
T H E O R E M ET H E O R E M E
M A X - F L O WM A X - F L O W
M I N - C U TM I N - C U T
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
5151
Les trois conditions suivantes sont équivalentes :Les trois conditions suivantes sont équivalentes :
( 1 ) Le flot f est maximal !( 1 ) Le flot f est maximal !
( 2 ) Le graphe résiduel ne contient pas de chemin augmentant !( 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 ( 3 ) Il existe une coupe ( S , P ) telle que f = c ( S , P ) ! Cette coupe est minimale et saturée !coupe est minimale et saturée !
( 1 ) => ( 2 ) , par absurde !( 1 ) => ( 2 ) , par absurde !
S’il y a un chemin augmentant, f n’est pas maximal.S’il y a un chemin augmentant, f n’est pas maximal.
( 3 ) => ( 1 )( 3 ) => ( 1 )
Si il existe ( S , P ) telle que f = c ( S , P ) , nous avonsSi il existe ( S , P ) telle que f = c ( S , P ) , nous avons c ( S , P ) = f <= min c ( S , P ) ! f est donc maximal !c ( S , P ) = f <= min c ( S , P ) ! f est donc maximal ! coupes ( S , P )coupes ( S , P )
Théorème du Max-Flow Min-CutThéorème du Max-Flow Min-Cut------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
5252
( 2 ) => ( 3 )( 2 ) => ( 3 )
Il y a une coupe ( S , P ) avec des arcs retour Il y a une coupe ( S , P ) avec des arcs retour seulement !seulement !
Dans le graphe G, il y a trois cas :Dans le graphe G, il y a trois cas :
ss pp. . .. . . . . .. . .
SS PP
ss pp. . .. . . . . .. . .
uu vv
uu vv
r ( u , v ) = 0r ( u , v ) = 0et doncet donc
f ( u , v ) = c ( u , v )f ( u , v ) = c ( u , v )
xx yy
xx yy
r ( x , y ) = 0r ( x , y ) = 0et doncet donc
f ( y , x ) = 0f ( y , x ) = 0
aa bb
aa bb
r ( a , b ) = 0r ( a , b ) = 0et doncet donc
f ( a , b ) = c ( a , b )f ( a , b ) = c ( a , b )
Théorème du Max-Flow Min-CutThéorème du Max-Flow Min-Cut------------------------------------------------------------------------------------------------------------------------------
----
SS PP
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
5353
C O M P L E X I T EC O M P L E X I T E
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
5454
Le calcul du graphe résiduel R et du chemin Le calcul du graphe résiduel R et du chemin augmentant est en augmentant est en ( | E | ) ! ( | E | ) !
Le nombre d’itérations peut être aussi élevé que la Le nombre d’itérations peut être aussi élevé que la valeur du flot optimal f* !valeur du flot optimal f* !
1/10001/1000 1/10001/1000
1/10001/1000 1/10001/1000
0/10/1
Re-nouveau graphe !Re-nouveau graphe !
ComplexitéComplexité------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
5555
Nous améliorons l’algorithme en choisissant le Nous améliorons l’algorithme en choisissant le chemin augmentant le plus lourdchemin augmentant le plus lourd à chaque fois ! à chaque fois !
C’est celui dont l’arc le plus léger est le plus C’est celui dont l’arc le plus léger est le plus lourd possible !lourd possible !
Il est difficile d’établir une borne sur le nombre Il est difficile d’établir une borne sur le nombre d’itérations !d’itérations !
C’est une variante de Dijkstra :C’est une variante de Dijkstra :
Les arcs inexistants sont initialisés à - Les arcs inexistants sont initialisés à - , ,
avec extrait_max_D à la place de extrait_min_D avec extrait_max_D à la place de extrait_min_D et et
ComplexitéComplexité------------------------------------------------------------------------------------------------------------------------------
----
relax ( x , v )relax ( x , v ) si si min ( D ( x ) , M ( x , v ) ) > D ( v )min ( D ( x ) , M ( x , v ) ) > D ( v ) D ( v ) <- min ( D ( x ) , M ( x , v ) )D ( v ) <- min ( D ( x ) , M ( x , v ) ) P ( v ) <- xP ( v ) <- x
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
5656
L’algorithme d’Edmonds et Karp :L’algorithme d’Edmonds et Karp :
choisit le chemin augmentant le plus court en choisit le chemin augmentant le plus court en nombre d’arcsnombre d’arcs
et utilise le classique algorithme de la vague et utilise le classique algorithme de la vague pour le trouver.pour le trouver.
Cet algorithme nécessite au plus O ( | V | * | E | ) Cet algorithme nécessite au plus O ( | V | * | E | ) itérations,itérations,
d’où une complexité globale qui de O ( | V | * | E d’où une complexité globale qui de O ( | V | * | E |^2 ) = O ( | V |^5 ) .|^2 ) = O ( | V |^5 ) .
ComplexitéComplexité------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
5757
L’idée derrière Edmonds-Karp :L’idée derrière Edmonds-Karp :
Il y a de plus en plus de chemins de retour de p vers s !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 !Il y a de moins en moins de chemins de s vers p ! Les chemins augmentants deviennent de plus en plus long !Les chemins augmentants deviennent de plus en plus long !
GrapheGrapherésiduel :résiduel :
NouveauNouveaugraphegrapherésiduel :résiduel :
ss pp
Le cheminLe cheminaugmentant !augmentant !
Certains arcsCertains arcsde retour !de retour !
ss pp
Certains arcsCertains arcsaller !aller !
Tous les arcsTous les arcsde retour !de retour !
. . .. . .
. . .. . .
ComplexitéComplexité------------------------------------------------------------------------------------------------------------------------------
----
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
5858
V A R I A N T E SV A R I A N T E S
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
5959
mm
11
Réseau de flot multi-sources, multi-puits :Réseau de flot multi-sources, multi-puits :
Ce n’est plus le même problème, si s doit envoyer à p Ce n’est plus le même problème, si s doit envoyer à p ! !
ss11
ssnn
pp
pp
SS PP Avec des capacitésAvec des capacitésassez grandes pourassez grandes pour
les arcs rouges !les arcs rouges !
ii ii
nn
ss11
ssnn
pp
pp
11
VariantesVariantes------------------------------------------------------------------------------------------------------------------------------
----
Les arcs transportentLes arcs transportentdes flots de couleursdes flots de couleurs
mais rien ne garantit lamais rien ne garantit labonne destination !bonne destination !
5 mars 20085 mars 2008 Cours de graphes 4 - IntraCours de graphes 4 - Intranetnet
6060
Nous pouvons aussi faire dépendre la capacité de la Nous pouvons aussi faire dépendre la capacité de la couleur ( encore appelé multi-capacités ) !couleur ( encore appelé multi-capacités ) !
La plupart des variantes de problèmes de flots La plupart des variantes de problèmes de flots deviennent vite compliquées et difficiles à deviennent vite compliquées et difficiles à résoudre ! ! !résoudre ! ! !
nn
ss11
ssnn
pp
pp
11
VariantesVariantes------------------------------------------------------------------------------------------------------------------------------
----
… … / 5/ 5… … / 7/ 7
Top Related