网络流

来源:互联网 发布:淘宝批量修改运费模板 编辑:程序博客网 时间:2024/05/18 03:51

零、

最大流ISAP  http://blog.csdn.net/yuer158462008/article/details/38470281

最小费用最大流   http://blog.csdn.net/yuer158462008/article/details/38473561

一、求最小割集

反向bfs进行标记

http://paste.ubuntu.com/12211833/

二、无源汇上下界可行流

/*
无源汇上下界可行流:
边side(u,v)有流量上界up,下界low,构造的图使该边流量为up-low,
u节点出流量low,v节点入流量low,
用du[i]表示 i 节点入流之和与出流之和的差
加上附加源点 S 汇点 T,如 du[i]>0,S->i 连容量为 du[i]的边;
反之连,i->T 容量为-du[i]的边。
求 S-T 最大流,判断是否满流
 */

http://paste.ubuntu.com/12211840/


三、有源汇上下界最大流

/*
有源汇上下界最大流:
首先判断是否存在满足所有边上下界的可行流,
方法可以转化成无源汇有上下界的可行流问题。

设源点汇点为 S 和 T,添加边 T->S,容量[0,INF],
于是构造成了一个无源汇点的循环流。

添加超级源汇 SS,TT 然后求可行流,判断是否有解。
如果有可行流,删掉 超级源汇SS,TT。
求 S-T 最大流即是答案

*/

http://paste.ubuntu.com/12211848/


四、有源汇上下界最小流

/*
有源汇上下界最小流:
设 du[i]表示 i 节点入流之和与出流之和的差
然后添加附加源汇 SS,TT,如果 du[i]>0,添加 SS->i 容量
du[i],如果 du[i]<0,添加 i->TT 容量-du[i]。
求 SS->TT 最大流,记录流量;
添加边 T->S,容量为无穷大
求 SS->TT 最大流,记录流量;
累计这两次的流量,判断是否满流,即有无可行解
最后:T->S 的反向弧上的流量即为 S->T 的最小流
*/
http://paste.ubuntu.com/12212331/


0 0
原创粉丝点击