Stoer-Wagner 算法求无向图上的全局最小割。

任取两点st,考虑这个无向图上的最小割,有下面两种情况: 1. st在割的同一侧 2. st在割的两侧

对于第二种情况,普通的s-t最小割就是这个全局最小割。对于第一种情况,已知st 在割的同一侧,把他们看成一个点对结果没有影响,于是把st两个点缩成一个点,再任取两点,重复这个过程,直到图中只有一个点。

cut-of-the-phase

求任意两点的s-t割如果使用网络流速度有些慢。 cut-of-the-phase 可以求出某两点之间的s-t最小割。既然Stoer-Wagner中的st是任取的, 自然可以选择cut-of-the-phase能求出最小割的那两点。

cut-of-the-phase{: width=“500” }

图中 most tightly connected vertex 指的是 (if there is no edge e(v,u), d(v,u)=0), cut-of-the-phase指的是最后加入 的点 与倒数第二个加入 的点 的s-t割就是

下面最后加入 的点是 ,倒数第二个加入的是 。令 , (if there is no edge e(x,y), d(x,y)=0),

要证明 之间的最小割是这样的:

cut-of-the-phase-1

而不是这样的:

cut-of-the-phase-2

表示 之前加入 的所有点的集合, 为上图中的第二种情况(任意一个不是第一种情况的割,t在Y中)。下面用归纳法证明

对于n=1,2,

假设n=k时满足 ,n=k+1,最后加入 的点是 .

由于 加入 晚于 ,有

带入,

显然有