「网络流浅谈」网络流的概念

更好的阅读体验

通常做题思路:问题转化为流网络,再通过最大流 / 最小割 / 费用流与问题之间的数量关系,求解出原问题。

网络流于其他算法不同,概念定理需要熟记于心,否则后面做题会有很大的障碍。

1. 流网络

一个流网络记作 G = ( V , E ) G=(V,E) G=(V,E),其中 V V V 表示点集, E E E 表示边集。对于 ∀ ( u , v ) ∈ E \forall (u,v)\in E (u,v)E,都有一个容量记作 c ( u , v ) c(u,v) c(u,v)。由于是一张流网络,那肯定还应该有汇点与源点,通常记作 s , t s,t s,t

如图,这就是一张流网络。

2. 可行流

对于每一个流网络,满足以下 2 2 2 个条件为可行流:

  1. 容量限制

    ​ 记作: 0 ≤ f ( u , v ) ≤ c ( u , v ) 0\le f(u,v) \le c(u,v) 0f(u,v)c(u,v),即流经每条边的流量不能超过他的限制。

  2. 流量守恒

    ​ 记作: ∑ ( v , x ) ∈ E f ( v , x ) = ∑ ( x , v ) ∈ E f ( x , v ) \sum_{(v,x)\in E}f(v,x)=\sum_{(x,v)\in E}f(x,v) (v,x)Ef(v,x)=(x,v)Ef(x,v),即除了源点与汇点之外,流入点 i i i 的总流量 = = = 流出点 i i i 的总流量。

可行流的流量 ∣ 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)Ef(s,v)(v,s)Ef(v,s)

3. 残留网络

一般来说,残留网络记作 G f = ( V , E + ! E ) G_f=(V,E+!E) Gf=(V,E+!E),其中 V , E V,E V,E 是源网络的边集和点集, ! E !E !E 表示 E E E 中的所有反向边。

容量:
c ′ ( u , v ) = { c ( u , v ) − f ( u , v ) ( u , v ) ∈ E f ( u , v ) ( u , v ) ∈ ! E c'(u,v)=\begin{cases} & c(u,v)-f(u,v) & (u,v)\in E \\ & f(u,v) & (u,v) \in !E \end{cases} c(u,v)={c(u,v)f(u,v)f(u,v)(u,v)E(u,v)!E

定理

f f f 为原网络的可行流 f ′ f' f 为残留网络的可行流

则有: f + f ′ f+f' f+f 也是 G G G 的一个可行流且 ∣ f + f ′ ∣ = ∣ f ∣ + ∣ f ′ ∣ |f+f'|=|f|+|f'| f+f=f+f

证明:定义 f n = f + f ′ f_{n}=f+f' fn=f+f,则 f n ( u , v ) = f ( u , v ) + f ′ ( u , v ) f_n(u,v)=f(u,v)+f'(u,v) fn(u,v)=f(u,v)+f(u,v)(注意这里只考虑正向边),为了证明也是一个可行流,无非从 2 2 2 方面:容量限制和流量守恒。

容量限制: f ′ ( u , v ) ≤ c ′ ( u , v ) = c ( u , v ) − f ( u , v ) f'(u,v)\le c'(u,v)=c(u,v)-f(u,v) f(u,v)c(u,v)=c(u,v)f(u,v),所以 f ( u , v ) + f ′ ( u , v ) ≤ c ( u , v ) f(u,v)+f'(u,v)\le c(u,v) f(u,v)+f(u,v)c(u,v)

流量守恒:因为 f ( u , v ) f(u,v) f(u,v) 满足流量守恒, f ′ ( u , v ) f'(u,v) f(u,v) 也满足流量守恒,所以 f ( u , v ) + f ′ ( u , v ) f(u,v)+f'(u,v) f(u,v)+f(u,v) 也满足流量守恒(这里只是略证,更多细节大家可以展开观察)。

4. 增广路径

在残留网络沿着容量大于 0 0 0 的边如果能够走到终点,这条路径称为增广路径。(注意:增广路径只是一条路径,而非一个网络)

5. 割
5.1 定义:

将点集 V V V 分成不重叠 S S S T T T, 使得源点在 S S S,汇点在 T T T

5.2 割的容量

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)=uSvTc(u,v)

