码迷,mamicode.com
首页 > 其他好文 > 详细

网络流技巧

时间:2015-07-17 10:08:43      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

建模与模型转换:

1.多源多汇问题:

源有多个,汇也有多个,流可以从任意一个源流出,最终可以流向任意一个汇,总流量等于所有源流出的总流量,也等于流进所有汇的总流量。
解:加一个超级源s’和超级汇t’,然后从s’向每个源引一条有向弧,容量为无穷大,每个汇向t’引一条弧,容量为无穷大。

技术分享

2.结点容量:

每个结点都有一个允许通过的最大流量,称为结点容量
解:把每个原始结点u分裂成u1和u2两个结点,中间连一条有向弧,容量等于u的结点容量。原先到达u的弧改成到达u1;原先从u出发的弧改成从u2出发。

技术分享     技术分享

3.无源无汇有容量下界网络的可行流:

建立附加源s和汇t,然后对弧进行改造:首先添加弧t->s并设置容量为无穷大,然后把每条下界为b弧拆分成3条,,然后合并。最后,求改造后的网络的s-t最大流即可。当且仅当所有附加弧满载时原网络有可行流。

               技术分享

            技术分享

            技术分享

 技术分享

技术分享

5.有容量下界网络的s-t最大/最小流:

容量同时有上下界,且源点s和汇点t各有一个,求s到t的最大流和最小流。
先求出可行流,然后用传统的s-t增广路算法即可得到最大流。把t看成源点,s看成汇点后求出的t-s最大流就是s-t最小流。注意,原先每条弧u->v的反向弧容量为0,而在有容量下界的情形中,反向弧的容量应该等于容量下界。

6.费用与流量平方成正比的最小流:

容量c均为整数,并且每条弧还有一个费用系数a,表示该弧流量为x时费用为ax^2,如何求最小费用最大流?

解:用拆边法

技术分享                       技术分享




练习:

POJ 3614
POJ 3204
POJ 3189
POJ 3498
POJ 1637
POJ 2391
POJ 2455
POJ 2112

版权声明:本文为博主原创文章,未经博主允许不得转载。

网络流技巧

标签:

原文地址:http://blog.csdn.net/boyxiejunboy/article/details/46917221

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!