图论专题——网络流基础概念

网络流基础概念

流网络

流网络是一个有向图 G = ( V , E ) G=(V,E) G=(V,E),图中每一条边 ( u , v ) ∈ E (u,v)\in E (u,v)E 有一个非负的权值 c ( u , v ) c(u,v) c(u,v),被称为容量 . 在流网络中,有两个特殊的节点——源点 s s s汇点 t t t.
在这里插入图片描述

G = ( V , E ) G=(V,E) G=(V,E) 为一个流网络,容量函数为 c c c,源点为 s s s,汇点为 t t t,定义 G G G 中的 f f f V V V V V V 的实值二元关系: V × V → R V \times V \rightarrow R V×VR
对于 f ( u , v ) f(u,v) f(u,v),满足:

  1. 容量限制:对于有向边 ( u , v ) ∈ E (u,v)\in E (u,v)E,流量不能超过该边的容量,即 0 ≤ f ( u , v ) ≤ c ( u , v ) 0\le f(u,v) \le c(u,v) 0f(u,v)c(u,v)
  2. 流量守恒:流入一个节点的流量必须等于流出该节点的流量,即 ∀   u ∈ V − { s , t } , ∑ v ∈ V f ( v , u ) = ∑ v ∈ V f ( u , v ) \forall \ u\in V-\{s,t\},\sum_{v\in V}f(v,u)=\sum_{v\in V}f(u,v)  uV{s,t}vVf(v,u)=vVf(u,v)

所以,定义整个网络的流量为,即从源点流出的净流量 f f f ∣ f ∣ = ∑ ( s , u ) ∈ E f ( s , u ) − ∑ ( u , s ) ∈ E f ( u , s ) |f|=\sum_{(s,u)\in E}f(s,u)-\sum_{(u,s)\in E}f(u,s) f=(s,u)Ef(s,u)(u,s)Ef(u,s)

残存网络

