网络流——最大流和最小割
最小割问题
ststst割:将节点划分为A,BA,BA,B两个集合,其中源节点s∈As\in As∈A且宿节点t∈Bt\in Bt∈B
ststst割的容量:由集合AAA到集合BBB所有出边容量之和。割容量可以看成是由集合AAA推向集合BBB的最大流值(割流量的最大值),这也是不包含反向边的容量的原因,即不包含由集合BBB指向集合AAA的出边容量。反向边只会使割流量减少。
目标:使ststst割的容量最小
例如,下面ststst割的容量为34:
最大流问题
ststst流 fff:满足容量约束和流守恒约束,如下:
- 容量约束:保证每个链路流量不超过该链路的承受能力
- 流守恒约束:保证中间节点不囤积流量
流值大小:
目标:使流值最大
用Ford-Fulkerson算法求解最大流和最小割
贪心策略是失败的,因为无法撤销已添加的流
算法伪代码如下:
算法核心为剩余网络,该网络边值表示可以往该方向推送的剩余流量还有多少
例子如下:
原网络和相应的流值为一幅图
剩余网络为另一幅图
补充
- 求解顺序应该是先求剩余网络,再求原网络下对应的流。求解方法为用原网络的容量减去原网络对应残余网络的边的权值(没有对应可以虚拟一条权值为0的边),即该链路上流的大小。
- Ford-Fulkerson算法结束时,被阻塞的节点集合与另一集合的划分,即为最小割,如上图阴影部分。
最大流最小割定理
①流值引理:任意流的值大小等于沿任意割的净流量(反向流会减),如下图所示:
黑色节点属于集合AAA,白色节点是属于集合BBB,反向割流是要减掉的
根据流值大小定义,证明:
证明解释:因为除了s,ts,ts,t之外,其余顶点是满足流守恒约束的,因此第二个等式可以将sss点换成集合AAA,因为集合A中除sss点外,其余点的出流量之和减入流量之和恒等于0。
②弱对偶定理:任意流值小于等于任意割容量,即val(f)≤cap(A,B)val(f)\leq cap(A,B)val(f)≤cap(A,B)
由流值引理配合放缩证明,过程如下:
直观认知:由于流值是和割流量相等的,而割流量只有在饱和容量且无反向边流量的条件下才等于割容量,因此流值小于等于任意割容量。
③若某个流fff值val(f)val(f)val(f)等于某个割容量cap(A,B)cap(A,B)cap(A,B),即val(f)=cap(A,B)val(f) = cap(A,B)val(f)=cap(A,B),那么fff是最大流,(A,B)(A,B)(A,B)是最小割。
证明:
第一个式子说明流fff是最大流,第二个式子说明(A,B)(A,B)(A,B)是最小割,因为是任意性证明
以下三个命题等价:
- 存在一个割容量等于某个流值,即cap(A,B)=val(f)cap(A,B) = val(f)cap(A,B)=val(f)
- fff是最大流
- 对于某个流fff而言,不存在增广路径
最难的是3->1,主要证明3->1:
令fff是不带增广路径的流,集合AAA是剩余网络中从起点sss可达的节点的集合。
则原网络和流图,可以表示如下:
有下列关系:
若第二项不等于0,则剩余网络可扩展,直到为0为止
网络流——最大流和最小割相关推荐
- 网络流中最大流和最小割算法
学习顺序按照下图的改进历程 问题转化:寻找初始解,提升,达到条件停止 求解优化,加回溯边,画残差图,在残差图中寻找一条s可到t的路径 看最大流最小割问题,证明 除 ST外每个点的出度和入度相等,S和T ...
- 网络流:最大流,最小割 基本概念及算法
原文:http://www.cnblogs.com/Booble/archive/2011/03/04/1970453.html 参考:http://community.topcoder.com/tc ...
- 最大流与最小割(Maxflow与Mincut)
传统图像主要分割算法: 基于阈值的分割 (1)固定阈值分割 (2)直方图双峰法 (3)迭代阈值图像分割 (4)自适应阈值图像分割 (5)最佳阈值法 2.基于边缘的分割 (1)Canny边缘检测器 (2 ...
- 如何快速理解最大流和最小割
摘要: 割从哪来-------->最大流和最小割之间的等价关系的阐述. 1.问题引入 1.1思考这样一个问题:在给定的图中,如何判断一个源点s到终点t是否有路径存在呢? 我们首先想到的是用BFS ...
- 网络流之最大流和最小割
最大流问题 最大流:给定有向图中每条边的最大流量(容量),求从源点到汇点的最大流量. 容量网络: 括号左边代表容量,右边代表流量. 残留网络:流网络中剩余可增加的流量 增广路:满足容量条件的一条流量不 ...
- 最大流,最小割刷题记录
T1 P2057 [SHOI2007] 善意的投票 题目 https://www.luogu.com.cn/blog/OnMyOwn/OnMyOwn https://www.luogu.com.cn/ ...
- BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 23822 Solved: 6012 [Submit ...
- Forethought Future Cup - Elimination Round G. Zoning Restrictions 最大流(最小割)
题目链接: https://codeforces.com/contest/1146/problem/G 题意: 你现在要给 nnn 个位置制定高度 hi(1<=hi<=H)h_i (1&l ...
- 最大流最小割经典例题_算法: 最大流与最小割
什么是最大流 最大流要解决的问题是从 S 到 T 怎么才能最大地将数据运到另一边.这个"数据"可以是水,或者网络数据包.举个例子 在上面这个图中将数据从 S 运到 T,其中边的权值 ...
最新文章
- 伺服驱动器生产文件_在速度控制和力矩控制方面伺服驱动器与变频器的较量
- springCloud入门学习(七):通过属性自定义Ribbon配置
- 基于Hibernate的JPA2.0快速构建
- Oracle下SQL基本操作(二)
- layui数据可视化_空间数据可视化 GEOM
- 36岁程序员:领导平时称兄道弟,裁员时立刻变脸,看透人性
- vue项目text-overflow:ellipsis;在生产环境上不显示...的问题
- php爬取网站所有链接,php 爬取超链接
- SQL2005下载版本之区别
- 程序员桌面都这么秀?网友:用砖头当杯垫这样合适吗?留着吓谁
- DRF实战1 - 环境搭建
- 想转行学IT,到底要不要去培训机构?
- NOD32 ID及升级服务器
- 数据宝贝儿放云上,你放心么?
- 公考复盘(二)——第五季第六季
- Flutter项目调用APP原声页面,使用iOS的Framework,安卓的aar,so文件
- C++ CoreDump
- oracle财务软件导出报表,OracleFusion财务会计中心报表云服务-UAO.PDF
- python填充图像为方形
- 【设计模式与Android】抽象工厂模式——嵌合体克隆工厂