Cours de Graphes et Flots

Preview:

Citation preview

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

Recommended