最小割理论
来源:互联网 发布:淘宝开店分享心得 编辑:程序博客网 时间:2024/05/21 21:45
转自mjmjmtl大牛:
一、基本问题:
1.到底什么是割:原始点集为V,选出一些点集S使得s∈S,T=V-S,t∈T,则S到T的边为S到T割,记做[S,T]。
2.什么是最小割:图中所有的割中,边权值和最小的割为最小割!
3.割得容量容量和流量计算的区别:割[S,T]的容量为∑(边(u,v)的容量和),其中u∈S,∈T。也就是说割的容量不计算反向的边!!而流量为正向的和反向的代数和。
4.最大流-最小割定理:最大流的值为最小割的容量!
5.怎样求割:求完最大流后,在残留网络中从source开始dfs,被染色的为S,未被染色的为T,则边集[S,T]为割。(或者从sink反向dfs,被染色的为T,未被染色的为S,边集[S,T]为割)这种思想应该没有错误,我曾经证明过,正向和反向floodFill都能得到合适的解。然而我按照逆向floodFill提交了两道special judge的题,都没有AC!分别是spoj839和poj2125(其中poj2125的SPJ有问题,一会AC一会WA),然而,对于spoj839我自己对我的逆向floodFill答案和正向floodFill答案做了对比(如果有区别,在程序中会死循环),发现二者没有区别。感觉是SPJ的问题。这一点,暂且放置,以后再次看到了再说。
二、一些割的性质:
1.割[S,T],流量只能从S流向T,不能从T流向S!(在最大流后找割dfs时其实就满足这个性质,假设T中一个点v流向S中的一个点u,那么u到v有负流量,则u到v的残留网络严格大于0。反向dfs证明类似)
2.最大流后,割边一定满流。减小某一割边后,网络流减小。
3.如下图,从s沿着残余流量dfs,得到点集S;同理沿着t反向dfs,得到点集T;剩下的是M。分界线cut1和cut2是其中一割,边自然为割边。然而在M中还存有割边(一定存有!!否则M就没用了!)
4.退化一下:如下图所示,S和T有相邻部分边集E1,S和M重合边集相邻部分边集E2,M和T相邻边集部分E3,那么直接升高E1中某条边的容量,会使整体容量直接增高!反之:而如果增大S和M相邻的割边或者M和T相邻的割边,网络流不直接增大,因为M中还存有割边限制
5.继续退化:如果M==空集,cut1和cut2重合(变为cut),则网络中割唯一。可以通过 if ( |S|+|T|==总点数) 来判断
三、割的三个典型应用(参考《最小割模型在信息学竞赛中的应用》):最大权闭合图、最大密度子图、二分图的最小点权覆盖(二分图的最大点权独立集)
0 0
- 最小割理论
- 最小割
- 最小割
- 最小割
- 最小割
- 【最小割】bzoj:1797最小割
- 2229: [Zjoi2011]最小割 最小割
- 【bzoj2229】【ZJOI2229】【最小割】【最小割】
- Bzoj2229:[Zjoi2011]最小割:分治最小割
- bzoj 1797 最小割【最小割】【tarjan】
- ZJOI2011最小割 最小割树
- BZOJ2229: [Zjoi2011]最小割 分治最小割
- 求割边最小的最小割
- pku3084 最小割
- 最大流/最小割
- poj 3084(最小割。。。。。)
- 【最小割】ustc 1280
- 最小割专辑
- hello word
- hdu 3392(滚动数组优化dp)
- 历经4个月的奋战,终于找到一本好书
- C#基础学习(一)
- Linux学习笔记(十二)软件安装
- 最小割理论
- vijos1016
- 高速公路驻地建设标准化图文详解
- Java 产生随机的一组排列
- 最小平方反褶积
- Unity优化之ObjectPool-关于初始化
- 矩阵快速幂模
- Python 查找含有特定单个或多个字符的行
- Xshell的相关命令