Calcul de flots maximum Algorithme de...

Post on 03-Feb-2018

223 views 1 download

Transcript of Calcul de flots maximum Algorithme de...

Flots et coupesAlgorithme de Ford-Fulkerson

Calcul de flots maximumAlgorithme de Ford-Fulkerson

Frederic.Guinand@univ-lehavre.fr

Master I - Le Havre

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

RéseauSoit G = (S, A) un graphe orienté.Chaque arc est valué par une valeur correspondant à lacapacité du lien associé à cet arc.Soit la fonction c : A→ R+ qui associe à chaque arc unevaleur réelle positive de capacité.Soient deux sommets particuliers : un sommet source s etun sommet puits p, tels que ∀v ∈ S il existe un chemin quiva de s à p et qui passe par v .Un réseau est défini par la donnée du quadrupletR = (G, c, s, p).

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Un flot est une fonction f : A→ R+ telle que :

f ((a, b)) ≤ c((a, b)),∀(a, b) ∈ A (1)

∑j∈voisins(s)

f ((s, j))−∑

j∈voisins(s)f ((j , s)) = v (2)

∑j∈voisins(p)

f ((p, j))−∑

j∈voisins(p)f ((j , p)) = −v (3)

∑j∈voisins(i)

f ((i , j))−∑

j∈voisins(i)f ((j , i)) = 0,∀i ∈ S\{s, p} (4)

v représente la valeur du flot.Equation (4) : loi de Kirchhoff.

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Coupe

Soit G = (S, A), et R = (G, c, s, p), une coupe est unepartition de S en deux ensembles V et V̄ , tels que :

V ∪ V̄ = Ss ∈ V et p ∈ V̄

la capacité de la coupe est égale à la somme descapacités des arcs qui font la coupe.

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Un réseau un flot réalisable pour ce réseau

98

4

7

5

3

3

4

6

3

9

25

73

4 1

82

3

2

6

4

1

2

2

3

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Problème du calcul du flot maximum

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Connectivité

Pour un graphe connexe, la connectivité est définie commele nombre minimum de sommets dont la suppressionentraîne la perte de connexité.Théorème de Menger (1927) :Pour deux sommets non adjacents quelconques d’ungraphe connexe G, le nombre minimum d’arêtes dont lasuppression entraîne leur déconnexion est égal au nombremaximum de chaînes deux-à-deux arêtes disjointes lesconnectant dans G.Ce résultat a été re-formulé en termes de réseaux en 1956par Ford et Fulkerson et est connu sous le nom dethéorème maximum flow/minimum cut ou max flow-mincut.

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Enoncé du problème

1 Intitulé du problème : Flot maximum.2 Description des paramètres : un graphe orienté

G = (S, A) dont chaque arête est valuée par une capacité,un sommet source et un sommet puits,

3 Question : quel est le flot maximum qu’il est possible defaire passer dans ce réseau depuis la source vers le puits ?

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Enoncé du problème

Intuitivement cela fait référence aux problèmes deplomberie ou de trafic routier.On dispose d’une source et d’un puits et le flot doits’écouler de la source vers le puits et il doit être maximumen fonction de la capacité des arcs.

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Exemple

8

4

15

107

8

1010

12

67

5 4

23

4

6

20

20

10

610

Source Puits

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Exemple

8

4

15

107

8

1010

12

67

5 4

23

4

6

20

20

10

610

Source Puits

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Exemple

Source Puits

4/4

4/8

4/20

4/8

4/10

4/4

1510

6

20

5

3 2

4

7 6

1210

10

7

6

10

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Exemple

Source Puits6/20

6/8

2/3

6/8

6/102/2

4/44/4

1510

20

6 5

7

10 12

6

4

10

7

6

10

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Exemple

Source Puits8/20

8/8

2/4

8/8

8/10

2/5

4/4

2/3 2/2

4/4

1510

6

2010

7 6

12

10

7

6

10

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Exemple

Source Puits2/3

2/5 2/42/6

2/7 2/6

10/10

2/10

10/20

8/8

4/4

2/2

4/4

8/8

1510

2010 12

7

6

10

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Exemple

Source Puits2/3

2/5

8/8

4/4

2/2

4/4

8/8

1510

2010 12

7

2/6

2/10

10/1012/20

4/6

4/7

4/4

2/6

2/10

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Exemple

Source Puits2/3

2/5

8/8

4/4

2/2

4/4

8/8

1510

2010 12

2/10

10/10

2/6

4/4

14/20

6/6

6/7 4/6

2/7

4/10

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Exemple

Source Puits2/3

2/5

8/8

4/4

2/2

4/4

8/8

10

10 12

2/10

10/10

2/6

4/46/6

1/15

1/20

7/7 5/6

3/7

5/10

14/20

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Exemple

Source Puits2/3

2/5

8/8

4/4

2/2

4/4

8/8

10 2/10

10/10

2/6