最小割: 最小的割的容量

5.3 割的流量

f ( S , T ) = ∑ u ∈ S ∑ v ∈ T f ( u , v ) − ∑ v ∈ S ∑ u ∈ T f ( u , v ) f(S,T)=\sum_{u\in S}\sum_{v\in T} f(u,v)-\sum_{v\in S}\sum_{u\in T} f(u,v) f(S,T)=uSvTf(u,v)vSuTf(u,v)

性质1: ∀ [ S , T ] , f ( S , T ) ≤ c ( S , T ) \forall [S,T], f(S,T)\le c(S,T) [S,T],f(S,T)c(S,T)

证明: 由于 f ( u , v ) f(u,v) f(u,v) 是大于等于 0 0 0 的,所以 f ( S , T ) ≤ ∑ u ∈ S ∑ v ∈ T f ( u , v ) f(S,T)\le \sum_{u\in S}\sum_{v\in T} f(u,v) f(S,T)uSvTf(u,v),又因为有容量,所以一定 ≤ ∑ u ∈ S ∑ v ∈ T c ( u , v ) \le \sum_{u\in S}\sum_{v\in T} c(u,v) uSvTc(u,v) ,故 ∀ [ S , T ] , f ( S , T ) ≤ c ( S , T ) \forall [S,T], f(S,T)\le c(S,T) [S,T],f(S,T)c(S,T)


性质2: ∀ [ S , T ] , f ( S , T ) = ∣ f ∣ \forall [S,T], f(S,T)= |f| [S,T],f(S,T)=f

证明2:

f ( X , Y ) = ∑ u ∈ X ∑ v ∈ Y f ( u , v ) − ∑ v ∈ X ∑ u ∈ Y f ( u , v ) f(X,Y)=\sum_{u\in X}\sum_{v\in Y} f(u,v)-\sum_{v\in X}\sum_{u\in Y} f(u,v) f(X,Y)=uXvYf(u,v)vXuYf(u,v)

则: f ( X , Y ) = − f ( Y , X ) f(X,Y)=-f(Y,X) f(X,Y)=f(Y,X) f ( X , X ) = 0 f(X,X)=0 f(X,X)=0 f ( Z , X ∪ Y ) = f ( Z , X ) + f ( Z , Y ) , X ∩ Y = ∅ f(Z,X\cup Y)=f(Z,X)+f(Z,Y), X\cap Y= \varnothing f(Z,XY)=f(Z,X)+f(Z,Y),XY=

那么有:
∵ S ∪ T = V , S ∩ T = ∅ , ∴ f ( 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 ∣ \begin{aligned} &\because S\cup T=V,S\cap T=\varnothing,\\ &\therefore f(S,V)=f(S,S)+f(S,T)\\ &\therefore f(S,T)=f(S,V)-f(S,S)=f(S,V)=f(\{s\},V)+f(S-\{s\},V)=f(\{s\},V)=|f|\\ \end{aligned} ST=V,ST=,f(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


那么 ∣ f ∣ = f ( S , T ) ≤ c ( S , T ) |f|=f(S,T)\le c(S,T) f=f(S,T)c(S,T)

即, ∣ f ∣ ≤ c ( S , T ) |f|\le c(S,T) fc(S,T);故,最大流 ≤ \le 最小割

7. 最大流最小割定理

(1)可行流 f f f 是最大流

(2) G f G_f Gf 中不存在增广路

(3) ∣ f ∣ = c ( S , T ) |f|=c(S,T) f=c(S,T)

在三个条件中,仅需知道 1 1 1 个,就能够推出另外 2 2 2 个,证明略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值