🔖 算法图论网络流最大权闭合图

Terms

对于有向图 $G=(V,E)$,其中 $V$$G$ 的点集,$E$$G$ 的边集。

  • 割集: 一个 $s-t$$[S,T]$$V$ 的一种划分,使得 $s\in S$$t\in T$

  • 最小割: 一个 $s-t$ 割的容量是 $\displaystyle c(S,T) = \sum_{(\mu,\nu) \in (S\times T)\bigcap E} c(\mu,\nu)$;容量最小的割集称为最小割

  • 简单割:若一个 $s-t$ 割满足割中的每条边都只与源点 $s$ 或汇点 $t$ 相连,则称该割为简单割

  • 闭合图:若点集 $V' \in V$ 是一个闭合图,那么对于 $\forall \left< \mu, \nu\right > \in E$,若 $\mu \in V'$ 则必有 $\nu \in V'$

  • 最大权闭合图: 一个点权和最大的闭合图

    如下图所示,图中有 9 个闭合图(含空集):$\emptyset$$\lbrace 3,4,5 \rbrace$$\lbrace 4,5 \rbrace$$\lbrace 5 \rbrace$$\lbrace 1,2,4,5 \rbrace$$\lbrace 2,5 \rbrace$$\lbrace 2,4,5 \rbrace$$\lbrace 2,3,4,5 \rbrace$$\lbrace 1,2,3,4,5 \rbrace$。其中,惟一的最大权闭合图为 $\lbrace 3,4,5 \rbrace$,且权和为 $4$

    1.png

最大流最小割定理

$f$ 为流网络 $G=(V,E)$ 中的一个流, 该流网络的源节点为 $s$, 汇点为 $t$, 则下面的条件是等价的:

  • $f$$G$ 的一个最大流
  • 残流网络 $G_f$ 不包含任何增广路径
  • $|f|=c(S,T)$, 其中 $[S,T]$ 是流网络 $G$ 的最小割

网络流与最大权闭合图

将原图转化为网络 $N=(V_N, E_N)$

  • 将原图中的所有有向边 $\left< \mu, \nu\right > \in E$ 替换为容量为 $c(\mu,\nu)=\infty$ 的有向边 $\left< \mu,\nu \right>$,并将其纳入边集 $E_N$

  • 增加源点 $s$ 和汇点 $t$

  • 由源点向原图中的所有正权点 $\nu(\omega_\nu > 0)$ 连接一条容量为 $c(s,\nu)=\omega_\nu$ 的有向边 $\left< s,\nu \right>$,并将其纳入边集 $E_N$

  • 由原图中的所有负权点 $\nu(\omega_\nu < 0)$ 连接一条容量为 $c(\nu,t)=-\omega_\nu$ 的有向边 $\left< \nu,t \right>$,并将其纳入边集 $E_N$

也就是

$$\begin{align} &V_N=V \bigcup \lbrace s,t \rbrace \\\\ &E_N=E \bigcup \big\lbrace \left< s,\nu \right> \big| \nu\in V, \omega_\nu > 0 \big\rbrace \bigcup \big\lbrace \left< \nu,t \right> \big| \nu\in V, \omega_\nu < 0 \big\rbrace \\\\ &\text{其中,}\left \lbrace \begin{aligned} &c(\mu,\nu)=\infty & \left< \mu,\nu \right> \in E \\ &c(s,\nu)=\omega_\nu & \omega_\nu > 0 \\ &c(\nu,t)=-\omega_\nu & \omega_\nu < 0 \end{aligned} \right. \end{align}$$

上式中的 $\infty$ 取一个大于 $\displaystyle \sum_{\nu \in V} \big| W_\nu \big|$ 即可。则原图 $G$ 构成的网络 $N$ 如下图

2.png

若原图所有正权点的点权和为 $R_v$,对该网络跑最大流,且最大流为 $R_f$,所得到的最小割为 $[S,T]$,则有:

  • 原图的最大权闭合图的权和为 $R_v-R_f$

  • $S-\lbrace s \rbrace$ 为原图点数最少最大权闭合图

证明由下述几个引理构成。


引理1

本问题的网络 $N$ 中,最小割是简单割。

由于除与源点 $s$ 或汇点 $t$ 直接相连的边的容量是有限的,其它边是无限的,那么最小割中显然不会出现容量为无限的边(因为强行割断所有与源点相连的边可以构成一个割集,且割的容量是有限的,最小割的容量不会比这个大),所以该最小割是简单割。


引理2

