网络流——最大流和最小割

最小割问题

s t st st割:将节点划分为 A , B A,B A,B两个集合,其中源节点 s ∈ A s\in A sA且宿节点 t ∈ B t\in B tB
s t st st割的容量:由集合 A A A到集合 B B B所有出边容量之和。割容量可以看成是由集合 A A A推向集合 B B B的最大流值(割流量的最大值),这也是不包含反向边的容量的原因,即不包含由集合 B B B指向集合 A A A的出边容量。反向边只会使割流量减少。
目标:使 s t st st割的容量最小
例如,下面 s t st st割的容量为34:
在这里插入图片描述

最大流问题

s t st st f f f:满足容量约束和流守恒约束,如下:
在这里插入图片描述

  • 容量约束:保证每个链路流量不超过该链路的承受能力
  • 流守恒约束:保证中间节点不囤积流量

流值大小:
在这里插入图片描述
目标:使流值最大

用Ford-Fulkerson算法求解最大流和最小割

贪心策略是失败的,因为无法撤销已添加的流
算法伪代码如下:
算法核心为剩余网络,该网络边值表示可以往该方向推送的剩余流量还有多少
在这里插入图片描述
例子如下:
原网络和相应的流值为一幅图
在这里插入图片描述
剩余网络为另一幅图
在这里插入图片描述

补充

  • 求解顺序应该是先求剩余网络,再求原网络下对应的流。求解方法为用原网络的容量减去原网络对应残余网络的边的权值(没有对应可以虚拟一条权值为0的边),即该链路上流的大小。
  • Ford-Fulkerson算法结束时,被阻塞的节点集合与另一集合的划分,即为最小割,如上图阴影部分。

最大流最小割定理

①流值引理:任意流的值大小等于沿任意割的净流量(反向流会减),如下图所示:

在这里插入图片描述
黑色节点属于集合 A A A,白色节点是属于集合 B B B,反向割流是要减掉的
根据流值大小定义,证明:

在这里插入图片描述
证明解释:因为除了 s , t s,t s,t之外,其余顶点是满足流守恒约束的,因此第二个等式可以将 s s s点换成集合 A A A,因为集合A中除 s s s点外,其余点的出流量之和减入流量之和恒等于0。

②弱对偶定理:任意流值小于等于任意割容量,即 v a l ( f ) ≤ c a p ( A , B ) val(f)\leq cap(A,B) val(f)cap(A,B)
由流值引理配合放缩证明,过程如下:
在这里插入图片描述
直观认知:由于流值是和割流量相等的,而割流量只有在饱和容量且无反向边流量的条件下才等于割容量,因此流值小于等于任意割容量。

③若某个流 f f f v a l ( f ) val(f) val(f)等于某个割容量 c a p ( A , B ) cap(A,B) cap(A,B),即 v a l ( f ) = c a p ( A , B ) val(f) = cap(A,B) val(f)=cap(A,B),那么 f f f是最大流, ( A , B ) (A,B) (A,B)是最小割。
证明:
在这里插入图片描述
第一个式子说明流 f f f是最大流,第二个式子说明 ( A , B ) (A,B) (A,B)是最小割,因为是任意性证明

以下三个命题等价:

  1. 存在一个割容量等于某个流值,即 c a p ( A , B ) = v a l ( f ) cap(A,B) = val(f) cap(A,B)=val(f)
  2. f f f是最大流
  3. 对于某个流 f f f而言,不存在增广路径

最难的是3->1,主要证明3->1:
f f f是不带增广路径的流,集合 A A A是剩余网络中从起点 s s s可达的节点的集合。
则原网络和流图,可以表示如下:
在这里插入图片描述
有下列关系:
在这里插入图片描述
若第二项不等于0,则剩余网络可扩展,直到为0为止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值