最小割最大流定理&残量网络的性质
最小割最大流定理的内容:
对于一个网络流图 $G=(V,E)$,其中有源点和汇点,那么下面三个条件是等价的:
- 流$f$是图$G$的最大流
- 残量网络$G_f$不存在增广路
- 对于$G$的某一个割$(S,T)$,此时流的流量等于其容量
证明如下:
首先证明$1\rightarrow2$:
正确性显然,
然后证明$2\rightarrow3$:
假设残留网络$G_f$不存在增广路,所以在残留网络$G_f$中不存在路径从$s$到达$t$。我们定义$S$集合为:当前残留网络中$s$能够到达的点。同时定义$T=V-S$。此时$(S,T)$构成一个割$(S,T)$。且对于任意的$u\in S,v\in T$,边$(u,v)$必定满流。若边$(u,v)$不满流,则残量网络中必定存在边$(u,v)$,所以$s$可以到达$v$,与$v$属于$T$矛盾。因此有$$f(S,T)=\Sigma f(u,v)=\Sigma c(u,v)=C(s,t)$$
最后证明$3\rightarrow1$:
割的容量是流量的上界, 正确性显然.
于是, 图的最大流的流量等于最小割的容量.
残量网络的性质:
- $s$与$t$一定不在同一$SCC$里
- 对于某条满流边$(u,v)$, 若$u$与$s$在同一$SCC$,$v$与$t$在同一$SCC$, 则它必定会出现在最小割中.
- 对于某条满流边$(u,v)$, 若$u$与$v$不在同一$SCC$, 则它可能出现在最小割中.
结论1非常显然, 最大流的话$s$和$t$直接不连通更不要说在同一$SCC$里了.
结论2的话, 如果将一条满足该限制的边容量增大, 那么$s\rightarrow t$重新连通, 于是就会增加最大流的流量, 也相当于增加了最小割的容量. 所以这条边必定会出现在最小割中.
结论3的话, 我们把$SCC$缩到一个点里, 得到的新图就只有满足条件的满流边了. 缩点后的任意一个割显然就对应着原图的一个割, 所以这些满流边都可以出现在最小割中.
最小割最大流定理&残量网络的性质的更多相关文章
- BZOJ 1834: [ZJOI2010]network 网络扩容 最小费用流_最大流_残量网络
对于第一问,跑一遍最大流即可. 对于第二问,在残量网络上的两点间建立边 <u,v>,容量为无限大,费用为扩充费用. 跑一遍最小费用流即可. Code: #include <vecto ...
- UVA - 10480 Sabotage【最小割最大流定理】
题意: 把一个图分成两部分,要把点1和点2分开.隔断每条边都有一个花费,求最小花费的情况下,应该切断那些边.这题很明显是最小割,也就是最大流.把1当成源点,2当成汇点,问题是要求最小割应该隔断那条边. ...
- 【BZOJ-1797】Mincut 最小割 最大流 + Tarjan + 缩点
1797: [Ahoi2009]Mincut 最小割 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1685 Solved: 724[Submit] ...
- BZOJ1001:狼抓兔子(最小割最大流+vector模板)
1001: [BeiJing2006]狼抓兔子 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨, ...
- hdu4289 最小割最大流 (拆点最大流)
最小割最大流定理:(参考刘汝佳p369)增广路算法结束时,令已标号结点(a[u]>0的结点)集合为S,其他结点集合为T=V-S,则(S,T)是图的s-t最小割. Problem Descript ...
- BZOJ-1001 狼抓兔子 (最小割-最大流)平面图转对偶图+SPFA
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 14686 Solved: 3513 [Submit][ ...
- HDU4888 Redraw Beautiful Drawings(最大流唯一性判定:残量网络删边判环)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4888 Description Alice and Bob are playing toget ...
- P3308 [SDOI2014]LIS(最小割+退流)
传送门 设\(f[i]\)为以\(i\)结尾的最长上升子序列.可以考虑建这样一张图,对于所有的\(i<j,f[j]=f[i+1]\)连边\((i,j)\),\(f[i]=1\)的话连边\((S, ...
- bzoj 1191: [HNOI2006]超级英雄Hero 网络流_残量网络
题目描述: 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的 多少获得不同数目的奖品或奖金.主持人问题准备了若干道题目,只有当选手正确回答一道题后 ...
随机推荐
- 使用SQL语句修改Mysql数据库字符集的方法
使用SQL语句修改Mysql数据库字符集的方法 修改库: alter database [$database] character set [$character_set] collate [$c ...
- flink time and watermark
流处理中时间本质上就是一个普通的递增字段(long型,自1970年算起的微秒数),不一定真的表示时间. watermark只是应对乱序的办法之一,大多是启发式的,在延迟和完整性之间抉择.(如果没有延迟 ...
- Python与线性代数基本概念
在Python中使用Numpy创建向量: x = np.array([1, 2, 3, 4]) 创建3 x 3矩阵 B = np.array([[1, 2],[3, 4],[5, 6]]) Shape ...
- MongoDB(八):索引
1. 索引 索引支持查询的有效地提高效率.没有索引,MongoDB必须扫描集合的每个文档,以选择与查询语句匹配的文档.这种扫描效率很低,需要MongoDB处理大量的数据. 索引是特殊的数据结构,以易于 ...
- Android.mk语法说明
版权申明: 本文原创首发于以下网站,您可以自由转载,但必须加入完整的版权声明 博客园:https://www.cnblogs.com/MogooStudio/ csdn博客:https://blog. ...
- kvm磁盘管理
kvm磁盘管理 kvm虚拟机虚拟磁盘格式转换 各种格式说明介绍 row:裸格式,占用空间较大,不支持快照功能,性能较好,不方便传输(顺序读写) 50G 2G 传输50G qcow2:cow 占用空间小 ...
- centos和rhel中软件包管理常用命令
软件包管理的常用命令 rpm软件包的管理 查询类: rpm -q 软件包的查询: rpm -q 软件包的名字 //你的记住软件包完整名字 模糊查询:rpm -qa | grep ...
- 查看python版本多少位的
正常我们在cmd终端输入python之后,如果有安装python,就会在回车之后出来关于你安装的python版本信息,几版本,多少位的,但是还有一种,像我这样只显示了python版本是3.7.5,并没 ...
- Spring Cloud系列:不重启eureka,清除down掉的服务
场景描述 做项目的时候,我的服务改了个ip,然后重新启动后,原ip的服务down掉了,但是没有清楚掉,还在上面,导致我用swagger测试的时候,访问不到真正up的程序.重启eureka又不划算,于是 ...
- GO基础之接口
一.概念1. 面向对象语言中,接口用于定义对象的行为.接口只指定对象应该做什么,实现这种行为的方法(实现细节)是由对象来决定.2. 在Go语言中,接口是一组方法签名. •接口只指定了类型应该具有的方法 ...