建模与模型转换:
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
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-20 01:27:24