• Aucun résultat trouvé

Réseaux de flot

N/A
N/A
Protected

Academic year: 2022

Partager "Réseaux de flot"

Copied!
47
0
0

Texte intégral

(1)

Réseaux de flot

David Pichardie 8 novembre 2016

(2)

Entrée

un graphe pondéré (par une capacité notée c)

poids strictement positifs

un sommet source s et un sommet cible t

Le problème du flot maximum

s t

10

5

15

4

4

9

15

8

6

16

15

15 10

10 10

pas d’arc sortant pas d’arc

entrant

Autre hypothèse

(simplificatrice) : si (i,j) est un arc, (j,i) n’en est pas

(3)

Définition. Un flot est une pondération (notée f) des arcs telle que

pour chaque arc e, 0 ≤ f(e) ≤ c(e)

en chaque sommet, 


somme des poids des arcs entrants = somme des poids des arcs sortant

Le problème du flot maximum

s v t

10/10

5/5

10/15

0/4

0/4

5/9

5/15

5/8

0/6

10/16

0/15

0/15 10/10

10/10 5/10

flot capacité En v : 5+5+0 = 0+10

équilibre local

(4)

Définition. La valeur du flot est la somme des flots entrants dans le sommet cible

Problème du flot maximum : trouver un flot de valeur maximum

Le problème du flot maximum

s t

10/10

5/5

10/15

0/4

0/4

5/9

5/15

5/8

0/6

10/16

0/15

0/15 10/10

10/10 5/10

flot capacité

valeur : 5 + 10 + 10 = 25

(5)

Initialisation. Au départ, un flot nul.

Algorithme de 
 Ford-Fulkerson

s t

0/10

0/5

0/15

0/4

0/4

0/9

0/15

0/8

0/6

0/16

0/15

0/15 0/10

0/10 0/10

valeur du flot = 0

(6)

Chemin améliorant : on cherche un chemin (dans le graphe non orienté associé) de s à t

qui augmente de w le flot des arcs empruntés en avant

qui diminue de de w le flot des arcs empruntés en arrière

Algorithme de 
 Ford-Fulkerson

s t

valeur du flot = 10

sans dépasser la capacité de l’arc

sans rendre le flot négatif sur cet arc

0/10

0/5

0/15

0/4

0/4

0/9

0/15

0/8

0/6

0/16

0/15

0/15 0/10

0/10 0/10

10 10

10

1er chemin améliorant

(7)

Chemin améliorant : on cherche un chemin (dans le graphe non orienté associé) de s à t

qui augmente de w le flot des arcs empruntés en avant

qui diminue de de w le flot des arcs empruntés en arrière

Algorithme de 
 Ford-Fulkerson

s t

valeur du flot = 10

sans dépasser la capacité de l’arc

sans rendre le flot négatif sur cet arc

10/10

0/5

0/15

0/4

0/4

0/9

10/15

0/8

0/6

0/16

0/15

0/15 0/10

10/10 0/10

1er chemin améliorant

(8)

Chemin améliorant : on cherche un chemin (dans le graphe non orienté associé) de s à t

qui augmente de w le flot des arcs empruntés en avant

qui diminue de de w le flot des arcs empruntés en arrière

Algorithme de 
 Ford-Fulkerson

s t

valeur du flot = 10+10

10/10

0/5

0/15

0/4

0/4

10/15

0/8

0/6

0/16

0/15

0/15 0/10

10/10 0/10

2e chemin améliorant

10

10

10 0/9

(9)

Chemin améliorant : on cherche un chemin (dans le graphe non orienté associé) de s à t

qui augmente de w le flot des arcs empruntés en avant

qui diminue de de w le flot des arcs empruntés en arrière

Algorithme de 
 Ford-Fulkerson

s t

valeur du flot = 10+10

10/10

0/5

10/15

0/4

0/4

10/15

0/8

0/6

10/16

0/15

0/15 10/10

10/10 0/10

2e chemin améliorant

0/9

(10)

Chemin améliorant : on cherche un chemin (dans le graphe non orienté associé) de s à t

qui augmente de w le flot des arcs empruntés en avant

qui diminue de de w le flot des arcs empruntés en arrière

Algorithme de 
 Ford-Fulkerson

s t

valeur du flot = 20+5

10/10

0/5

10/15

0/4

0/4

10/15

0/8

0/6

10/16

0/15

0/15 10/10

10/10 0/10

3e chemin améliorant

0/9

5 5

10-5 5

5

on diminue le flot pour respecter l’équilibre local

on redistribue le flot perdu à partir de là

(11)

