每次在残留网络里找一个以边的价值耗费为权值的最短路径(s到t),如果能找到,就给这条路径压入流。
否则,算法结束. 计算所有正流*单位流耗费即得最小耗费最大流.
运输问题
有A、B、C三个食品加工厂,负责供给甲、乙、丙、丁四个市场。三个厂每天生产食品箱数上限如下表:
工厂 A B C
生产数 60 40 50
四个市场每天的需求量如下表:
市场 甲 乙 丙 丁
需求量 20 35 33 34
从各厂运到各市场的运输费(元/每箱)由下表给出:
市 场
甲 乙 丙 丁
工
厂 A 2 1 3 2
B 1 3 2 1
C 3 4 1 1
(1)求在基本满足供需平衡的约束条件下使总运输费用最小。
(2)由于某种原因,若A的产品不能运到丁,B的产品不能运到乙,则满足供需平衡的约束下又该怎么安排运输才能使运输费用最小。
这是狼大哥的算法,应该就是最小费用最大流的思想:
//其实很好理解,我们找张纸,先把数据按照这个格式抄下来
//最后一列是供应数,最后一行是需求数
2 1 3 2 60
1 3 2 1 40
3 4 1 1 50
20 35 33 34
//第一步,找到价格是最低的,1块钱的
//第一行第二列,产是60,需是35,
//把60个产量,拿35个满足之;
//可以分配的产量就是25
//需求就是0了,表就变成了下边
2 1 3 2 [25]
1 3 2 1 40
3 4 1 1 50
20 [0] 33 34
//重复这个过程,直到产方全是0,或者供方全是0
//就完成了。