Vous êtes sur la page 1sur 1

Mengers theorem

Vassos Hadzilacos
University of Toronto
November 2013

Mengers Theorem. Let G = (V, E) be a digraph and s, t V . The maximum number of edge-disjoint
s t paths in G is equal to the minimum number of edges whose removal from G disconnects s and t.
Proof. Let P be any set of edge-disjoint s t paths, and D be any set of edges whose removal from G
disconnects s and t. By the pigeonhole principle, |P | |D|: Every path in P (pigeon) must use an edge
in D (pigeonhole); otherwise, the removal of D from G does not disconnect s and t. Furthermore, no two
paths in P (pigeons) can share the same edge in D (pigeonhole); otherwise, P is not edge-disjoint. So there
are no more pigeons (paths in P ) than pigeonholes (edges in D). This immediately implies the following:
Claim. If |P | = |D| then (a) P is a maximum cardinality set of edge-disjoint s t paths, and (b) D is a
minimum cardinality set of edges whose removal disconnects s and t.
Let P be a maximum cardinality set of edge-disjoint s t paths. Let G be the flow graph obtained
from G by removing all edges into s and from t, and assigning capacity 1 to every edge. Let f be a
maximum flow of G , (S, T ) be a minimum (s, t)-cut of G , and D = out(S) in(T ); i.e., D is the set of
edges that cross the cut from S to T . By definition, the removal of D from G disconnects s and t, and
so the removal of D from G also disconnects s and t (why?). We have:
|P | = V(f )
= c(S, T )

= |D |

[proved in class in discussion of max edge-dispoint path problem]


[by max-flow-min-cut]
[by def. of D and the fact that all edges have capacity 1]

By part (b) of the above Claim, D is a minimum cardinality set of edges whose removal from G disconnects
s and t.
So, we proved that the maximum number of edge-disjoint s t paths in G is equal to the minimum
number of edges whose deletion from G disconnects s and t.
The proof of Mengers theorem immediately suggests an algorithm that, given a directed graph G and
vertices s, t, finds a minimum cardinality set of edges whose deletion from G disconnects s from t:
(1)
(2)
(3)
(4)

Construct G from G, s, and t


Find a maximum flow f of G
Using f , find a minimum cut (S, T ) of G
Return the set of edges out(S) in(T )

This takes O(mn) time, where m is the number of edges of G and n is the number of vertices of G.

Vous aimerez peut-être aussi