Chemin améliorant : on cherche un chemin (dans le graphe non orienté associé) de s à t

qui augmente de w le flot des arcs empruntés en avant

qui diminue de de w le flot des arcs empruntés en arrière

Algorithme de 
 Ford-Fulkerson

s t

valeur du flot = 20+5

10/10

5/5

10/15

0/4

0/4

5/15

5/8

0/6

10/16

0/15

0/15 10/10

10/10 5/10

3e chemin améliorant

5/9

(12)

Chemin améliorant : on cherche un chemin (dans le graphe non orienté associé) de s à t

qui augmente de w le flot des arcs empruntés en avant

qui diminue de de w le flot des arcs empruntés en arrière

Algorithme de 
 Ford-Fulkerson

s t

valeur du flot = 25+3

10/10

5/5

10/15

0/4

0/4

5/15

5/8

0/6

10/16

0/15

0/15 10/10

10/10 5/10

4e chemin améliorant

5/9

+3

+3 +3 +3 -3

+3

+3

(13)

Chemin améliorant : on cherche un chemin (dans le graphe non orienté associé) de s à t

qui augmente de w le flot des arcs empruntés en avant

qui diminue de de w le flot des arcs empruntés en arrière

Algorithme de 
 Ford-Fulkerson

s t

valeur du flot = 25+3

10/10

5/5

13/15

0/4

0/4

2/15

8/8

3/6

13/16

0/15

0/15 10/10

10/10 8/10

4e chemin améliorant

8/9

(14)

Terminaison : tous les chemins de s à t (dans le graphe non orienté associé) sont bloqués

soit sur un arc e emprunté en avant tel que f(e)=c(e)

soit sur une arc e emprunté en arrière tel que f(e)=0

Algorithme de 
 Ford-Fulkerson

s t

valeur du flot = 28

10/10

5/5

13/15

0/4

0/4

2/15

8/8

3/6

13/16

0/15

0/15 10/10

10/10 8/10

plus de chemin améliorant

8/9

(15)

Algorithme

1. Commence avec un flot nul

2. Tant qu’il existe un chemin améliorant

1. Trouve un chemin améliorant (parcours du graphe orienté résiduel) 2. Calcule le poid maximum w le long de ce chemin

3. Augmente le flot avec w le long de ce chemin

Algorithme de 
 Ford-Fulkerson

s t

10/10

5/5

10/15

0/4

0/4

5/15

5/8

0/6

10/16

0/15

0/15 10/10

10/10 5/10 5/9

s t

10

5

10

5 4

6 10

6 3 5 10

5 4 5

5 5

10

10 4 15

15

Graphe de flot Graphe résiduel

(16)

Algorithme de 
 Ford-Fulkerson

Questions

Quand l’algorithme termine, est-ce qu’il calcule bien un flot maximum ?

Est-ce que l’algorithme termine toujours ?

Si oui, après combien de recherche de chemins augmentants ?

s t

10/10

5/5

13/15

0/4

0/4

2/15

8/8

3/6

13/16

0/15

0/15 10/10

10/10 8/10 8/9

(17)

Le problème de la 
 coupe minimum

Entrée

un graphe pondéré (par une capacité notée c)

poids strictement positifs

un sommet source s et un sommet cible t

s t

10

5

15

4

4

9

15

8

6

16

15

15 10

10 10

pas d’arc sortant pas d’arc

entrant

Autre hypothèse

(simplificatrice) : si (i,j) est un arc, (j,i) n’en est pas

(18)

Définition. Une coupure est une une partition (A,B) de l’ensemble des sommets du graphe telle que s appartient à A et t appartient à B.

Définition. La capacité d’une coupure est la somme des capacités des arcs allant de A vers B.

Problème de la coupure minimum : trouver une coupure de capacité minimum.

Le problème de la 
 coupe minimum

s t

10

5

15

4

4

9 15

8

6 16

15

15 10

10 10

capacité = 10 + 8 + 16

les arcs entrants ne comptent pas

(19)

Deux problèmes historiques

Figure 2

From Harris and Ross [1955]: Schematic diagram of the railway network of the Western Soviet Union and Eastern European countries, with a maximum flow of value 163,000 tons from Russia to Eastern Europe, and a cut of capacity 163,000 tons indicated as “The bottleneck”.

Acknowledgements. I thank Sasha Karzanov for his efficient help in finding Tolsto˘ı’s paper in the (former) Lenin Library in Moscow, Irina V. Karzanova for accurately providing me with an English translation of it, Kim H. Campbell and Joanne McLean at Air Force Pentagon for declassifying the Harris-Ross report, and Richard Bancroft and Gustave Shubert at RAND Corporation for their mediation in this.

