网络流
定义
\qquad
一个流网络
G
=
(
V
,
E
)
G=(V,E)
G=(V,E)为一张满足以下条件的有向图:
\qquad\qquad
1.每一条边有一个非负容量,即对于任意
E
E
E中的
(
u
,
v
)
(u,v)
(u,v),有
c
=
(
u
,
v
)
≥
0
\qquad \qquad c=(u,v)≥0
c=(u,v)≥0
\qquad\qquad
2.如果
G
G
G中存在边
(
u
,
v
)
(u,v)
(u,v),那么不存在
(
v
,
u
)
(v,u)
(v,u)。我们将图中不存在的边
\qquad\qquad
的容量定为
0
0
0。
\qquad\qquad
3.图中含有两个特殊节点:源
s
s
s与汇
t
t
t
\qquad
一个流可以看做是一个从
V
×
V
V×V
V×V到
R
R
R的映射,满足下面两条性质:
\qquad\qquad
1.容量限制:对于任意的
u
,
v
u,v
u,v,
0
≤
f
(
u
,
v
)
≤
c
(
u
,
v
)
0≤f(u,v)≤c(u,v)
0≤f(u,v)≤c(u,v)
\qquad\qquad
2.流量守恒:对于任何非源汇的中间节点
u
u
u,我们有
∑
v
∈
V
f
(
v
,
u
)
=
∑
v
∈
V
f
(
u
,
v
)
\sum_{v\in V}f(v,u)=\sum_{v\in V}f(u,v)
v∈V∑f(v,u)=v∈V∑f(u,v)
最大流
\qquad
最大流问题,即是找出一个满足上述条件的
F
F
F,使得
∑
v
∈
V
f
(
s
,
v
)
\sum_{v\in V}f(s,v)
∑v∈Vf(s,v)被最大化
\qquad
最大流问题->带反向边的的最大流问题
\qquad
多源汇最大流问题
\qquad
一个流
f
f
f的流量
∣
f
∣
|f|
∣f∣定义为:
∣
f
∣
=
∑
v
∈
V
f
(
s
,
v
)
−
∑
v
∈
V
f
(
v
,
s
)
|f|=\sum_{v\in V}f(s,v)-\sum_{v\in V}f(v,s)
∣f∣=v∈V∑f(s,v)−v∈V∑f(v,s)
最大流建模
\qquad 点容量的解决办法:拆点,将容量限制转化到边上。
最大流算法-从几个基本想法开始
增广路
定理一:最大流最小切割定理
\qquad
对于一个网络
G
G
G,下面三个命题总是等价
⋅
\qquad\qquad ·
⋅流
f
f
f是
G
G
G的最大流。
⋅
\qquad\qquad ·
⋅当前流
f
f
f是残量网络
G
_
f
G\_f
G_f上不存在增广路。
⋅
\qquad\qquad ·
⋅存在某个割使得
∣
f
∣
=
c
(
S
,
T
)
|f|=c(S,T)
∣f∣=c(S,T)成立。由结论2可知,满足条件的割必
\qquad\qquad
定是最小割。