给定加权有向图,我们希望找到全局最小切割 - 也就是说,一组边缘如果被移除将图形分成两半并且与任何其他此类切割相比具有最小量的总重量。
现在,虽然以下似乎有效,但我被告知推理是错误的。但坦率地说,我不知道他是怎么做的,我也不确定他是多么确定:
考虑由全局最小割分隔的节点集U,V
(即s-t-cut,其中s in U, t in V
)。注意:我们不关心从V
到U
的边缘。
对于任何u in U, v in V
m,u-v-cut不能小于s-t-cut
,否则,s-t-cut不会(全局)最小。出于同样的原因,u
中的两个顶点或V
中的两个顶点之间的切割不会更小。
另一方面,uv-cut也不能更大,否则,它需要包括一些边缘U->V
而不是st-cut的一部分,这意味着st-cut根本没有切割
因此,任意修复s
并迭代所有其他顶点x
就足够了。 s
位于U
,如果x
位于V
,则sx-cut对应全局最小值,如果s
则xs-cut为V
位于x
,U
位于find
。如果它们都是同一组的一部分,则切割将至少与全局最小值一样大(但可能更大)。
因此,我们最终会通过计算两者来找到全局最小值,并跟踪到目前为止遇到的最小切割。
这似乎对我有意义。我错了吗?如果是这样,为什么?
答案 0 :(得分:2)
我的解释是你基本上问了以下问题:
我们可以通过固定任意顶点并计算所有顶点的所有s-t和t-s最小切割来找到全局最小切割t!= s?
答案是肯定的,并且很容易证明:考虑具有值C的全局最小割(U,V)。然后s在U中或s在V中。
案例1 :s在U中。根据最小割的定义,我们有V!= {},因此在V中有一个顶点t。然后(U,V)是有效的st cut,所以最小st cut的值最多为C
案例2 :s在V中。然后在U中存在一个顶点t,并且上面的相同参数适用于最小t-s切割