对费用流消负圈的小小理解

上次“参观”华工校赛,G题“A Mincost—Maxflow Problem” 引发了对费用流中负权回路的思考

这题目是单纯的模板题,不想再提了~~

下面说一下消圈:

有负权回路的图是不可能球出最短路的,所以增广算法不能发挥用处,那我们可不可以通过修改权值从而消去负边??

答案当然是肯定的:(以下操作的前提是网络已经建好,并且初始流量是0)

 c (容量) f  (流量) cost(费用)

(1)先使所有负边满流(注意残留网络的变化),计算每个节点的盈余流(设e [i] >0 为流入大于流出)

(2)建立一个额外的 S‘ 和 T’ 

          对于每个节点i(e[i] >0) 连一条边  S‘ --> i   (c = e[i],  cost = 0)

          对于每个节点j(e[j] <0) 连一条边 j -- > T’  (c = -e[j], cost = 0)

(3)求解关于源 S‘ 和汇 T’ 的最小费用最大流(得到一个原网络的可行流——负环流)

(4)对于原来网络中的 S 和 T 求解最小费用最大流

理解的关键是残留网络的变化

代码先空着

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值