In class we saw an algorithm to find -approximate max-flows in time for undirected graphs with unit capacities. In class, we said: if there exists a flow of value that respects all the capacities, we find flows that achieve value and violate the capacities by . We can scale down this flow to respect all capacities but get flow value . Finally, binary search means we get flow value .
Aram asked about capacities: indeed, everything extends naturally to general capacities (see, e.g., Kurt Mehlhorn’s notes or the original paper). (One tricky part is controlling the width; we will also talk about a general width-reduction idea in Problem #4 on the next HW.) In summary, we get that for all undirected flow networks, we can get -approximate flows in time .
For the icing on the cake: there’s a sampling technique of Karger’s that changes the dependence of the number of rounds from to — giving a total time of . Also in the original paper.
All this was for undirected graphs. What about directed graphs? We don’t yet know how to achieve similar results. But it is possible to show the following (easy) fact:
Suppose there is an algorithm that, given any directed flow network with edge capacities, finds an -approximate max-flow in time . Then there exists an algorithm that finds an -approximate max-flow in time .
Hint: given a flow we can define the residual graph (which is another directed graph). Suppose we can find a feasible flow that sends flow. How would you recurse?
Since the rate of convergence depends as , this means that if we can find approximate max-flows in any directed graph in time, we can find exact max-flows in time that is only an factor worse. Which hints at the complexity