给定网络是否具有独特的最小切割?

时间:2013-03-26 19:11:51

标签: graph-algorithm max-flow network-flow

设G =(V,E)是一个网络,其中s和t是源和接收器。设f为G中的最大流量。找到一个算法,确定G中是否存在唯一的最小切割。

我设法在这个网站上找到了类似的问题:

Determining the uniqueness of a min-cut

在那里给出的答案摘要:

找到残差图中s可到达的所有顶点,我们在G中找到了最小割(S,T)。

从t开始,查看相同的残差图。查看箭头反方向可以从t到达的顶点组(意味着可以到达t的所有顶点)。

这个小组也是一个小切割。

如果切割与原始切割相同,那么只有一个。否则,您刚刚发现了2个切口,因此原始切割不可能是唯一的。

我不明白为什么如果切割与原始切割相同,那么切割是独特的。 谁可以向我们保证没有其他的减产?

提前致谢

4 个答案:

答案 0 :(得分:5)

实际上,我不太了解这个解决方案。但在最初的问题中,davin提供的第二个答案是完全正确的。

我只是将其复制并粘贴在这里

Given a minimum S-T cut, (U,V) with cut-edges E', we make one simple observation:
If this minimum cut is not unique, then there exists some other minimum cut with 
a set of cut-edges E'', such that E'' != E'.

If so, we can iterate over each edge in E', add to its capacity, recalculate the
max flow, and check if it increased.

As a result of the observation above, there exists an edge in E' that when
increased, the max flow doesn't increase iff the original cut is not unique.

对我自己的一些解释

你需要证明的是

there exists an edge in E' that when increased, the max flow doesn't increase
<=>
the original cut is not unique

=计算值:
您将边e的容量增加1,计算新的最大流量并保持不变,这意味着e不在新的最小切割中。 (如果e在,根据min-cut的属性,f(e)= e的容量,这导致增加)。由于e不在新的最小切割中,它也是原始图形的最小切割,与我们知道的切割具有相同的体积。因此,原始切割不是唯一的。

&LT; =:
原始剪辑不是唯一的(我们称之为EE'),这意味着您可以找到位于e但不在E中的边E' }。然后你只需将e的容量增加1.当计算新图的最小切割时,E'已经存在。由于E'不包含边e,因此毫无疑问,最大流量保持不变。

希望你明白:)

答案 1 :(得分:0)

通过矛盾证明第一种方式的另一种选择: - 计算值: 让我们说有一个带切边E&#39;的单个最小(S,T)切口。 增加边缘e的容量后属于E&#39;通过1并发现最大流量保持不变,导致e不在新的最小切割中。 (如果e在E&#39;,根据min-cut的属性,最大流量将增加)。 然而,一开始我们说e是在E&#39; - 矛盾

答案 2 :(得分:0)

您谈到的算法比建议的算法更有效。 算法:

对于图G =(V,E)

  1. 在图表中查找最大流量,并让R为最后一个残差图表。
  2. 从s运行BFS(查找从s可到达的节点),让我们称之为X
  3. 从反向边缘运行BFS(找到有t路径的节点),让我们称之为Y.
  4. 如果X + Y = V(联合中的'+')则返回TRUE,否则返回FALSE
  5. 一个简短的解释:

    在步骤2中,我们找到确定最小割(X,V / X)的节点.X是我们上一个残差图中s可到达的所有节点的集合。在步骤3中,我们找到在最后一个残差图中可以从其到达t的节点集。该组定义了切口(V-Y,Y),它是最接近t的最小切口。在步骤4中,从两端进行相同的切割(X + Y = V),然后图形具有唯一的最小切割。

    复杂性主要是找到最大流量。使用Edmonds Karp O(| E | ^ 2 | V |)和BFS O(| E | + | V |)。

    建议答案的复杂性为O(| V || E | ^ 3)。

答案 3 :(得分:0)

到目前为止,所有关于原始帖子中提出的算法的讨论(这里和复制它的帖子中的 d)似乎都没有真正证明如果两个最小切割相同,那么它是独特的最小切割。但这并不难!

好的,那么这两个最小削减是多少?我们运行最大流算法并查看残差图。第一个切割是 (S,T=V-S),其中 S 是仅使用具有剩余容量的边可以从源到达的所有节点的集合。第二个切割是 (V-T,T),其中 T 是仅使用具有剩余容量的边即可到达汇点的所有节点的集合。

如果这两个切割不同,那么显然有不止一个最小切割。但如果它们相同,那么我们可以使用 laike9m 描述的技术来证明这是唯一的最小切割。为什么?好吧,根据上一段中 S 和 T 的定义,切割中的每条边 e=(v0->v1) 都带有路径 s->v0 和路径 v1->t,它们具有剩余容量。因此,如果我们增加 e 的容量,我们知道我们将增加最大流量。由于这对于切割中的每条边 e 都是正确的,这意味着这个最小切割是唯一的。