无向图最小割
基本定义
对于一张无向带权图
对于指定的
对于一张图,权值最小的割称为最小割。多数情况下,最小割不是唯一的。
例如,在下图中:
为了方便,我们对于任意的不相交集合
换言之。权值是横跨
现在来考虑一个比较浅显的定理:
对于任意四个不相交集合
$S_1$ 、$T_1$ 、$S_2$ 和$T_2$ ,满足$S_1 \cup T_1 \cup S_2 \cup T_2 \subseteq V$ ,那么一定有:
$$ W(S_1, T_1) + W(S_2, T_2) \leqslant W(S_1 \cup S_2, T_1 \cup T_2) \tag{1.3}$$
证明:
求解$s$ -$t$ 最小割
利用最大流最小割定理,一个图的
求解全局最小割
所谓全局最小割就是无向图本身的最小割,没有限定
- 令
$i = 1, w_0 = \infty$ 。- 如果
$|V| \leqslant 1$ ,返回$\min\{w_0, w_1, \dots, w_{n - 1}\}$ 。- 随便选定两个点
$s$ 和$t$ ,求出其$s$ -$t$ 最小割,记权值为$w_i$ 。- 将
$s$ 和$t$ 合并,即将$E$ 中的每条边的$t$ 改成$s$ ,并从$V$ 中删去$t$ 。$i = i + 1$ ,跳回第二步。
这样做的理由是:假设全局最小割为
- 如果
$s$ 和$t$ 分别在$S$ 和$T$ 中,那么$s$ -$t$ 的最小割就是全局最小割。 - 如果
$s$ 和$t$ 同在$S$ 或$T$ 内,那么将$s$ 和$t$ 合并为一个点后,不会影响割的权值。
这样我们可以在
考虑到在第三步中,我们实际上并不关心
现在来考虑以下这个算法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function ST-MINCUT(G): assert |V| > 1 A = {} B = V s = 0 t = 0 while |B| > 0: p = 0 for u in B: if W(A, {u}) > W(A, {p}): // Assume that W(A, 0) = 0 p = u A = A ∪ p B = B - {p} s = t t = p return (s, t) |
该算法会返回一个二元组
下面我们将证明这是对的:
设
$s$ 和$t$ 为ST-MINCUT
中$A$ 集合倒数第二个加入的点和最后加入的点,那么$(V - \{t\}, \{t\})$ 是一个$s$ -$t$ 最小割。
证明1:
我们令ST-MINCUT
算法在
这几个集合内的点的一种可能如下表所示:
进行归纳假设,对于
现在我们要证明
以及:
根据归纳假设,我们有:
考虑到算法的
综上可知:
这样,我们可以通过执行ST-MINCUT
算法来找出全局最小割。ST-MINCUT
的直接实现是
-
这个证明是原论文中的证明方式,个人认为其中有一些不妥之处,因为在最后一步时,好像忽略了
$w(t^\prime, t)$ ,导致不等式会不成立。不知道是不是个人的理解上的偏差还是确实有误,如果有看过原证明的大神希望能指点我一下。 ↩