刚开始接触最大流问题,也是一头雾水,看了一上午的理论知识,直到看到一个视频的讲解,才完全明白了最大流问题是怎么一回事,对我的帮助很大。
视频资料如下:
http://www.56.com/u36/v_ODAwNTQ0MTc.html
总结最大流问题:(容量,流量)两个参数数字,前面Cij容量,Fij流量。
最大流可以从起点看,也可以从终点看,就是说流进去的和流出的是相等的。
求网络的最大流:就是找增广链(增光路)。
判断出去的是否是非饱和的边,出发的边是否为非饱和的边,即流量和不相等。
当遇到饱和边的时候,要判断流进“非零”的边。
总的要求就是流出的是“非饱和的边”,流进的是“非零”边。
注意:遇到反向边是流量减少的边。正向边是流量增加的边。
然后统一加上他的最少的残余量。
其实找最大流就是找增广链,直到找到不存在增广链为止。
EK算法的核心
反复寻找源点s到汇点t之间的增广路径,若有,找出增广路径上每一段[容量-流量]的最小值delta,若无,则结束。
在寻找增广路径时,可以用BFS来找,并且更新残留网络的值(涉及到反向边)。
而找到delta后,则使最大流值加上delta,更新为当前的最大流值。
百度资料:
最小割集:就是边的集合
如果仅仅求最大流就没必要求出最小的割集。