8

On the history of the transportation and the maximum flow problem. Alexander Schrijver. http://homepages.cwi.nl/~lex/files/histtrpclean.pdf

(20)

Théorème. La capacité de la coupe minimum est égale à la valeur du flot maximum.

Le théorème du maxflow-mincut

capacité = 10 + 8 + 10 = 28

s t

valeur du flot = 28

10/10

5/5

13/15

0/4

0/4

2/15

8/8

3/6

13/16

0/15

0/15 10/10

10/10 8/10 8/9

(21)

Définition. Soit f un flot et (A,B) une coupure. Le flot net f(A,B) est définie comme la somme des flots des arcs de A vers B, moins la somme des flots des arcs de B vers A.

Ici : (10 + 10 + 0 + 5 + 10) - (0 + 5 + 5 + 0) = 25

Preuve du théorème du maxflow-mincut

s t

10/10

5/5

10/15

0/4

0/4

5/15

5/8

0/6

10/16

0/15

0/15 10/10

10/10 5/10 5/9

B = A =

(22)

Lemme. Le flot net f(A,B) est égal à la valeur du flot f.

s t

10/10

5/5

10/15

0/4

0/4

5/15

5/8

0/6

10/16

0/15

0/15 10/10

10/10 5/10 5/9

B = A =

valeur du flot = 25 = f(A,B)

Preuve du théorème du

maxflow-mincut

(23)

Lemme. Le flot net f(A,B) est égal à la valeur du flot f.

Preuve. Par récurrence sur la taille de B.

Cas de base : B = {t}.

Hérédité : supposons le résultat vrai pour (A,B) [f(A,B) = |f|], fixons y appartenant à A et montrons le résultat pour la coupe (A-{y}, B+{y}).

Preuve du théorème du maxflow-mincut

f(A\{y}, B [ {y}) = X

u2A\{y},v2B[{y}

f(u, v) X

u2B[{y},v2A\{y}

f(u, v)

si un arc e n’existe pas, nous prenons la convention que f(e)=0

(24)

Or

Donc

équilibre local en y

par hypothèse de récurrence

f(A\{y}, B [ {y}) = X

u2A\{y},v2B[{y}

f(u, v) X

u2B[{y},v2A\{y}

f(u, v)

X

u2A\{y},v2B[{y}

f(u, v) = X

u2A,v2B[{y}

f(u, v) X

v2B[{y}

f(y, v)

= X

u2A,v2B

f(u, v) + X

u2A

f(u, y) X

v2B

f(y, v) f(y, y)

= X

u2A,v2B

f(u, v) + X

u2A

f(u, y) X

v2B

f(y, v)

f(A\{y}, B [ {y}) =

0

@ X

u2A,v2B

f(u, v) + X

u2A

f(u, y) X

v2B

f(y, v) 1 A 0

@ X

u2B,v2A

f(u, v) + X

v2A

f(y, v) X

u2B

f(u, y) 1 A

= f(A, B) + X

u2A[B

f(u, y) X

v2A[B

f(y, v)

= f(A, B) + 0

= |f|

(25)

Lemme. Le flot net f(A,B) est égal à la valeur du flot f.

Corollaire. La somme des flots sortants du sommet s est égale à la somme des flots entrants dans t.

s t

10/10

5/5

10/15

0/4

0/4

5/15

5/8

0/6

10/16

0/15

0/15 10/10

10/10 5/10 5/9

10 + 5 + 10 = 5 + 10 + 10

Preuve du théorème du

maxflow-mincut

(26)

Lemme. Pour tout flot f et toute coupure (A,B), la valeur du flot f est inférieure ou égal à la capacité de la coupure

s t

capacité = 10 + 8 + 16

10/10

5/5

13/15

0/4

0/4

2/15

8/8

3/6

13/16

0/15

0/15 10/10

10/10 8/10 8/9

|f| = 8 + 10 + 10

24 28

Preuve du théorème du

maxflow-mincut

(27)

Lemme. Pour tout flot f et toute coupure (A,B), la valeur du flot f est inférieure ou égal à la capacité de la coupure.

Preuve.

|f| = X

u2A,v2B

f(u, v) X

u2B,v2A

f(u, v) X

u2A,v2B

f(u, v) X

u2A,v2B

c(u, v) = cap(A, B)

le flot net est égal à

la valeur du flot 8e 2 A, f(e) 0 8e 2 A, f(e) c(e) capacité de la

coupure

Preuve du théorème du

maxflow-mincut

(28)

Lemme. Soit f un flot. Les trois propriétés suivantes sont équivalentes.

i) Il existe une coupure dont la capacité est égal à la valeur du flot.

ii) Le flot f est maximal.

iii) Il n’existe pas de chemin améliorant par rapport à f.

s t

10/10

5/5

13/15

0/4

0/4

2/15

8/8

3/6

13/16

0/15

0/15 10/10

10/10 8/10 8/9

Preuve du théorème du

maxflow-mincut

(29)

Lemme. Soit f un flot. Les trois propriétés suivantes sont équivalentes.

i) Il existe une coupure dont la capacité est égal à la valeur du flot.

ii) Le flot f est maximal.

iii) Il n’existe pas de chemin améliorant par rapport à f.

Preuve. [i) => ii)]

Soit (A,B) une coupure telle que cap(A,B)=|f|. Pour tout flot f’, sa valeur est inférieure à la capacité cap(A,B). Donc |f’| est

inférieure à |f|.

Donc f est maximal.

Preuve du théorème du

maxflow-mincut

(30)

Lemme. Soit f un flot. Les trois propriétés suivantes sont équivalentes.

i) Il existe une coupure dont la capacité est égal à la valeur du flot.

ii) Le flot f est maximal.

iii) Il n’existe pas de chemin améliorant par rapport à f.

Preuve. [ii) => iii)]

