给定网络是不是具有唯一的最小切割?
Posted
技术标签:
【中文标题】给定网络是不是具有唯一的最小切割?【英文标题】:Does a Given Network has a Unique Min-Cut?给定网络是否具有唯一的最小切割? 【发布时间】:2013-03-16 17:51:04 【问题描述】:令 G = (V, E) 是一个网络,其中 s 和 t 分别是源和汇。设 f 为 G 中的最大流。找到一个算法来确定 G 中是否存在唯一的最小割。
我设法在这个网站上找到了一个类似的问题:
Determining the uniqueness of a min-cut
那里给出的答案摘要:
在残差图中找到从 s 可达的所有顶点,我们在 G 中找到了一个最小割 (S,T)。
查看相同的残差图,从 t 开始。以箭头的反方向查看从 t 可达的顶点组(即所有可达 t 的顶点)。
这个组也是一个小片段。
如果该剪辑与您的原始剪辑相同,则只有一个。否则,你只找到了 2 个剪辑,所以原来的剪辑不可能是唯一的。
我不明白为什么如果剪辑与原始剪辑相同,那么剪辑就是独一无二的。 谁能向我们保证没有其他的最小剪辑?
提前致谢
【问题讨论】:
【参考方案1】:实际上,我不太了解该解决方案。但在原来的问题中,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
不在新的最小割中,所以它也是原始图的最小割,与我们知道的割具有相同的体积。因此,原始割不是唯一的。
原始剪辑不是唯一的(我们称它们为E
和E'
),这意味着您可以在E
中找到一条边e
,但在E'
中找不到。然后你只需将e
的容量增加1。在计算新图的最小切割时,E'
已经存在。由于E'
不包含边e
,因此最大流量毫无疑问保持不变。
希望你理解:)
【讨论】:
为什么我们需要增加E'
中每条边的容量来检查流量是否增加。如果最小切割是唯一的,这意味着所有其他切割都可以允许比E
更多的流量。我们可以在E'
中增加一个边缘的容量,并检查它是否可以通过t
。如果是,则E'
是最小切割,否则不是。
@MuhammadAdeelZahid 因为如果我们只增加 E' 中一条边的容量,我们将无法涵盖所有情况。假设我们将 E' 中一条边的容量增加一个单位流量。然后我们在我们的新图 G'' 上运行最大流量算法并且最大流量增加。可能是我们很幸运,选择了一条边,如果有能力的话,它可以承载额外的流量单位。但在 E' 中仍然可能存在另一条边 e'',因此将容量提高 1 不允许额外的流量单位通过图。【参考方案2】:
通过反证法证明第一种方法的另一种选择: ->: 假设有一个带有切边 E' 的最小 (S,T) 切。 在将属于 E' 的边 e 的容量增加 1 并发现最大流保持不变后,导致 e 不在新的最小割中。 (如果 e 在 E' 中,根据 min-cut 的性质,最大流量会增加)。 然而一开始我们说 e 在 E' - 矛盾
【讨论】:
【参考方案3】:您谈到的算法比建议的算法更有效。 算法:
对于图 G=(V,E)
-
求图中的最大流量,令 R 为最后一个残差图。
从 s 运行 BFS(查找从 s 可到达的节点),我们称它们为 X
从 t 用反向边运行 BFS(找到有到 t 的路径的节点),我们称它们为 Y。
如果 X + Y = V(联合中的“+”)返回 TRUE,否则返回 FALSE
简短说明:
在第 2 步中,我们找到确定最小割 (X, V/X) 的节点。X 是我们最后一个残差图中从 s 可到达的所有节点的集合。在第 3 步中,我们在最后一个残差图中找到可到达 t 的节点集。这个集合定义了最接近 t 的最小切割 (V-Y,Y)。在第 4 步中,从两端(X + Y = V)进行相同的切割,则图具有唯一的最小切割。
复杂度主要是找到最大流量。使用 Edmonds Karp O(|E|^2|V|) 和 BFS O(|E| + |V|)。
建议答案的复杂度为 O(|V||E|^3)。
【讨论】:
出于好奇,如果唯一的饱和边缘是最小切割中的边缘,那么有一个独特的最小切割,对吗?【参考方案4】:到目前为止,对原始帖子中提出的算法的所有讨论(这里和复制它的帖子中的 d)似乎都没有真正证明如果两个最小切割相同,那么它是唯一的最小切割。但这并不难!
好的,那么这两个最小削减是多少?我们运行最大流量算法并查看残差图。第一个切割是 (S,T=V-S),其中 S 是仅使用具有剩余容量的边可以从源到达的所有节点的集合。第二个切点是 (V-T,T),其中 T 是仅使用具有剩余容量的边即可到达汇的所有节点的集合。
如果这两个切割不同,那么显然不止一个最小切割。但是如果它们相同,那么我们可以使用 laike9m 描述的技术来证明这是 only 最小割。为什么?好吧,根据上一段中 S 和 T 的定义,切割中的每条边 e=(v0->v1) 都有一条路径 s->v0 和一条路径 v1->t 具有剩余容量。因此,如果我们增加 e 的容量,我们知道我们会增加最大流量。由于对于割中的每条边 e 都是如此,这意味着这个最小割是唯一的。
【讨论】:
以上是关于给定网络是不是具有唯一的最小切割?的主要内容,如果未能解决你的问题,请参考以下文章