$G_1$ 是原图 $G$ 的一个闭合子图$V_1$$G_1$ 的点集;$\overline{V_1}$ 为点集 $V_1$ 在原图 $G$ 中的补集,即 $V_1 \bigcup \overline{V_1}=V$。则网络 $N$ 的简单割 $[S,T]$ 与图 $G$ 的闭合子图 $G_1$ 存在一个一一对应关系:

$$V_1 \bigcup \lbrace s \rbrace = S$$

其中

  • 闭合图对应简单割:即 $S=V_1 \bigcup \lbrace s \rbrace$$T=\overline{V_1} \bigcup \lbrace t \rbrace$

    因为 $V_1$ 是一个闭合图,所以不存在 $\left< \mu,\nu \right> \in E$,其中 $\mu \in S-\lbrace s \rbrace$$\nu \in T-\lbrace t \rbrace$。也就是不存在不与源汇有关联的边,其两个端点分别在 $V_1$$\overline{V_1}$ 中,所以 $[S,T]$ 是一个割集。
    引理1 可知,$[S,T]$ 是一个简单割。

  • 简单割对应闭合图:即 $V_1=S-\lbrace s \rbrace$ 是一个闭合图。

    $\mu \in S-\lbrace s \rbrace$$\nu \in T-\lbrace t \rbrace$;显然不存在边 $\left< \mu,\nu \right> \in E$,否则与 $[S,T]$ 是割集矛盾(因为 $c(\mu,\nu)=\infty$)。


引理3

$V^+$$V$点权为正的最大点集,$V^-$$V$点权为负的最大点集;类似地,定义 $V_1^+$$V_1^-$$\overline{V_1}^+$$\overline{V_1}^-$. 则在 引理2 的一一对应关系下(即 $V_1\bigcup\lbrace s \rbrace=S$$\overline{V_1}\bigcup\lbrace t \rbrace=T$),有:

$$\displaystyle c[S,T]=\sum_{\nu\in \overline{V_1}^+} \omega_\nu + \sum_{\nu\in V_1^-} \left( -\omega_\nu \right) \tag{1}$$

显然,$\displaystyle \Big[S,T\Big] = \left[\lbrace s\rbrace,\overline{V_1}\right] \bigcup \Big[\lbrace t\rbrace,V_1\Big] \bigcup \left[\overline{V_1},V_1\right]$ (分析构造图的源汇关联情况不难得出结论)

  • 因为$[S,T]$ 是简单割,故 $\displaystyle \left[\overline{V_1},V_1\right] = \emptyset$
  • 又因为 $s$ 只与正权点连边,故 $\displaystyle \left[\lbrace s\rbrace,\overline{V_1}\right] = \left[\lbrace s\rbrace,\overline{V_1}^+\right]$
  • $t$ 只与负权点连边,故 $\displaystyle \left[\lbrace t\rbrace,V_1\right] = \left[\lbrace t\rbrace,V_1^-\right]$ 因此,$\displaystyle \Big[S,T\Big] = \left[\lbrace s\rbrace,\overline{V_1}^+\right] \bigcup \Big[\lbrace t\rbrace,V_1^-\Big]$,即可证明了式 $(1)$ 的正确性

引理4

当网络 $N$ 取得最小割时,其对应的图 $G$ 的闭合图($V_1=S-{s}$)将取得最大权(最优性):

按照定义,闭合图的权值为正权点的权的绝对值和 - 负权点的权的绝对值和,即

$$\omega(V_1) = \sum_{\nu\in V_1^+}\omega_\nu - \sum_{\nu\in V_1^-}(-\omega_\nu) \tag{2}$$

由式 $(1)$ 和式 $(2)$,可得:

$$\begin{align} \omega(V_1) + c[S,T] &= \sum_{\nu\in V_1^+}\omega_\nu - \sum_{\nu\in V_1^-}(-\omega_\nu) + \sum_{\nu\in \overline{V_1}^+} \omega_\nu + \sum_{\nu\in V_1^-} \left( -\omega_\nu \right) \\ &= \sum_{\nu\in V_1^+}\omega_\nu + \sum_{\nu\in \overline{V_1}^+} \omega_\nu \\ &= \sum_{\nu\in V^+} \omega_\nu \end{align}$$

整理得 $\displaystyle \omega(V_1) = \sum_{\nu\in V^+}\omega_\nu - c[S,T]$

  • 《最小割模型在信息学竞赛中的应用》--by 胡伯涛
© 2017-2025 光和尘有花满渚、有酒盈瓯

Comments