Question

I am reading push flow algorithm in Introduction to Algorithms by Cormen etc.

I am having difficulaty in understanding lemma 26.20 which is mentioned as below:

Let G = (V, E) be a flow network with source s and sink t, and let f be a preflow in G. Then, for any overflowing vertex u, there is a simple path from u to s in the residual network Gf.

To look context of this leema can be found at following link.

http://integrator-crimea.com/ddu0164.html

Request your help in understading this.

Thanks for your time and help.

Was it helpful?

Solution

It's been a while since I looked at all this max flow stuff, but if I'm thinking about this correctly here's what lemma 26.20 is saying.

Obviously there is a path from s -> u because there is excess in u. The important part of the lemma to think about is it states there is a simple path from u -> s which is the opposite direction of the original flow causing overflow in u (since flow originates at s and travels to u). Since there is overflow in u, there is a simple path from s -> u with at least 1 unit of flow throughout the entire path. Even if c(a,b) = 1 and f(a,b) = 1 which makes c(a,b) = 0 where a and b are all pairs of vertices in that simple path, then c(b,a) = c(b,a) - f(b,a) = 1 - (-1) = 2 because f(a,b) = -f(b,a). Thus, you could push 2 units back through that edge before reaching capacity in that direction (1 to counter the 1 already flowing making the flow over that edge 0, and another one to make the flow over that edge 1).

The reason you know it is a simple path is because if there was no simple path from s -> u there would be no flow at all through u. This is because even though there are non simple ways to reach u from s, there has to be at least one simple way or else all the flow would be caught in the non simple path which would mean none would be passing through u.

Picture this. Draw a flow graph where the source is completely cycled through a couple nodes. Is it possible to hit u (pick a node) without making a simple residual path back to s? Now try making one which has the flow maxed out in several edges all directed into u. Now try to find a simple path back to s. This may demonstrate what lemma 26.20 is saying. Some of those lemmas are pretty hard to understand, but once you really think about it, it will usually make sense. They just do a proof by contradiction to prove this which is the best way to formally prove what they are saying. Also, check the wiki page on this, it has some good insight as always! http://en.wikipedia.org/wiki/Push-relabel_maximum_flow_algorithm

Hope that makes some sense and I'm willing to work with you if it doesn't just let me know!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top