-1

Probelm: Deciding whether a network flow graph has more than one min cut.

Optimal running time: O(V^2*E).

I trying to prove the correctness of the next algorithm: run Dinitz to find max-flow and build the residual graph. One min cut will be all the vertices reachable from s (as T will be all other vertices) and second min cut will be all vertices reachable from t in the reverse graph. If both cuts are equal, than there is only one min cut. Otherwise, there are more.

I'm struggling proving this algorithm. I cannot find a reason for ensuring that I'll find another min cut if it exists. I tried to prove a lemma saying that a network flow graph has a unique minimum cut, iff each vertex is reacable from s or t in the residual graph. But I'm stuck proving the <= direction.

Danielyag23
  • 51
  • 2
  • 7

1 Answers1

2

The reason you can't prove your proposed algorithm correct is because.... it actually is not a correct algorithm for this problem. If you try running it on a small example of network flow graph with more than one unique min cut, you'll see immediately what goes wrong. In particular, this algorithm fails on every flow graph that contains more than one min cut, so the problem is not at all subtle.

Perhaps it would be helpful for you to recall properties of the min-cut that is produced by applying the min-cut/max-flow theorem to the flow output by a max-flow algorithm. In particular, define $S$ to be the set of vertices reachable from $s$ along some path in the residual graph, and $T$ to be the set of vertices that can reach $t$ along some path in the residual graph. Then $S \cap T = \emptyset$ and $S \cup T = V$, and $(S,T)$ is a $(s,t)$-cut. In particular, $(S,T)$ is the cut that is selected by the min-cut/max-flow theorem (for this flow). Good.

Now notice that $T$ is exactly the set of vertices that are reachable from $t$ in the reverse of the residual graph. Therefore, your proposed algorithm amounts to finding a max-flow, computing the sets $S$ and $T$, then checking whether $S$ and $T$ are the same cuts. But the only way to interpret $S$ as a cut is as the cut $(S,V\setminus S)$, and the only way to interpret $T$ as a cut is as the cut $(V\setminus T, T)$ -- and these are always exactly the same cut! In particular, $V \setminus S = T$ and $V \setminus T = S$, so both of these cuts will always be exactly the same cut -- even if the flow graph admits multiple different cuts, your procedure will only find one of them.

In short, your proposed lemma is wrong, and the method you suggest is not a correct algorithm for this problem. The good news is that it is possible to build a correct algorithm for this problem, within the running time that you specify; see my comments for more about how to do that -- but since you said in the question you don't want some other algorithm for this task, you just want to know if your proposed algorithm is correct, I won't try to elaborate in any further depth.

D.W.
  • 167,959
  • 22
  • 232
  • 500