前段时间我读到了一般的mininum cut算法,该算法将图形作为输入并删除min。边数,使两个断开的组件保持不变。
我现在正在开发一个带有10k +节点和500k +边缘的无向图(两个顶点之间没有多个边)。为了确定节点之间的交互,我考虑计算断开两个给定顶点(或与流量相关的度量)的最小切割。
是否有有效的算法为图中的每对顶点提出一个值(最小割集的基数)?如果有人能够提供链接到论文或其他资源的链接,概述在合理的运行时复杂性下运行的算法,我将非常感激。
谢谢!
答案 0 :(得分:7)
有几种算法(参见Wiki的介绍)可以找到网络中的最大流量。那些我认识的人(Ford-Fulkerson,Dinic,Karp-Edmond)应该在单位容量方面表现良好(= 所有边缘的整数容量等于1 )(可变容量会增加复杂性并且会出现更多问题)整数容量)
对于任何一对顶点,您可以通过将source / sink设置为此对来从图形创建网络。您可以使用其中一种算法获得最大流量,您可以按如下方式使用这些算法:
最后,您有最小切割量,最大流量大小。
如果你真的想要表演,你可能想看一下这篇文章:Andrew V. Goldberg,Satish Rao的Flows in Undirected Unit Capacity Networks (1997) ,但我可能会坚持使用更简单的那些。 / p>