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

时间:2016-05-08 06:03:00

标签: java algorithm graph discrete-mathematics

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

example graph 在两个顶点 A Z 之间的图表中,您可以通过多种方式找到答案。以最佳方式,您只能将 A 中的一条边移到 B

如果有任何具体的算法吗?

我找到了一些建议,通过使用最大流量最小切割问题来解决这个问题,但我没有把这个问题转换成最大流量最小切割定理的一般想法。同样在这个过程中,我可能最终会删除 F G 之间的边缘,这是无用的。

1 个答案:

答案 0 :(得分:1)

这可以使用Max Flow - Min Cut问题解决。

您可以将图表建模为网络流程,如下所示:
1.将A视为源顶点,Z作为汇点顶点 2.将每条边的容量设置为1个单位。

现在,解决上述网络中的Max Flow - Min Cut问题。有了它,您将能够找到从AZ的多条边缘不相交路径。对于每个此类路径,请删除第一条边(源自源A的边)。

<强>证明
请注意,删除上方边缘后,您将无法访问AZ。如果你有一条路径,那么Max flow算法会将这条路径包含在一组边缘不相交的路径中 此外,通过构建网络,您无法删除较少数量的边缘以将AZ

分开