网络流__1
流网络
如图为一个流网络,边权为最大流量c,记作
G
=
(
V
,
E
)
G=(V,E)
G=(V,E)
其中V为点集,E为边集。
可以想象成从源点源源不断的将水流向汇点的过程
从
点
u
到
点
v
的
容
量
记
作
C
(
u
,
v
)
从点u到点v的容量记作C(u,v)
从点u到点v的容量记作C(u,v)
其中,不考虑反向边,假如有反向边,可以通过加点来转化成没有反向边的情况
流量 定义:从源点往外净流出的量
可行流
即每一条边设计一个流量,记作
设
计
的
流
量
对
应
的
方
案
f
{
1.
容
量
限
制
0
≤
f
(
u
,
v
)
≤
c
(
u
,
v
)
2.
流
量
守
恒
:
∀
x
∈
V
{
s
,
t
}
∑
(
u
,
x
)
∈
E
f
(
u
,
x
)
=
∑
(
x
,
u
)
∈
E
f
(
x
,
u
)
设计的流量对应的方案f \begin{cases} 1.容量限制 \qquad 0 \le f(u,v) \le c(u,v)\\ \\ \\ 2.流量守恒 :\forall x \in V\{s,t\}\qquad\qquad \\ \quad \sum_{(u,x) \in E} f(u,x)= \sum_{(x,u) \in E}f(x,u) \end{cases}
设计的流量对应的方案f⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧1.容量限制0≤f(u,v)≤c(u,v)2.流量守恒:∀x∈V{s,t}∑(u,x)∈Ef(u,x)=∑(x,u)∈Ef(x,u)
流量守恒即对于某个点流入的流量等于流出的流量
如图便是一个可行流,满足对于任意一点都有流出=流入:
对于一个可行流,每秒从源点流向汇点的流量的值/速率记作:
∣
f
∣
=
每
秒
从
源
点
流
出
的
流
/
每
秒
流
入
汇
点
的
流
量
|f|=每秒从源点流出的流/每秒流入汇点的流量
∣f∣=每秒从源点流出的流/每秒流入汇点的流量
即往外流的流量流回去的流量:
∣
f
∣
=
∑
(
s
,
v
)
∈
E
f
(
s
,
v
)
−
∑
(
v
,
s
)
∈
E
f
(
v
,
s
)
|f|=\sum_{(s,v) \in E} f(s,v)- \sum_{(v,s) \in E}f(v,s)
∣f∣=(s,v)∈E∑f(s,v)−(v,s)∈E∑f(v,s)
最大流:
即所有可行流中流量值最大的可行流
残留网络
对于流网络的某一条可行流来说,残留网络与其一一对应,记作;
G
f
G_f
Gf
假定流网络G=(V,E)
,f
为图G中的一个流,定义其残存网络的残存容量:
c
f
(
u
,
v
)
=
{
c
(
u
,
v
)
−
f
(
u
,
v
)
(
u
,
v
)
∈
E
f
(
v
,
u
)
(
v
,
u
)
∈
E
c_f(u,v)= \begin{cases} c(u,v)-f(u,v) \quad (u,v) \in E \\ \\ f(v,u) \quad\qquad \qquad (v,u) \in E \end{cases}
cf(u,v)=⎩⎪⎨⎪⎧c(u,v)−f(u,v)(u,v)∈Ef(v,u)(v,u)∈E
简单来说,对于原流网络的一个流来说,其残留网络的残存容量有两种形式,一种是同向的,流网络容量-当前流量;另一种是反向的,数值等于当前流的大小
定义如下表示残留网络中一个合法流f'
对于原网络中的流f
的递增
(
f
↑
f
′
)
(
u
,
v
)
=
f
(
u
,
v
)
+
f
′
(
u
,
v
)
−
f
′
(
v
,
u
)
(
u
,
v
)
∈
E
(f \uparrow f' )(u,v)=f(u,v)+f'(u,v)-f'(v,u) \quad (u,v) \in E
(f↑f′)(u,v)=f(u,v)+f′(u,v)−f′(v,u)(u,v)∈E
较为直观:f'(v,u)=f(u,v)
引理1
设G=(V,E)为一个流网络,源点为s
,汇点为t
,设f
为G
中的一个流。设Gf
是由流f
所有道德G
的残留网络,设f’为Gf中的一个流,那么有:
∣
f
↑
f
′
∣
=
∣
f
+
f
′
∣
=
∣
f
∣
+
∣
f
′
∣
,
且
f
+
f
′
也
为
G
中
的
一
个
可
行
流
|f \uparrow f'|=|f+f'|=|f|+|f'|,且f+f'也为G中的一个可行流
∣f↑f′∣=∣f+f′∣=∣f∣+∣f′∣,且f+f′也为G中的一个可行流
证明:
f+f'
也为G的一个可行流,即从容量限制和流量守恒来证明
对
于
同
向
的
f
′
,
f
(
u
,
v
)
+
f
′
(
u
,
v
)
≤
f
(
u
,
v
)
+
c
(
u
,
v
)
−
f
(
u
,
v
)
=
c
(
u
,
v
)
对于同向的f',f(u,v)+f'(u,v)\le f(u,v)+c(u,v)-f(u,v)=c(u,v)
对于同向的f′,f(u,v)+f′(u,v)≤f(u,v)+c(u,v)−f(u,v)=c(u,v)
对 于 反 向 的 f ′ , 0 = f ( u , v ) − c f ( u , v ) ≤ f ( u , v ) − f ′ ( u , v ) ≤ f ( u , v ) ≤ c ( u , v ) 对于反向的f',0=f(u,v)-c_f(u,v) \le f(u,v)-f'(u,v)\le f(u,v) \le c(u,v) 对于反向的f′,0=f(u,v)−cf(u,v)≤f(u,v)−f′(u,v)≤f(u,v)≤c(u,v)
推论:
- 可行流的残留网络内求得的任何一个值大于0的可行流都可以增加原网络的可行流
- 若原网络对应的残留网络的可行流的流量大于0,则原网络必定不是最大流,反之可证明是最大流
增广路径
对于给定流网络G=(V,E)
和流f
,增广路径p
是其残存网络Gf中一条从源结点s
到汇点t的简单路径,其中每一条边的容量都大于0.
对于对于G(V,E)
的某一可行流 f 的残留网络上的某一可行流对应一条增广路径 f’,有f+f'
仍然是G中的一个可行流,因此得到定理:
对
于
当
前
可
行
流
f
,
在
G
f
中
无
增
广
路
径
,
则
f
为
最
大
流
对于当前可行流f,在G_f中无增广路径,则f为最大流
对于当前可行流f,在Gf中无增广路径,则f为最大流
增广路径的残存容量:
我们称增广路径p上能够为每条边增加的流量的最小值为残存容量,即:
c
f
(
p
)
=
m
i
n
{
c
f
(
u
,
v
)
:
(
u
,
v
)
属
于
路
径
p
}
c_f(p) = min\{c_f(u,v):(u,v)属于路径p \}
cf(p)=min{cf(u,v):(u,v)属于路径p}
此处定义的残存容量与残留网络中的残存容量稍微不同,即最小值
割
对于一个流网络G=(V,E)
,可将其点集V
分成两个不重不漏的集合S
,T
,有
S
∪
T
=
V
S
∩
T
=
∅
S \cup T =V\\ S \cap T= \varnothing\\
S∪T=VS∩T=∅
其中有以下限制:
源
点
s
∈
S
,
汇
点
t
∈
T
源点s\in S,汇点t \in T
源点s∈S,汇点t∈T
割的容量 c(S,T)
所有从S指向T的有向的容量之和
c
(
S
,
T
)
=
∑
u
∈
S
∑
v
∈
T
c
(
u
,
v
)
c(S,T)=\sum_{u \in S} \sum_{v \in T}c(u,v)
c(S,T)=u∈S∑v∈T∑c(u,v)
割的流量
所有从S到T的的流量与从T到S的流量之差:
f
(
S
,
T
)
=
∑
u
∈
S
∑
v
∈
T
f
(
u
,
v
)
−
∑
u
∈
T
∑
v
∈
S
f
(
u
,
v
)
f(S,T)=\sum_{u \in S} \sum_{v \in T}f(u,v)-\sum_{u \in T} \sum_{v \in S}f(u,v)
f(S,T)=u∈S∑v∈T∑f(u,v)−u∈T∑v∈S∑f(u,v)
性质1:
设f为流网络G的一个流,该流网络的源节点为s,汇点为t,设(S,T)为流网络G的任意切割,则横跨切割(S,T)
的净流量:
f
(
S
,
T
)
=
∣
f
∣
f(S,T)=|f|
f(S,T)=∣f∣
即对于每一个割的流量,都能对应一个流网络中的流量
证明:
引
理
1.
f
(
X
,
Y
)
=
−
f
(
Y
,
X
)
引
理
2.
f
(
X
,
X
)
=
0
引
理
3.
f
(
Z
,
X
∪
Y
)
=
f
(
Z
,
X
)
+
f
(
Z
,
Y
)
引
理
4.
f
(
X
∪
Y
,
Z
)
=
f
(
X
,
Z
)
+
f
(
Y
,
Z
)
引理1.f(X,Y)=-f(Y,X)\\ 引理2.f(X,X)=0\\ 引理3.f(Z,X \cup Y)=f(Z,X)+f(Z,Y)\\ 引理4.f(X\cup Y,Z)=f(X,Z)+f(Y,Z)
引理1.f(X,Y)=−f(Y,X)引理2.f(X,X)=0引理3.f(Z,X∪Y)=f(Z,X)+f(Z,Y)引理4.f(X∪Y,Z)=f(X,Z)+f(Y,Z)
由引理1
s
(
S
,
V
)
=
f
(
S
,
S
)
+
f
(
S
,
T
)
s(S,V)=f(S,S)+f(S,T)
s(S,V)=f(S,S)+f(S,T)
等价于:
f
(
S
,
T
)
=
f
(
S
,
V
)
−
f
(
S
,
S
)
=
f
(
S
,
V
)
=
f
(
{
s
}
,
V
)
+
f
(
S
−
{
s
}
,
V
)
=
f
(
s
,
V
)
f(S,T)=f(S,V)-f(S,S)=f(S,V)\\ =f(\{s\},V)+f(S-\{s\},V)=f(s,V)
f(S,T)=f(S,V)−f(S,S)=f(S,V)=f({s},V)+f(S−{s},V)=f(s,V)
性质2:
∀
[
S
,
T
]
∀
f
有
f
(
S
,
T
)
≤
c
(
S
,
T
)
\forall [S,T]\ \forall f \ 有\quad f(S,T) \le c(S,T)
∀[S,T] ∀f 有f(S,T)≤c(S,T)
换句话来说,对于流网络任意流,都小于任意割的容积,因此就有最大流小于等于最小割。其中注意,最大流指流网络的最大流量,最小割指的是最小割的容量
最
大
流
∣
f
∣
≤
最
小
割
c
(
S
,
T
)
最大流|f|\le最小割c(S,T)
最大流∣f∣≤最小割c(S,T)
最大流最小割定理
以下三个定理相互等价
f
是G
中的一个最大流- 残留网络
Gf
不包括任何增广路径 |f|=c(S,T)
,其中(S,T)
是流网络G的某个切割
证明:
证明思路为证明1能推出2,2能推出3,3能推出1
1=>2:
若
G
f
有
∣
f
′
∣
>
0
,
则
∣
f
+
f
′
∣
=
∣
f
∣
+
∣
f
′
∣
>
∣
f
∣
矛
盾
若G_f有|f'| \gt 0,则|f+f'|=|f|+|f'| \gt |f|矛盾
若Gf有∣f′∣>0,则∣f+f′∣=∣f∣+∣f′∣>∣f∣矛盾
2=>3
使用构造法:构造一个点集S,将起点s放入S,从Gf中从s出发沿容量大于0的边走,将所有能走到的点加入S,由于不包含增广路径,所以必然有t不属于S
则
T
=
V
−
S
有
t
∈
T
,
构
造
出
了
一
组
合
法
割
则T=V-S有t\in T,构造出了一组合法割
则T=V−S有t∈T,构造出了一组合法割
对 于 x ∈ S , y ∈ T 有 f ( x , y ) = c ( x , y ) , 又 a ∈ S , b ∈ T 有 f ( a , b ) = 0 对于x\in S,y\in T有f(x,y)=c(x,y),又a\in S,b\in T有f(a,b)=0 对于x∈S,y∈T有f(x,y)=c(x,y),又a∈S,b∈T有f(a,b)=0
因为加入f(x,y)<c(x,y)则x可以走到y,因此y应该在S中矛盾。a,b同理
因
此
有
∣
f
∣
=
f
(
S
,
T
)
=
∑
u
∈
S
∑
v
∈
T
f
(
u
,
v
)
−
∑
u
∈
S
∑
v
∈
T
f
(
v
,
u
)
=
∑
u
∈
S
∑
v
∈
T
c
(
u
,
v
)
=
c
(
S
,
T
)
因此有|f|=f(S,T)=\sum_{u \in S} \sum_{v \in T}f(u,v)-\sum_{u \in S} \sum_{v \in T}f(v,u)\\ =\sum_{u \in S} \sum_{v \in T}c(u,v)=c(S,T)
因此有∣f∣=f(S,T)=u∈S∑v∈T∑f(u,v)−u∈S∑v∈T∑f(v,u)=u∈S∑v∈T∑c(u,v)=c(S,T)
3=>1
最
大
流
∣
f
∗
∣
≥
∣
f
∣
=
c
(
S
,
T
)
≥
最
小
割
c
m
i
n
(
S
,
T
)
≥
∣
f
∗
∣
最大流|f^*|\ge |f|=c(S,T)\ge 最小割c_{min}(S,T) \ge|f^*|
最大流∣f∗∣≥∣f∣=c(S,T)≥最小割cmin(S,T)≥∣f∗∣
S中矛盾。a,b同理
因
此
有
∣
f
∣
=
f
(
S
,
T
)
=
∑
u
∈
S
∑
v
∈
T
f
(
u
,
v
)
−
∑
u
∈
S
∑
v
∈
T
f
(
v
,
u
)
=
∑
u
∈
S
∑
v
∈
T
c
(
u
,
v
)
=
c
(
S
,
T
)
因此有|f|=f(S,T)=\sum_{u \in S} \sum_{v \in T}f(u,v)-\sum_{u \in S} \sum_{v \in T}f(v,u)\\ =\sum_{u \in S} \sum_{v \in T}c(u,v)=c(S,T)
因此有∣f∣=f(S,T)=u∈S∑v∈T∑f(u,v)−u∈S∑v∈T∑f(v,u)=u∈S∑v∈T∑c(u,v)=c(S,T)
3=>1
最
大
流
∣
f
∗
∣
≥
∣
f
∣
=
c
(
S
,
T
)
≥
最
小
割
c
m
i
n
(
S
,
T
)
≥
∣
f
∗
∣
最大流|f^*|\ge |f|=c(S,T)\ge 最小割c_{min}(S,T) \ge|f^*|
最大流∣f∗∣≥∣f∣=c(S,T)≥最小割cmin(S,T)≥∣f∗∣