关于java:删除最小边数以断开图中的两个顶点

Removing minimum no of edges to disconnect two vertices in a graph

在这里,我试图断开一个图中两个顶点的连接,并尽可能减少边缘移除。

example graph。在这个图中,在两个顶点a和z之间,你可以用很多方法找到答案。以最佳方式,您可以从A到B只删除一个边。

有没有具体的算法?

我发现了一些用最大流最小割问题来解决这个问题的建议,但是我没有得到将这个问题转化为最大流最小割定理的一般概念。同样,在这个过程中,我可能最终会去掉f和g之间的一条边,这是无用的。


这可以用最大流量-最小切割问题来解决。

您可以将图形建模为网络流,如下所示:1。以A为源顶点,Z为下沉顶点。2。将每个边的容量设置为1个单位。

现在,解决上述网络中的最大流量-最小割集问题。使用它,您可以找到从AZ的边缘不相交路径的数量。对于每个这样的路径,删除第一个边缘(源A的边缘)。

证明:注意,在去除上述边缘后,您将无法到达AZ。如果您有一个路径,那么max-flow算法将把这个路径包含在一组边缘不相交的路径中。另外,通过网络的构建,您不能删除较少数量的边缘来断开AZ的连接。