设G =(V,E)是一个网络,其中s和t是源和接收器。设f为G中的最大流量。找到一个算法,确定G中是否存在唯一的最小切割。
我设法在这个网站上找到了类似的问题:
Determining the uniqueness of a min-cut
在那里给出的答案摘要:
找到残差图中s可到达的所有顶点,我们在G中找到了最小割(S,T)。
从t开始,查看相同的残差图。查看箭头反方向可以从t到达的顶点组(意味着可以到达t的所有顶点)。
这个小组也是一个小切割。
如果切割与原始切割相同,那么只有一个。否则,您刚刚发现了2个切口,因此原始切割不可能是唯一的。
我不明白为什么如果切割与原始切割相同,那么切割是独特的。 谁可以向我们保证没有其他的减产?
提前致谢
答案 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; =:
原始剪辑不是唯一的(我们称之为E
和E'
),这意味着您可以找到位于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)
一个简短的解释:
在步骤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 都是正确的,这意味着这个最小切割是唯一的。