day 16 3/9/98 ``To be perverse, what we'll do now is...''
The max flow problem has as input a flow network and as output a flow, f , with maximum net flow.
There are a set of banana producers and a set of banana consumers. We want to maximize the number of bananas succesfully fed to consumers. Make the source node connect to every banana producer with capacity = banana production quantity. Make the sink node connect to every consumer with capacity = number of bananas eaten. Connect producers to consumers with capacity = amount of shipping capacity. Solve the problem. The solution maximizes shipping consumption.
Nodes are connected with some capacity and some delay. We want to mazimize the flow within some amount of time, t . Expand the graph to G×t = (V×t,Et) . Two nodes vt1,ut2 are connected if (v,u) Î E and t2-t1 = delay on that edge. Solving this flow problem will give the solution.
Given the residual network, we need to find an ``augmenting path'' which increases the flow.
if f a flow on G , Gf is a residual then
Proof of (1) f¢ is flow on Gf then f¢(e) £ Cf(e) = C(e)-f(e) Which implies f¢(e)+f(e) £ Cf(e)
"s,t cuts A,B f(A,B) = |f| .
|f| £ C(A,B)
The following are equivalent:
Add up all the augmenting paths to get the flow.
The convergence time can be very long. For integers it can be at least proportional to |f| . If you allow noninteger capacities the algorithm may not even be convergent.