Change in Max Flow if every edge capacity is increased - max-flow

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.

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.

Max flow - Min cut theorem

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.

How can I get maximum flow of minimum index?

Denote edge with index i by E[i].
Let S be an array of a solution.
If a maximum flow contains E[i], S[i] = 1. Otherwise, S[i] = 0.
I want to get a maximum flow whose solution is alphabetically minimum.
I can get maximum flow with Ford-Fulkerson, but I don't know how can I get the solution that is alphabetically minimum.
Algorithm
One approach is to compute the maximum flow and then for each edge in turn try:
Remove the edge from the graph
Compute the maximum flow (for efficiency start from your previous solution)
If the maximum flow has decreased then replace the edge
At the end of this process the edges used will be the lowest in alphabetical order.
Example
For your example of 0010001, 1000000, 0001100 suppose we started with the solution 1000000.
We would first try removing edge 1, the new maximum flow would have the same value, (now using edges 00100001), so we permanently remove edge 1.
Edge 2 is not included so we can permanently remove it.
Edge 3 is included, so we try removing it and computing the new maximum flow. The new flow has the same value and uses edges 0001100 so we remove edge 3 permanently.
We now try removing edge 4. However, in this case the value of maximum flow decreases so we have to keep edge 4.
Similarly we will find we need to keep edge 5, but can remove edges 6 and 7.
You can formulate it as a min cost max flow problem, by assigning smaller costs to edges with smaller indices.

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.

Resources