在阐述残存网络的概念之前,首先铺垫剩余容量的概念,剩余容量 c f ( u , v ) c_f(u,v) cf(u,v) 是指
c f ( u , v ) = { c ( u , v ) − f ( u , v ) , 若 ( u , v ) ∈ E f ( v , u ) , 若 ( v , u ) ∈ E 0 ,   其 他 (1) c_f(u,v)= \begin{cases} c(u,v)-f(u,v),\quad 若(u,v)\in E\\ f(v,u), \quad\quad\quad\quad\quad 若(v,u)\in E\\ 0,\quad\quad\quad\quad\quad\quad\quad\ 其他 \end{cases} \tag{1} cf(u,v)=c(u,v)f(u,v),(u,v)Ef(v,u),(v,u)E0, (1)
所以给定一个流网络 G = ( V , E ) G=(V,E) G=(V,E) 和一个流 f f f,则由 f f f 诱导的图 G G G 的残存网络为 G f = ( V , E f ) G_f=(V,E_f) Gf=(V,Ef),其中 E f E_f Ef 为:
E f = { ( u , v ) ∈ V × V , c f ( u , v ) > 0 } E_f=\{(u,v)\in V\times V ,c_f(u,v)>0\} Ef={(u,v)V×V,cf(u,v)>0}
在这里插入图片描述

增广路径

给定流网络 G = ( V , E ) G=(V,E) G=(V,E) 和流 f f f增广路径 p p p 是残存网络 G f G_f Gf 中一条从源点到汇点的简单路径,且路径上的有向边的剩余容量 c f c_f cf 都大于零.

对于增广路径 p p p,能够为 ∣ f ∣ |f| f 增加的流的值 c f ( p ) c_f(p) cf(p) 为: c f ( p ) = m i n { c f ( u , v ) , ( u , v ) ∈ p } , c f ( p ) > 0 c_f(p)=min\{c_f(u,v),(u,v)\in p\},c_f(p)>0 cf(p)=min{cf(u,v),(u,v)p},cf(p)>0
增广后, ∣ f ′ ∣ = ∣ f ∣ + c f ( p ) |f'|=|f|+c_f(p) f=f+cf(p)
在这里插入图片描述
在这里插入图片描述

切割

对于流网络 G = ( V , E ) G=(V,E) G=(V,E),定义该流网络的一个切割 ( S , T ) (S,T) (S,T),为把点集 V V V 划分为 S S S T T T,满足 S ⋃ T = V , S ⋂ T = ∅ , s ∈ S , t ∈ T S\bigcup T=V,S\bigcap T=\varnothing,s\in S,t\in T ST=V,ST=,sS,tT.

定义横跨切割 ( S , V ) (S,V) (S,V)净流量 f ( S , T ) f(S,T) f(S,T) 为:
f ( S , T ) = ∣ f ∣ f(S,T)=|f| f(S,T)=f
切割 ( S , V ) (S,V) (S,V)容量 c ( S , T ) c(S,T) c(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)=uSvTc(u,v)
在这里插入图片描述

最大流,最小割

最大流:在容量的限制下,求 m a x { ∣ f ∣ } max\{|f|\} max{f}

最小割:在流网络中,最小割为 m i n { c ( S , T ) } min\{c(S,T)\} min{c(S,T)}

最大流最小割定理

最大流最小割定理是网络流理论体系中的一条重要的定理,它是网络流算法的理论基础.
最大流最小割定理告诉我们两个重要的结论:

  1. 一个流是最大流当且仅当其残存网络不包含任何增广路径
  2. 在网络中,最大流的值等于最小割的容量

我们这里直接引用算法导论上的原话:
在这里插入图片描述


证明第一部分: f f f 是一个最大流 ⇒ \Rightarrow 残存网络 G f G_f Gf不包括任何增广路径

反证法
假设,若在 f f f 是一个最大流的情况下,残存网络中仍然存在增广路径。由增广路径的性质,我们知道,该增广路能够为 ∣ f ∣ |f| f 增加 c f ( p )   ( c f ( p ) > 0 ) c_f(p)\ (c_f(p)>0) cf(p) (cf(p)>0) 流的值,增广后的新总流为 ∣ f ′ ∣ = ∣ f ∣ + c f ( p ) > ∣ f ∣ |f'|=|f|+c_f(p)>|f| f=f+cf(p)>f ,可知 f f f 不是一个最大流,矛盾,证毕.


证明第二部分:残存网络 G f G_f Gf不包括任何增广路径 ⇒ \Rightarrow ∣ f ∣ = c ( S , T ) |f|=c(S,T) f=c(S,T),其中 c ( S , T ) c(S,T) c(S,T)是流网络的一个切割.

证明

S t e p 1 : Step1: Step1:
首先,由于残存网络 G f G_f Gf 中不包含增广路径,则在 G f G_f Gf不存在 s s s t t t 的路径。
我们定义点集 S S S 与点集 T T T S = { v ∈ V , 在 G f 中 与 s 连 通 } S=\{v\in V,在 G_f 中与 s 连通\} S={vVGfs} T = V − S T=V-S T=VS
所以很显然, s ∈ S , t ∈ T s\in S,t\in T sS,tT,即 ( S , T ) (S,T) (S,T) 是一个 V V V的划分,即 ( S , T ) (S,T) (S,T) G G G 的一个切割

S t e p 2 : Step2: Step2:
接着,在流网络 G G G 中,考虑一对节点 u ∈ S , v ∈ T u\in S,v\in T uS,vT,则有两个重要结论:

  1. ( u , v ) ∈ E (u,v)\in E (u,v)E,则必有 f ( u , v ) = c ( u , v ) f(u,v)=c(u,v) f(u,v)=c(u,v) ,即该路径满流,为什么?

因为,若存在 f ( u , v ) < c ( u , v ) f(u,v)<c(u,v) f(u,v)<c(u,v) 即存在横跨切割 (从 S S S T T T) 的未满流的边,那么在残存网络 G f G_f Gf 中, c f ( u , v ) > 0 c_f(u,v)>0 cf(u,v)>0,即存在 ( u , v ) ∈ E f (u,v)\in E_f (u,v)Ef,则 v ∈ S v\in S vS,不满足上述的划分,矛盾,所以横跨切割(从 S S S T T T) 的路径必满流.

  1. ( v , u ) ∈ E (v,u)\in E (v,u)E,则必有 f ( v , u ) = 0 f(v,u)=0 f(v,u)=0,即该路径零流,为什么?

因为,若 f ( v , u ) ≠ 0 f(v,u)\neq 0 f(v,u)=0,那么在残存网络中, c f ( u , v ) = f ( v , u ) > 0 c_f(u,v)=f(v,u)>0 cf(u,v)=f(v,u)>0,即存在 ( u , v ) ∈ E f (u,v)\in E_f (u,v)Ef,同理上述
不满足,所以横跨切割(从 T T T S S S) 的路径必零流.

  1. ( u , v ) ∉ E   且   ( v , u ) ∉ E (u,v)\notin E\ 且 \ (v,u)\notin E (u,v)/E  (v,u)/E,则 f ( u , v ) = f ( v , u ) = 0 f(u,v)=f(v,u)=0 f(u,v)=f(v,u)=0

S t e p 3 : Step3: Step3:
由上述结论可知,对于网络的净流量 f ( S , T ) f(S,T) f(S,T):
f ( S , T ) = ∑ u ∈ S ∑ v ∈ T f ( u , v ) − ∑ u ∈ S ∑ v ∈ T f ( v , u ) = ∑ u ∈ S ∑ v ∈ T c ( u , v ) − ∑ u ∈ S ∑ v ∈ T 0 = c ( S , T ) 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)-\sum_{u\in S}\sum_{v\in T}0=c(S,T) f(S,T)=uSvTf(u,v)uSvTf(v,u)=uSvTc(u,v)uSvT0=c(S,T)
由净流量的结论可知: f ( S , T ) = ∣ f ∣ f(S,T)=|f| f(S,T)=f
所以: ∣ f ∣ = f ( S , T ) = c ( S , T ) ≥ c m i n ( S , T ) |f|=f(S,T)=c(S,T)\ge c_{min}(S,T) f=f(S,T)=c(S,T)cmin(S,T)
而由证明第一部分可知:
∣ f m a x ∣ = c ( S , T ) ≥ c m i n ( S , T ) |f_{max}|=c(S,T)\ge c_{min}(S,T) fmax=c(S,T)cmin(S,T)


