Max flow - Min cut theorem - algorithm

I understand the Ford-Fulkerson's method for finding the max flow, but I'm having trouble understanding how min-cut gives the value of max flow.
Max flow - min cut theorem states that the maximum flow passing from source to sink is equal to the value of min cut.
Min-cut in CLRS is defined as :
A min cut of a network is a cut whose capacity is minimum over all cuts of the network.
If the capacity is minimum, it means that there exist augmenting paths with higher capacities, then how come paths with lower capacity yeild max flow? By capacity does the author mean residual capacity ? Because then it all makes sense.

If I understood the question correctly, there is some misunderstanding. An augmenting path cannot have a higher capacity than the capacity of the minimal cut. Intuitively, for any fixed network flow and any fixed cut, the flow must transport its value from the cut's partition which contains the source to the partition which contains the terminal; however, this value cannot be larger than the cut's capacity.
To phrase it more roughly, the value of any flow cannot be larger than the "bottleneck" of the network, which is the minimimum possible capacity of a cut.

Related

Why is the global min cut cardinality less than the degree of every vertex for network flows

I get that min-cut equals to max flow. But why does every node has to have a degree larger than the cardinality of global min-cut for it to be valid
For every node, cutting that node from the rest of the graph produces a cut of size equal to the degree of that node, hence the global min cut can be no larger.

An 'increasing Edge' in a network flow

We are given a network flow, as well as a max flow in the network. An edge would be called increasing edge if increasing its capacity in an arbitrary positive number, would also increase the max flow.
Present an algorithm the finds an increaing edge (if one exists) and runs at $O(n^2)$.
I thought about the following idea -
Find the minimum cut in the graph, as its given to us with the ford-fulkerson algorithm.
Increase the capacity of all the edges in the left hand side of the cut by 1.
Run BFS in the residual network to find if an improved path exists. If one exists, we have an increasing edge. To find it, we have to compare the original network with the new network. We have to do that n times since we have to check for an improved path every time we increase the capacity by 1.
Is it correct, an am I in line with the required running time?
Thank you!
I think you just need to find a path from the source to the sink that would be an augmenting path if at most one node were increased in capacity.
First find all the best paths to vertices you can reach with residual capacity. If you found the sink, then you weren't given a max flow to begin with.
Then find all the other vertices that are adjacent to those ones though edges that are at capacity.
Then try to find an augmenting path from those vertices to the sink.
Total complexity is O(N), so whoever asked you this question probably had something else in mind.

Finding the Maximum Cut of undirected graph using Stoer-Wagner algorithm

Can I use Stoer-Wagner algorithm to find the max cut?
Say, I negate all weights of the edges and find the minimum cut of this graph using Stoer-Wagner algorithm, is the result cut a max cut of the original graph?
Added: In Stoer-Wagner algorithm, what if I choose the least tightly connected vertex instead, and choose the largest among all cut returned by cut-of-the-phase, is it the global maximum cut? Why or Why not? Any example?
Nico's observation that max cut is hard is the general reason that approaches like this one probably won't work, but the specific problem is that, when Stoer--Wagner goes to find an st min cut, the max flow routine that it most likely calls can't find a flow at all, since all of the capacities are negative. (Max flow algorithms can handle negative capacities in case there's a way to circulate flow to eliminate the negative capacities and get a feasible flow, but if they're all negative, then there's no way.)

Min-cost-flow to max-flow

Is there a reduction from the min cost flow problem to the max-flow problem? Or viceversa? I would like to use a min cost flow algorithm to solve a max-flow problem.
Sorry I think I misunderstand the question the first time. Yes, Minimum Cost is a special case for max flow. Rather than max flow, min cost assumes that after going through each edge, there is a cost to the flow. Therefore, if you set the cost at each edge to be zero, then min cost is reduced to the max flow.
Edit:
Since min cost problem needs a pre-defined required flow to send to begin with. You will need to run the above algorithm (with cost of edge c(u, v) = 0) for multiple times to search for the maximum value. For a given range of values, binary search can be used to more efficiently locate the max
Do you mean Min Cut Max Flow? (Edit: I do not think you meant this, but this is the basis of proving max flow, worth looking at if you have not)
I will be easier to understand if you drop a graph and do a min cut yourself.
Add a cost (per unit flow) of -1 to each edge, then use your minimise cost algorithm. That will maximise the flow.
The accepted answer may be practical. Proofing that Max-Flow is a special case of Min-Cost-Flow there is another possibility. My solution takes one iteration of the minimum-mean-cycle-cancelling algorithm in O(m^3 n^2 log n) (cause c is not conservative):
1. set c(e) = 0 for all edges in G
2. add edge (t,s) with inf capacity and c((t,s)) = -1
3. start MIN-MEAN-CYCLE-CANCELLING on modified graph G'
correctness: Algorithm is searching for residual circles with negative weight. As long as there is an augmentive path from s to t there are negative weighted residual circles.

Change in Max Flow if every edge capacity is increased

I need to find a linear algorithm (O(|V| + |E|) that would find the max flow on a graph where original max flow is known but the capacity of each edge is increased by 1.
If you know what the mincut is, I suppose you can just add one to the max flow for each cut edge.

Resources