Find all minimal edge cuts of a graph.
An edge cut is a set of edges that, if removed from a connected graph, will disconnect the graph.
A minimal edge cut is an edge cut such that if any edge is put back in the graph, the graph will be reconnected.
A minimum edge cut is an edge cut such that there is no other edge cut containing fewer edges.
Note that a minimum edge cut is always minimal, but a minimal edge cut is not always minimum.
g="S~tIID@OI?{@n~V?goYEDOWd?qI?sJ?[C"
G = Graph(g, sparse=True);
How to find its all minimal edge cuts? I have searched Literature [1] for the corresponding polynomial algorithm (which you can view). But I don't see any code implementation. For the above graph (with 20 vertices), perhaps a violent search would be possible.
[1] Karzanov, A.V., Timofeev, E.A. Efficient algorithm for finding all minimal edge cuts of a nonoriented graph. Cybern Syst Anal 22, 156–162 (1986). https://doi.org/10.1007/BF01074775
You can certainly implement the algorithm described in the paper.
@ David Coudert From the discussion below, it appears that there is no polynomial algorithm for finding all minimal cuts. I feel that I have misread Literature [1], or the result of Literature [1] itself is wrong.
(I don't know how I became an anonymous in this question)