Algorithm Search⌘K

Proofs: Fattest augmenting path

These are the human proofs of Fattest augmenting path, at full length.

The fattest augmenting path algorithm returns a maximum flow in at most m ln F + 1 rounds full

This proof shows: correctness, termination.

Let N=(G,c,s,t)N = (G, c, s, t) be a flow network with integer capacities c(e)≥0c(e) \ge 0, mm edges and s≠ts \ne t, and let FF be its maximum flow value. Write cfc_f for the residual capacities, f(e)=cf(e−)f(e) = c_f(e^-), and GfG_f for the residual graph of arcs with cf>0c_f > 0. The width of a path in GfG_f is the least cfc_f on it, and W(v)W(v) is the largest width of an s-v path, or 0 if there is none; W(s)=∞W(s) = \infty.

Claim 1 (the search finds widest paths). In a search of lines L3 to L7, each vertex uu is marked done at most once, and at that moment b[u]=W(u)b[u] = W(u), and π\pi gives an s-u path of that width.

Proof. Always b[v]≤W(v)b[v] \le W(v), because b[v]b[v] is set only to the width of the walk π\pi to uu and then xx, and the vertices on the parent chain are done, so this walk is a path. Suppose uu is the first vertex marked done with b[u]<W(u)b[u] < W(u), and let PP be an s-u path of width W(u)W(u). Let (y,z)(y, z) be the first arc of PP with yy done and zz not done before uu; it exists since ss is done first and uu is not done before. When yy was done, b[y]=W(y)≥W(u)b[y] = W(y) \ge W(u) by the choice of uu, so line L7 set b[z]≥min⁡(W(y),cf(y,z))≥W(u)b[z] \ge \min(W(y), c_f(y, z)) \ge W(u) and put zz in the heap with that key. The heap returned uu with key b[u]<W(u)≤b[z]b[u] < W(u) \le b[z] before zz, a contradiction with extracting the largest key first, unless z=uz = u, in which case b[u]≥W(u)b[u] \ge W(u). Either way, a contradiction. □\square

Claim 2 (each round augments by a widest path). If tt is done, line L9 sets Δ=W(t)>0\Delta = W(t) > 0, and line L10 augments along an s-t path of GfG_f by its bottleneck. By the invariant proved for Ford-Fulkerson, ff stays an s-t flow, the residual capacities stay nonnegative integers, and the value grows by Δ\Delta. If tt is not done when the heap is empty, the search has extracted every vertex reachable from ss in GfG_f, each with b>0b > 0, and no other vertex gets b>0b > 0; so W(t)=0W(t) = 0 and tt is not reachable.

Claim 3 (share lemma). Let r=F−∣f∣r = F - |f|. Then W(t)≥r/mW(t) \ge r/m.

Proof. Let f∗f^* be a maximum flow of NN. Put g(e+)=max⁡(f∗(e)−f(e),0)g(e^+) = \max(f^*(e) - f(e), 0) and g(e−)=max⁡(f(e)−f∗(e),0)g(e^-) = \max(f(e) - f^*(e), 0). Then g≤cfg \le c_f on each arc, gg is positive on at most one arc of each edge, and gg satisfies conservation at each v≠s,tv \ne s, t in GfG_f with value ∣f∗∣−∣f∣=r|f^*| - |f| = r. By flow decomposition, gg is a sum of at most mm positive flows along s-t paths and cycles, each path inside the support of gg and thus inside GfG_f. The paths carry rr in total, so one path carries at least r/mr/m, and since it carries at most g≤cfg \le c_f on each arc, its width is at least r/mr/m. □\square

Claim 4 (termination). Let rkr_k be the missing value after kk rounds. By Claims 2 and 3, rk+1≤rk(1−1/m)r_{k+1} \le r_k (1 - 1/m), so rk≤F(1−1/m)k<Fe−k/mr_k \le F (1 - 1/m)^k < F e^{-k/m} for k≥1k \ge 1. Each rkr_k is a nonnegative integer. If F=0F = 0 there is no round. Otherwise for k>mln⁡Fk > m \ln F we get rk<1r_k < 1, so rk=0r_k = 0, and the next search finds no path. So there are at most ⌊mln⁡F⌋+1\lfloor m \ln F \rfloor + 1 rounds.

Claim 5 (optimality). When the loop stops, S={v:b[v]>0}S = \{v : b[v] > 0\} is the set of vertices reachable from ss in GfG_f (Claim 2), with t∉St \notin S. Each edge leaving SS has cf(e+)=0c_f(e^+) = 0, so it is full, and each edge entering SS has cf(e−)=0c_f(e^-) = 0, so it is empty. By conservation ∣f∣=c(S,V∖S)|f| = c(S, V \setminus S), which bounds every flow value, so ff is maximum and the cut is minimum. ■\blacksquare

Back to Fattest augmenting path