最小割问题

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)是最小割,因为是任意性证明

以下三个命题等价:

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

最难的是3->1,主要证明3->1:
令fff是不带增广路径的流,集合AAA是剩余网络中从起点sss可达的节点的集合。
则原网络和流图,可以表示如下:

有下列关系:

若第二项不等于0,则剩余网络可扩展,直到为0为止

网络流——最大流和最小割相关推荐

  1. 网络流中最大流和最小割算法

    学习顺序按照下图的改进历程 问题转化:寻找初始解,提升,达到条件停止 求解优化,加回溯边,画残差图,在残差图中寻找一条s可到t的路径 看最大流最小割问题,证明 除 ST外每个点的出度和入度相等,S和T ...

  2. 网络流:最大流,最小割 基本概念及算法

    原文:http://www.cnblogs.com/Booble/archive/2011/03/04/1970453.html 参考:http://community.topcoder.com/tc ...

  3. 最大流与最小割(Maxflow与Mincut)

    传统图像主要分割算法: 基于阈值的分割 (1)固定阈值分割 (2)直方图双峰法 (3)迭代阈值图像分割 (4)自适应阈值图像分割 (5)最佳阈值法 2.基于边缘的分割 (1)Canny边缘检测器 (2 ...

  4. 如何快速理解最大流和最小割

    摘要: 割从哪来-------->最大流和最小割之间的等价关系的阐述. 1.问题引入 1.1思考这样一个问题:在给定的图中,如何判断一个源点s到终点t是否有路径存在呢? 我们首先想到的是用BFS ...

  5. 网络流之最大流和最小割

    最大流问题 最大流:给定有向图中每条边的最大流量(容量),求从源点到汇点的最大流量. 容量网络: 括号左边代表容量,右边代表流量. 残留网络:流网络中剩余可增加的流量 增广路:满足容量条件的一条流量不 ...

  6. 最大流,最小割刷题记录

    T1 P2057 [SHOI2007] 善意的投票 题目 https://www.luogu.com.cn/blog/OnMyOwn/OnMyOwn https://www.luogu.com.cn/ ...

  7. BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Submit: 23822  Solved: 6012 [Submit ...

  8. Forethought Future Cup - Elimination Round G. Zoning Restrictions 最大流(最小割)

    题目链接: https://codeforces.com/contest/1146/problem/G 题意: 你现在要给 nnn 个位置制定高度 hi(1<=hi<=H)h_i (1&l ...

  9. 最大流最小割经典例题_算法: 最大流与最小割

    什么是最大流 最大流要解决的问题是从 S 到 T 怎么才能最大地将数据运到另一边.这个"数据"可以是水,或者网络数据包.举个例子 在上面这个图中将数据从 S 运到 T,其中边的权值 ...

最新文章

  1. 伺服驱动器生产文件_在速度控制和力矩控制方面伺服驱动器与变频器的较量
  2. springCloud入门学习(七):通过属性自定义Ribbon配置
  3. 基于Hibernate的JPA2.0快速构建
  4. Oracle下SQL基本操作(二)
  5. layui数据可视化_空间数据可视化 GEOM
  6. 36岁程序员:领导平时称兄道弟,裁员时立刻变脸,看透人性
  7. vue项目text-overflow:ellipsis;在生产环境上不显示...的问题
  8. php爬取网站所有链接,php 爬取超链接
  9. SQL2005下载版本之区别
  10. 程序员桌面都这么秀?网友:用砖头当杯垫这样合适吗?留着吓谁
  11. DRF实战1 - 环境搭建
  12. 想转行学IT,到底要不要去培训机构?
  13. NOD32 ID及升级服务器
  14. 数据宝贝儿放云上,你放心么?
  15. 公考复盘(二)——第五季第六季
  16. Flutter项目调用APP原声页面,使用iOS的Framework,安卓的aar,so文件
  17. C++ CoreDump
  18. oracle财务软件导出报表,OracleFusion财务会计中心报表云服务-UAO.PDF
  19. python填充图像为方形
  20. 【设计模式与Android】抽象工厂模式——嵌合体克隆工厂

热门文章

  1. TensorFlow实现自定义Op
  2. elastic-php实现多个OR并列查询的优化
  3. LTE-A载波聚合技术(14)---CQI的TDM和CDM
  4. linux永久自动挂载
  5. pandas判断和删除重复duplicated和drop_duplicates
  6. 机器学习--多层感知机、卷积神经网络、循环神经网络
  7. 判断Stack为空的方法之empty()与isEmpty()
  8. 使用Groovy和7-Zip-JBinding解压缩7-Zip文件
  9. 思科EtherChannel链路聚合
  10. 好用并强大的图片插件:PhotoSwipe.js