证明第三部分:流网络的任意流 f f f 的值 ∣ f ∣ |f| f 不能超过 G G G 的任意切割的容量

证明
f f f 为任意流, ( S , T ) (S,T) (S,T) 为任意切割,可知:
∣ f ∣ = f ( S , T ) = ∑ u ∈ S ∑ v ∈ T f ( u , v ) − ∑ u ∈ S ∑ v ∈ T f ( v , u ) |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) f=f(S,T)=uSvTf(u,v)uSvTf(v,u)
≤ ∑ u ∈ S ∑ v ∈ T f ( u , v ) ≤ ∑ u ∈ S ∑ v ∈ T c ( u , v ) = c ( S , T ) \le \sum_{u\in S}\sum_{v\in T}f(u,v)\le \sum_{u\in S}\sum_{v\in T}c(u,v)=c(S,T) uSvTf(u,v)uSvTc(u,v)=c(S,T)
由任意性, ∣ f m a x ∣ ≤ c m i n ( S , T ) |f_{max}|\le c_{min}(S,T) fmaxcmin(S,T)


证明第四部分: ∣ f ∣ = c ( S , T ) |f|=c(S,T) f=c(S,T),其中 c ( S , T ) c(S,T) c(S,T)是流网络的一个切割 ⇒ \Rightarrow f f f 是一个最大流.

证明
由证明第三部分,任意流都小于任意切割容量,则 ∣ f ∣ = c ( S , T ) |f|=c(S,T) f=c(S,T) 总是隐含着一个最大流


证明第五部分: m a x { ∣ f ∣ } = c m i n ( S , T ) max\{|f|\}=c_{min}(S,T) max{f}=cmin(S,T)
由证明第二部分与证明第三部分分别可知,对于最大流 f f f,同时满足:
∣ f m a x ∣ ≥ c m i n ( S , T ) , ∣ f m a x ∣ ≤ c m i n ( S , T ) |f_{max}|\ge c_{min}(S,T),|f_{max}|\le c_{min}(S,T) fmaxcmin(S,T)fmaxcmin(S,T)
所以: m a x { ∣ f ∣ } = c m i n ( S , T ) max\{|f|\}=c_{min}(S,T) max{f}=cmin(S,T)


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值