MaximumFlowLP

Top | recent changes | Preferences

Showing revision 1

maximum flow

input: a directed graph G=(V,E) with edge capacities c, a source vertex s, and a destination vertex t

goal: find the maximum-size flow from s to t

A flow f is an assignment of non-negative values to the edges in E. f(u,v) denotes the amount of flow on edge e=(u,v).

To simplify the presentation, we introduce an artificial, infinite capacity edge from t to s.

The flow is feasible if it meets the following constraints:

(conservation) The flow into each vertex equals the flow out. (capacity) The flow on each edge does not exceed the capacity of the edge.

The size (or value) of the flow is the total flow from t to s.

Maximize f(t,s) subject to
(conservation) v f(w,v) - u f(u,w) = 0 for each vertex w,
(capacity) 0 ≤ f(u,v) ≤ c(u,v) for each edge (u,v).

The dual is:

Minimize u,v c(u,v) x(u,v) subject to
y(u) - y(v) + x(u,v) ≥ 0 for each edge (u,v) other than (t,s),
y(t) - y(s) + x(t,s) ≥ 1.
x(u,v) ≥ 0 for each edge (u,v).

ote that any s-t cut C (a collection of edges whose removal separates s from t) gives a feasible solution to the dual, where y(u) = 0 if u is reachable from s without using edges in C, and y(u) = 1 otherwise, and x(u,v) = 1 if (u,v) in C and 0 otherwise. The total capacity of the edges in the cut equals the cost of the corresponding solution to the dual.

In fact, any minimum-capacity cut gives an optimal dual solution in this way. This is the gist of the max-flow min-cut theorem.


Top | recent changes | Preferences
This page is read-only | View other revisions | View current revision
Edited January 23, 2004 4:09 pm by NealYoung (diff)
Search: