背景
Stoer-Wagner 算法求解非负边权的无向图全局最小割,即不指定源点和汇点。
割:去掉图上的若干边,使得源点
算法
1 | MinimumCutPhase(G, w, a) |
- MinimumCutPhase 等同于最小生成树的 Prim 算法。
证明
定理 记
该定理算是比较显然的,因为
引理 记
证明 先给出一些定义,用于后续推导:
记 MinimumCutPhase 的起点为
, 的任一割为 。 当
的前一个加入点与 不在 的同一部分(e.g. 一个与源点连通,一个与汇点连通)时,记 是一个活跃(active)点。 是割 的边权和。 表示 之前加入的所有点,但不包括 。 表示集合 和点 之间所有连边的权值和。 是点集 在割 上的导出割(induced cut)。
证明思路:对于
首先,对于所有的活跃点有以下推论:
- 对于第一个活跃点来说,该不等式显然成立。一部分点与起点
连通,另一部分仅有 一个点。导出割 必然大于等于 。 - 记
是 的下一个跃点,有:
根据 MinimumCutPhase 的定义,
根据定义,割
代码
1 | const int N = 601; |