60
5 mars 2008 5 mars 2008 Cours de graphes 4 - Intr Cours de graphes 4 - Intr anet anet 1 Cours de Graphes Cours 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-Karp. Algos de Ford-Fulkerson et Edmonds-Karp. Applications. Applications.

Cours de Graphes et Flots

  • Upload
    hajji-k

  • View
    1.938

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Cours de Graphes et Flots

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.

Page 2: Cours de Graphes et Flots

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

Page 3: Cours de Graphes et Flots

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

Page 4: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

Page 5: Cours de Graphes et 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 !

Page 6: Cours de Graphes et Flots

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 !

Page 7: Cours de Graphes et Flots

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

Page 8: Cours de Graphes et Flots

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

Page 9: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

Page 10: Cours de Graphes et 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

Page 11: Cours de Graphes et Flots

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é

Page 12: Cours de Graphes et Flots

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é

Page 13: Cours de Graphes et Flots

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é

Page 14: Cours de Graphes et Flots

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 !

Page 15: Cours de Graphes et Flots

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

Page 16: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

Page 17: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

+ +

Page 18: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

+ +

Page 19: Cours de Graphes et Flots

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

Page 20: Cours de Graphes et Flots

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

Page 21: Cours de Graphes et Flots

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

Page 22: Cours de Graphes et Flots

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 ?

Page 23: Cours de Graphes et Flots

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

Page 24: Cours de Graphes et Flots

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 )//

Page 25: Cours de Graphes et Flots

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

Page 26: Cours de Graphes et Flots

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

Page 27: Cours de Graphes et Flots

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

Page 28: Cours de Graphes et Flots

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

Page 29: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

//

Page 30: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

Page 31: Cours de Graphes et Flots

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

Page 32: Cours de Graphes et Flots

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

Page 33: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

Page 34: Cours de Graphes et Flots

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

Page 35: Cours de Graphes et Flots

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

Page 36: Cours de Graphes et Flots

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

Page 37: Cours de Graphes et Flots

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

Page 38: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

Page 39: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

Page 40: Cours de Graphes et Flots

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

Page 41: Cours de Graphes et Flots

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 !

Page 42: Cours de Graphes et Flots

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 !

Page 43: Cours de Graphes et Flots

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 ! ! !

Page 44: Cours de Graphes et Flots

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

Page 45: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

Page 46: Cours de Graphes et Flots

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’

Page 47: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

Page 48: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

Page 49: Cours de Graphes et Flots

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

Page 50: Cours de Graphes et Flots

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

Page 51: Cours de Graphes et Flots

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------------------------------------------------------------------------------------------------------------------------------

----

Page 52: Cours de Graphes et Flots

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

Page 53: Cours de Graphes et Flots

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

Page 54: Cours de Graphes et Flots

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é------------------------------------------------------------------------------------------------------------------------------

----

Page 55: Cours de Graphes et Flots

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

Page 56: Cours de Graphes et Flots

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é------------------------------------------------------------------------------------------------------------------------------

----

Page 57: Cours de Graphes et Flots

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é------------------------------------------------------------------------------------------------------------------------------

----

Page 58: Cours de Graphes et Flots

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

Page 59: Cours de Graphes et Flots

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 !

Page 60: Cours de Graphes et Flots

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