最大流学习笔记(4)-推送重贴标签算法二
14 设$f$是流网络G的一个预流,那么对于任意一个溢出节点$x$,在$G_{f}$中存在一条从$x$到源点$s$的简单路径。
15 在GENERIC-PUSH-RELABEL的整个过程中,任何一个$u\in V$,$u.h\leq 2|V|-1$
16 在GENERIC-PUSH-RELABEL的整个过程中,每个节点被重贴标签次数最多为$2|V|-1$,所有重贴标签次数不会超过$(2|V|-1)(|V|-2)<2|V|^{2}$.由15可知,$s,t$不会被重贴标签,所以只有$|V|-2$个节点会被重贴标签,每个节点的高度最大为$2|V|-1$,而每次重贴标签至少使得高度增加1,所以每个节点最多执行$2|V|-1$ 次重贴标签操作,所以总的重贴标签操作次数不超过$(2|V|-1)(|V|-2)$
17 在GENERIC-PUSH-RELABEL的整个过程中,饱和推送的次数少于$2|V||E|$
18 在GENERIC-PUSH-RELABEL的整个过程中,非饱和推送的次数少于$4|V|^{2}(|V|+|E|)$
19 由16,17,18可知,GENERIC-PUSH-RELABEL算法的复杂度为$O(V^{2}E)$
以下是证明
14的证明
对于溢出节点$x$,设$U=\{v:在G_{f}中存在从x到v的简单路径\}$,$\overline{U}=V-U$,现在假设$s\notin U$,也就是说$s\in \overline{U}$
$0<\sum_{u\in U}e(u)=\sum_{u\in U}(\sum_{v\in V}f(v,u)-\sum_{v\in V}f(v,u))$
$=\sum_{u\in U}((\sum_{v\in U}f(v,u)+\sum_{v\in \overline{U}}f(v,u))-(\sum_{v\in U}f(u,v)+\sum_{v\in \overline{U}}f(u,v)))$
$=\sum_{u\in U}\sum_{v\in U}f(v,u)+\sum_{u\in U}\sum_{v\in \overline{U}}f(v,u)-\sum_{u\in U}\sum_{v\in U}f(u,v)-\sum_{u\in U}\sum_{v\in \overline{U}}f(u,v)$
$=\sum_{u\in U}\sum_{v\in \overline{U}}f(v,u)-\sum_{u\in U}\sum_{v\in \overline{U}}f(u,v)$
也就是说$\sum_{u\in U}\sum_{v\in \overline{U}}f(v,u)-\sum_{u\in U}\sum_{v\in \overline{U}}f(u,v)>0$,由于$\sum_{u\in U}\sum_{v\in \overline{U}}f(u,v)\geq 0$,所以$\sum_{u\in U}\sum_{v\in \overline{U}}f(v,u)>0$,因此至少存在一个$u^{'}\in U,v^{'}\in \overline{U}$满足$f(v^{'},u^{'})>0$,那么就有一条残存边$(u^{'},v^{'})$,也就是说$x$到$v^{'}$存在路径。与开始的假设矛盾。
15的证明
首先,源点和汇点从来不会溢出,所以它们的高度不会改变。它们一开始的高度都不比$2|V|-1$大。
对于任意节点$u\in V-\{s,t\}$,初始时高度都是0.且仅当每次被重贴标签时,高度才会被改变。这时,根据14,存在从$u$到源点的简单路径$p=<v_{0},v_{1},...,v_{k}>$,$k\leq |V|-1$,$v_{0}=u,v_{k}=s$,由于$v_{i}$ 比$v_{i+1}$的高度最多大1,所以$v_{0}$的高度比$v_{k}$最多大$k$,所以$u.h=v_{0}.h\leq k+|V|\leq 2|V|-1$
17的证明
对于任意一条边$(u,v)$,假设从$u$到$v$进行了一次饱和推送,那么此时$v.h=u.h-1$,那么下一次的饱和推送如果发生,一定是$v$到$u$,此时$v.h=u.h+1$,由于在这中间$u.h$不会减小,所以第二次饱和推送发生时,$v.h$的高度至少增加2.而$v.h\leq 2|V|-1$,所以对于$v$到$u$的饱和推送次数小于$|V|$,同理$u$到$v$的饱和推送次数也是小于$|V|$,所以一条边上进行的饱和推送小于$2|V|$,所以总的饱和推送次数小于$2|V||E|$
18的证明
定义一个函数$\Phi =\sum_{v:e(v)>0}v.h$。初始时$\Phi=0$.$\Phi$的值在每次重贴标签、饱和推送、非饱和推送之后都可能发生改变。
(1)重贴标签:对于一个节点$u$,其所有的重贴标签操作可以导致$\Phi$增大的值小于$2|V|$,因为节点$u$的高度最大为$2|V|-1$
(2)饱和推送:每次饱和推送作用于$u$到$v$后,$v$可能溢出,这时$v$的溢出可导致$\Phi$增加的值小于$2|V|$,因为节点$v$的高度最大为$2|V|-1$
(3)非饱和推送:每次饱和推送作用于$u$到$v$后,$u$不再溢出,较少了$u.h$,而$v$可能溢出也可能不溢出($v$是源点的时候就不会溢出),即使$v$溢出,可使得$\Phi$增加$v.h$,由于$u.h-v.h=1$,所以每次非饱和推送至少使得$\Phi$减少1.
$\Phi$总的增加小于$(2|V|)(2|V|^{2})+(2|V|)(2|V||E|)=4|V|^{2}(|V|+|E|)$,而非饱和推送导致的$\Phi$的减少也不会超过$\Phi$的增加,所以非饱和操作的次数小于$4|V|^{2}(|V|+|E|)$