最小切割有向和强连通图中的所有顶点对

时间:2015-11-25 01:24:18

标签: algorithm graph max-flow ford-fulkerson minimum-cut

我有一个图G是一个有向和强连通的图,我被要求找到所有顶点对的最小切割,这意味着图中的每对S和T.这应该在O(m 2 ×n 2 )时间内完成。

我想出的最好的方法是将所有顶点都视为S,并且对于每个S,将所有其他顶点视为T,并且对于每个顶点运行Ford-Fulkerson算法,然后找到最小切割。但如果我没有弄错的话,这个算法将具有O的复杂度(m 2 ×n 2 ×C)。

如何在O(m 2 ×n 2 )时间内完成此任务?它甚至可能吗?

1 个答案:

答案 0 :(得分:1)

记号:
m:边数为n:节点数量c_max:最大单边容量为C:最大流量值。

结合使用

Dinic's algorithm可以解决手头的任务。它在O(m * n^2)中运行。 O(n^2) min cut计算的强力方法然后产生总共O(m * n^2 * n^2),这是m = O(n^2)的期望结果。对于m = o(n^2)的稀疏图,我无法找到明确的结果;但是,对于m = O(n) this paper,结果为O(n^2 + n^4 * log n) = O(m^2 * n^2 * log n)

有几种算法可以在有向图中计算最小切割(或等效地,最大流量),其复杂性保持低于O( m * n^2 )Wilf H.S., Algorithms and Complexity, 1st ed.在第65页进行了调查。最易于访问的算法可能是Dinic(O(m * n^2))。

虽然乍一看Ford-Fulkerson算法的时间复杂度高O( m * C ),但它有一些严重的缺点:

  • 时间复杂度仅对整数边缘容量有效。实际上,由于边缘容量不合理,算法甚至不能保证终止,也不能收敛到最大流量(参见this paper以获得可证明最小的反例;本文也在维基百科文章中引用)。 / p>

  • 时间复杂度取决于最大流量的值。

流量值的重要性

最大流量值C不一定是节点和边数的函数。即使它(取决于图形拓扑),以下观察也成立:任何图中的最大可能流量值是边数乘以最大边缘容量m * c_max金额为O(m)

将整数边缘容量的Ford-Fulkerson的复杂性转换为O(m^2),除非单个边的最大容量是图中节点或边数的函数,这是非标准的假设

对于其他算法没有任何影响,因为它的执行取决于图形拓扑和相对于彼此的边缘容量,而不是绝对边缘容量(因此,也不是最大流量值的函数)