给定网络是不是具有唯一的最小切割?

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不在新的最小割中,所以它也是原始图的最小割,与我们知道的割具有相同的体积。因此,原始割不是唯一的。

原始剪辑不是唯一的(我们称它们为EE'),这意味着您可以在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 都是如此,这意味着这个最小割是唯一的。

【讨论】:

以上是关于给定网络是不是具有唯一的最小切割?的主要内容,如果未能解决你的问题,请参考以下文章

最大流量和最小切割中的多个源和汇

hihocoder 网络流二·最大流最小割定理

查找具有唯一列的数组中每一行的最小值

hihoCoder1378 (最大流最小割)

OpenCv 神经网络记录

Ford-Fulkerson 算法找到哪个最小割?