Contraposée : si il existe un chemin améliorant, alors f n’est pas maximal puisque le chemin permet d’augmenter la valeur du flot.

Preuve du théorème du

maxflow-mincut

(31)

Lemme. Soit f un flot. Les trois propriétés suivantes sont équivalentes.

i) Il existe une coupure dont la capacité est égal à la valeur du flot.

ii) Le flot f est maximal.

iii) Il n’existe pas de chemin améliorant par rapport à f.

Preuve. [iii) => i)]

Supposons l’absence de chemins améliorants et exhibons une coupure dont la capacité soit égal à |f|.

Preuve du théorème du maxflow-mincut

s t

10/10

5/5

13/15

0/4

0/4

2/15

8/8

3/6

13/16

0/15

0/15 10/10

10/10 8/10 8/9

s t

10

5

13

2 4

3 13

3 8 13

2 1 8

2 8

10

10 4 15

3 15

(32)

Preuve. [iii) => i)]

Supposons l’absence de chemins améliorants et exhibons une coupure dont la capacité soit égal à |f|.

Soit A l’ensemble des sommets u accessibles depuis s dans le graphe résiduel (vis à vis de f). Soit B le complémentaire de A.

Par définition, s appartient à A.

Comme il n’y pas de chemin améliorant, t appartient à B.

Tous les arc allant de B à A ont un flot nul, donc cap(A,B)= f(A,B) =|f|

Preuve du théorème du maxflow-mincut

s t

10/10

5/5

13/15

0/4

0/4

2/15

8/8

3/6

13/16

0/15

0/15 10/10

10/10 8/10 8/9

s t

10

5

13

2 4

3 13

3 8 13

2 1 8

2 8

10

10 4 15

3 15

(33)

Lemme. Soit f un flot. Les trois propriétés suivantes sont équivalentes.

i) Il existe une coupure dont la capacité est égal à la valeur du flot.

ii) Le flot f est maximal.

iii) Il n’existe pas de chemin améliorant par rapport à f.

Conséquences.

1. Puisque pour tout flot f et toute coupure (A,B), la valeur du flot f est inférieure ou égal à la capacité de la coupure, i) est équivalent à l’existence d’une coupure minimale et le théorème maxflow-mincut est démontré.

2. Un flot est maximal s’il n’existe plus de chemin améliorant, donc l’algorithme de Ford-Fulkerson est correct (s’il termine).

3. On peut construire une coupe minimale avec l’ensemble des

sommets u accessibles depuis s dans le graphe résiduel d’un flot maximal.

Preuve du théorème du

maxflow-mincut

(34)

Hypothèse. La capacité de chaque arc est un nombre entier.

Lemme. Chaque flot intermediaire de l’algorithme de Ford-Fulkerson a une valeur entière.

Preuve. Par récurrence sur le nombre d’étapes de l’algorithme.

Lemme. Le nombre de chemin améliorant construit est inférieure à la valeur du flot maximal.

Preuve. La valeur du flot augmente d’au moins 1 à chaque chemin. Chaque flot f a une valeur bornée par la capacité de la coupe minimale.

On en déduit que l’algorithme termine toujours sous cette hypothèse et que le flot maximum est un nombre entier.

Complexité :

Terminaison de l’algorithme de 
 Ford-Fulkerson

au plus flot_max chemins construits une construction de chemin

= un parcours à partir de s

O(A · flot max)

(35)

Cas le pire. Existe-t-il un cas où le nombre maximum de chemins améliorants est considéré ?

Terminaison de l’algorithme de 
 Ford-Fulkerson

s

t

0/100

0/1

0/100

0/100

0/100

(36)

Cas le pire. Existe-t-il un cas où le nombre maximum de chemins améliorants est considéré ?

Terminaison de l’algorithme de 
 Ford-Fulkerson

s

t

1/100

1/1

0/100

0/100

1/100

(37)

Terminaison de l’algorithme de 
 Ford-Fulkerson

s

t

1/100

0/1

1/100

1/100

1/100

Cas le pire. Existe-t-il un cas où le nombre maximum de chemins améliorants est considéré ?

(38)

Terminaison de l’algorithme de 
 Ford-Fulkerson

s

t

2/100

1/1

1/100

1/100

2/100

Cas le pire. Existe-t-il un cas où le nombre maximum de chemins améliorants est considéré ?

(39)

Terminaison de l’algorithme de 
 Ford-Fulkerson

s

t

2/100

0/1

2/100

2/100

2/100

Cas le pire. Existe-t-il un cas où le nombre maximum de chemins améliorants est considéré ?

(40)

Terminaison de l’algorithme de 
 Ford-Fulkerson

s

t

N/100

0/1

N/100

N/100

N/100

… après 2N chemins améliorants ! Cas le pire. Existe-t-il un cas où le nombre maximum de chemins

améliorants est considéré ?

(41)

Terminaison de l’algorithme de 
 Ford-Fulkerson

s

t

100/100

0/1

100/100

100/100

100/100

… après 200 chemins améliorants ! Cas le pire. Existe-t-il un cas où le nombre maximum de chemins

améliorants est considéré ?

(42)

Application

(43)

Définition. Un graphe (non-orienté) biparti est un graphe dont l’ensemble de sommet est partitioné en deux ensembles A et B tels que chaque arête ait une extrémité dans A et l’autre dans B.

Définition. Un couplage parfait est un sous ensemble des arêtes d’un graphe biparti tel que chaque sommet est incident à exactement une arête de cet ensemble.

Problème du couplage

parfait

(44)

Réduction. On peut résoudre le problème du couplage parfait en se ramenant à un problème de flot maximum.

Il existe un couplage maximal ssi le flot maximal vaut 5.

Problème du couplage parfait

s t

avec une capacité 1 
 pour chaque arc

(45)

Réduction. On peut résoudre le problème du couplage parfait en se ramenant à un problème de flot maximum.

Il existe un couplage maximal ssi le flot maximal vaut 5.

Problème du couplage parfait

s t

ici, le flot maximal vaut 4, donc il n’y a pas de

couplage parfait

(46)

Réduction. On peut résoudre le problème du couplage parfait en se ramenant à un problème de flot maximum.

Il existe un couplage maximal ssi le flot maximal vaut 5.

Problème du couplage parfait

s t

une coupe minimale donne des explications

(47)

Réduction. On peut résoudre le problème du couplage parfait en se ramenant à un problème de flot maximum.

Il existe un couplage maximal ssi le flot maximal vaut 5.

Problème du couplage parfait

aucune chance !

Références

Documents relatifs

Le caisson à air comprimé prépare la fondation destinée à l'échouage d'un caisson cylindrique en béton.. Use of a compressed air caisson to

Ire publié [1]. Outre la probable foire d'empoigne à prévoir pour l'achat des ces, n'oubliez pas avant tout de soumettre une interventi6.ri.~air de rien, quand organise une

On peut aussi considérer que toute fonction pourrait être vue comme la dérivée d’une autre. 2) La nécessité de ne travailler que sur un intervalle I se justifiera par la suite. 3)

1) Le rapport technique vise à fournir des renseignements scientifiques et techniques concernant les activités d'exploration, d'aménagement et de production minière sur un

Exemple 1: Donner Df puis le tableau de variation de la fonction f dont la courbe est donnée ci

Cours n°6 : Continuité, théorème des valeurs intermédiaires VII) Continuité d'une fonction – théorème des valeurs intermédiaires.

On veut montrer que la relation R, définie par ERF ≡ ∃f : E → F injective, est une relation d’ordre sur les ensembles considérés à isomorphisme près et que l’ordre opposé

•  Taille des clefs variable, stream cipher sur octets –  Normalement utilise des clefs de 64 ou 128 bits. •  Utilisé