4/46/6

14/20

7/7 5/6

7/7

9/10

4/124/105/20

5/15

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Rapport avec la connexité

Il suffit de supprimer les arcs pour lesquels la valeur du flotest égale à la capacité :

Source Puits2/3

2/5

10 2/10 2/6

14/20

5/65/15

5/204/10 4/12

9/10

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Capacité résiduelle

crésiduelle(si ,sj )

= c(si ,sj ) − f ((si , sj))

la capacité résiduelle, pour un arc (si , sj) donné,représente la quantité de flot pouvant encore passer parcet arc.

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Réseau résiduelGrésiduel = (S, Arésiduel) tel que

Arésiduel = {(si , sj) ∈ A, crésiduelle(si ,sj )

> 0}

le réseau résiduel, est le graphe partiel obtenu à partir dugraphe d’origine mais dont ont été retiré tous les arcs dontla capacité résiduelle est nulle.

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Chemin améliorant ou augmentant

Un chemin améliorant ou chemin augmentant, est unchemin de Grésiduel, allant de s à p et sans circuit

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Capacité résiduelle d’un chemin améliorantLa capacité résiduelle d’un chemin améliorant est leminimum des capacités résiduelles des arcs appartenantau chemin

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Définitions

Arc saturéUn arc est dit saturé si sa capacité résiduelle est nulle.

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Algorithme de Ford-Fulkerson

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Principe de résolution

PrincipeTant qu’il existe un chemin augmentant dans le graphe, onajoute un flot le long de ce chemin.

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Algorithme de Ford-Fulkerson

Principe

Créer un graphe résiduel Gr = GInitialement tous les arcs sont valués par leur capacitéDéterminer un chemin augmentantTantQue il existe un chemin augmentant de s vers p Faire

mettre à jour le graphe résiduelchercher un nouveau chemin augmentant

finTantQue

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Algorithme de Ford-Fulkerson

Principaux pointsdéterminer un chemin augmentantmettre à jour le graphe résiduel

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Algorithme de Ford-Fulkerson

Mise à jour du graphe résiduel

Soit c un chemin augmentantSoit cr la capacité résiduelle de ce cheminPour tous les arcs (si , sj) appartenant au chemin Faire

mettre à jour la capacité résiduelle de l’arcfinPour

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Algorithme de Ford-Fulkerson

Détermination d’un chemin augmentant

Plus délicat.Examen des chemins du graphe résiduel→ parcours dugraphe résiduel.Il peut y avoir remise en question de flots déjà validés.

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Exemple

8

6

4

6

2

8

8

6

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Exemple

8/8

8/8

8/86/0

6/0

2/0

6/0

4/0

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Exemple

6/2

6/2

2/2

6/2

4/0

8/8

8/8

8/8

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Exemple

6/6

6/6

8/4

6/6

4/4

8/8

8/8

2/2

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Algorithme de Ford-Fulkerson

Départ de la sourceVoisins éligibles← ensemble des voisins......dont les arcs entrants depuis la source ne sont pas saturésTantQue (il reste des voisins non visités) ET (chemin pas trouvé) Faire

choisir un voisin pour poursuivre le chemin augmentantSi ce voisin est le puits Alors

le chemin construit est le chemin augmentantvalider le flotmettre à jour le graphe résiduelretour au départ pour la recherche d’un nouveau chemin

finSifinTantQue

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Algorithme de Ford-Fulkerson

Voisins éligibles

Les voisins éligibles d’un sommet u sont :les successeurs v de ce sommet tels que l’arc (u, v) n’estpas saturéeles prédecesseurs v ′ de ce sommet tels que l’arc (v ′, u)présente un flot strictement positif

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Algorithme de Ford-Fulkerson

Condition de terminaisonLe calcul du flot maximum se termine lorsqu’il n’existe plusde chemin augmentant de s vers p.Détecter une telle situation suppose de marquer lessommets à partir desquels aucun nouveau cheminaugmentant n’est possible. Cette procédure de marquagepeut s’appuyer par exemple sur un algorithme de parcoursclassique :

profondeur d’abord : lorsque la pile est vide et qu’aucunchemin augmentant de s à p n’a pu être déterminélargeur d’abord : lorsque la file est vide et qu’aucun cheminaugmentant de s à p n’a pu être déterminé

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Analyse de la complexité

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Complexité

Exercice.

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Références

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson

Flots et coupesAlgorithme de Ford-Fulkerson

Références

1 Maximal Flow Through a Network. L. R. Ford, Jr. and D. R.Fulkerson. Canadian Journal of Mathematics, vol. 8, pages399-404, 1956.

2 Ford-Fulkerson Max-Flow Labeling Algorithm. Harvey J.Greenberg. Rapport de recherche. University of Colorado,Denver. Decembre 1998.

Frederic.Guinand@univ-lehavre.fr Calcul de flots maximum Algorithme de Ford-Fulkerson