Théorème flot-max/coupe-min

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Le théorème flot-max/coupe-min (ou max flow/min cut en anglais) est un théorème important en optimisation et en théorie des graphes. Il stipule qu'étant donné un graphe de flots, le flot maximum pouvant aller de la source au puits est égal à la capacité minimale devant être retirée du graphe afin d'empêcher qu'aucun flot ne puisse passer de la source aux puits.

Ce théorème est un cas particulier du théorème de dualité en optimisation linéaire et généralise le théorème de Kőnig, le théorème de Hall (dans les graphes bipartis) et le théorème de Menger (dans les graphes quelconques).

Définitions et notations[modifier | modifier le code]

Soit G=(V,A) un graphe orienté.

Graphe de flot[modifier | modifier le code]

Un graphe de flots vérifie les deux conditions suivantes :

  • il possède deux sommets particuliers distincts, une source s et un puits t ;
  • chaque arc (u,v) de G possède un capacité, c(u,v) qui représente le flot maximum pouvant passer par cet arc. Cette capacité est positive.

Un flot dans un graphe de flot est une fonction f qui, à chaque arc (u,v), associe une quantité f(u,v). Un flot doit vérifier les conditions suivantes :

  • la contrainte de capacité: f(u,v) \le c(u,v) pour tout arc (u,v)\in A,
  • la loi de conservation du flot:
\sum_{u:(u,v)\in A} f(u,v) = \sum_{u:(v,u)\in A} f(v,u) pour tout sommet v \in V\setminus\{s,t\}.
Cette contrainte s'appelle aussi la loi des nœuds des lois de Kirchhoff.

La valeur du flot, notée |f| est la quantité de flot allant de la source au puits. Elle est égale |f| = \sum_{v\in V} f(s,v) .

Problème de flot maximum[modifier | modifier le code]

Article détaillé : Problème de flot maximum.

Le problème de flot maximum est le problème de maximiser la quantité de flots allant de la source au puits. Cela se traduit par la maximisation de la valeur du flot |f|.

Problème de coupe minimum[modifier | modifier le code]

Article détaillé : Coupe minimum.

On appelle coupe S-T de G, une paire de sous-ensembles de sommets (S,T) qui partage l'ensemble des sommets de G en deux ensembles S et T disjoints, tels que s\in S et t\in T.

La capacité de la coupe (S,T), notée c (S,T), est la somme des capacités des arcs de S à T, soit

c (S,T) = \sum_{u\in S, t \in T} c(u,v).

Le problème de coupe minimum est la minimisation de la capacité c (S,T), c'est-à-dire recherche d'une (S,T) qui minimise la capacité de la coupe S-T.

Énoncé[modifier | modifier le code]

Le théorème flot-max/coupe-min est le suivant[1],[2],[3] :

Théorème flot-max/coupe-min — Pour tout graphe orienté G , tout couple (s,t) de sommets, et pour tout vecteur de capacités positives, la valeur maximale du flot de s à t est égale à la capacité d'une coupe minimale séparant s de t.

Le théorème a été prouvé par Lester Randolph Ford junior et Delbert Ray Fulkerson en 1954, l'article est paru en 1956[4]. L'algorithme a été donné l'année suivante, aussi par Ford et Fulkerson, et indépendamment par d'autres auteurs, notamment déjà dans une courte note par Peter Elias, A. Feinstein et Claude Shannon[5]. Une description des premiers travaux de Ford et Fulkerson a été donnée par Alexander Schrijver[6].

Le théorème s'étend également aux graphes non orientés.

Formulation en termes de programme linéaire[modifier | modifier le code]

Les problèmes de flot maximal et coupe minimale peuvent être formulés comme étant les versions primale et duale d'un même programme linéaire. Pour cela, on note c le vecteur dans \R_+^{|A|} contenant les valeurs de toutes les capacités. Alors on a :

Flot maximum (Primale) Coupe minimum (Duale)
maximiser |f|=\nabla_s

sous les contraintes


\begin{array}{rcll} f(i,j) & \leq & c(i,j)\quad  &(i, j) \in A \\
\sum_{j: (j, i) \in A} f(i,j) - \sum_{j: (i, j) \in A} f(i,j) & \leq & 0 & i \in V, i \neq s,t \\
\nabla_s + \sum_{j: (j, s) \in A} f(j,s) - \sum_{j: (s, j) \in A} f(s,j) & \leq & 0 & \\
\nabla_t + \sum_{j: (j, t) \in A} f(j,t) - \sum_{j: (t, j) \in A} f(t, j) & \leq & 0 & \\
f(i,j) & \geq & 0 & (i, j) \in A\\
\end{array}

minimiser \sum_{(i, j) \in A} c_{ij} d_{ij}

sous les contraintes

\begin{array}{rcll}
d_{ij} - p_i + p_j & \geq & 0 & (i, j) \in A \\
p_s & = & 1 & \\
p_t & = & 0 & \\
p_i & \geq & 0 & i \in V \\
d_{ij} & \geq & 0 & (i, j) \in A
\end{array}

L'équivalence entre ces deux problèmes est une conséquence directe du théorème de dualité forte en optimisation linéaire.

Généralisation des théorèmes de König, Hall et Menger[modifier | modifier le code]

Il est clair que Menger est un cas particulier du théorème flot-max/coupe-min. Pour voir que ce théorème permet d'obtenir les deux théorèmes sur les graphes bipartis, il faut associer à un graphe biparti  G=(A,B;E) le graphe orienté  D obtenu en ajoutant un sommet source  s et des arcs de  s vers les sommets de  A et en ajoutant un sommet puis  t et des arcs des sommets de  B vers  t, et en orientant les arêtes de  G dans le sens  A vers  B . Pour König, le couplage min de  G correspond clairement au flot max dans  D si tous les arcs ont une capacité 1. La coupe min  (S,T) séparant  s et  t de  D s'obtient à partir d'un transversal  T de  G en définissant  S:= \{s\} \cup (Y\cap T) et  T:= \{t\} \cup (X\cap T) , et vice-versa. Pour Hall, il suffit de remarquer que pour tout  X \subseteq A on a que  X\cup (Y\setminus N(X)) est un transversal de  G . Donc la cardinalité d'un transversal min (et donc d'une coupe min) par le raisonnement précédent a pour cardinalité  |A|\, (=|B|) si et seulement si la condition de Hall est vérifiée.

Notes et références[modifier | modifier le code]

  1. Cormen et. al..
  2. Kevin Wayne.
  3. Kleinberg et Tardos.
  4. Saul I. Gass et Arjang A. Assad, An annotated timeline of operations research: an informal history, Kluwer Academic Publishers (Springer-Verlag), coll. « International series in operations research & management science »,‎ (ISBN 978-1-4020-8112-5), « 1954 Max-flow min-cut theorem », p. 96-97.
  5. (en) Peter Elias, Ariel Feinstein et Claude Shannon, « A note on the maximum flow through a network », IEEE Trans. Inf. Theory, vol. 2, no 4,‎ , p. 117-119.
  6. Alexander Schrijver, « On the history of transportation and maximum flow problems », Mathematical Programming Series B, vol. 91, no 3,‎ , p. 437-445.

Bibliographie[modifier | modifier le code]

De nombreux ouvrages et livres d'enseignement exposent le théorème du flot maximum - coupe minimum, le plus souvent avec l'algorithme de construction de Ford et Fulkerson.