COMS 482: unofficial class blog


Lecture 17: Proof of Ford-Fulkerson

Posted in Class Notes by Elliott Back on March 2nd, 2005. [Del.icio.us]

An s-t cut is a partition (A, B) of the vertex set such that s in A, t in B. The capacity of a cut (A, B) c(A,B) = sum(ce) for e from A to B.

Theorem 1: Let f be an s-t flow and (A,B) be an s-t cut. Then value(f) <= c(A,B).

Proof: value(f) = fout(A) - fin(A) <= fout(A) = sum(f(e)) of e out of A = sum(ce) of e out of A = c(A,B)

Theorem 2: Let f be an s-t flow and (A,B) be an s-t cut. Then value(f) <= c(any cut).

Proof: Let f be the flow by the Ford Fulkerson algorithm. Goal: find a cut q = (A*,B*) such that value(f) = c(q)

Theorem 3: If f is an flow such that there is no s-t path in the residual graph Gf, then f is a max flow.

Proof: Let A* be a set of all vertices such that there exists an s-v path in Gf. A* = {v | there exists s-v path in Gf}. B* = the remaining vertices. B = Gfvertices - A*. We know t is in B*. There is an edge e(u, v) in G* from A* to B*. f(e) = ce, otherwise v could be in A*. Consider e’(u’, v’) in G* from B* to A*. f(e) = 0 because otherwise there would be a backedge that force u’ into A*. All edges out of A are saturate with flow. All edges going into A* have no flow. Thus, value(f) = fout(A*) - fin = sum(f(e)) e of out of A* - sum(f(e)) e into A* = sum(f(e)) e of out of A* = sum(ce) e out of A* = c(A*, B*) = value of f, since all others flows f’ have value(f’) <= c(A*, B*). Thus, f is a max flow.

Conclusions: The max s-t flow has a value equal to the capacity of the min-cut. If all capacities are integers, then there is an optimal flow f such that f(e) is an integer for each edge e.

« Previous Page