How can I find the minimum cut on a graph using a

2019-01-16 06:33发布

I need to find the minimum cut on a graph. I've been reading about flow networks, but all I can find are maximum flow algorithms such as Ford-Fulkerson, push-relabel, etc. Given the max flow-min cut theorem, is it possible to use one of those algorithms to find the minimum cut on a graph using a maximum flow algorithm? How?

The best information I have found so far is that if I find "saturated" edges i.e. edges where flow equals capacity, those edges correspond to the minimum cut. Is that true? It doesn't sound 100% right to me. It is true that all edges on the minimum cut will be saturated, but I believe there might also be saturated edges which are out of the minimum cut "path".

7条回答
▲ chillily
2楼-- · 2019-01-16 07:18

So, to give the exact procedure how to obtain the minumum cut:

  1. Run Ford-Fulkerson algorithm to find the max flow and to get the residual graph1.
  2. Run BFS on the residual graph to find the set of vertices that are reachable from source in the residual graph.(respecting that you can't use edges with 0 capacity in the residual graph) IMPORTANT: You have to use reverse edges in the residual graph to find the correct set of reachable vertices!!! (See this algorithm)
  3. All edges in the original graph which are from a reachable vertex to non-reachable vertex are minimum cut edges. Print all such edges.

1 Graph in which the capacity of an edge is defined like it's original capacity minus its flow (flow from the maximum flow network).

查看更多
登录 后发表回答