上下界网络流及费用流学习笔记

前言

不错的文章:
https://www.cnblogs.com/liu-runda/p/6262832.html
https://www.cnblogs.com/leason-lyx/p/11144527.html


无源汇上下界可行流:

模型:一个网络,求出一个流,使得每条边的流量必须 ≥ L \ge L L ≤ R \le R R,每个点必须满足总流入量 = 总流出量 (流量守恒) (这个流的特点是循环往复,无始无终)

考虑到如果存在一个可行流,那么每条边的流量至少是 L L L,于是我们可以预先让它先流 L L L

这样以后一个点流入量可能就不为流出量了

我们考虑求出一个附加流,每条边的最终流量为附加流流量加上 L L L

具体而言,我们建边建成 ( u , v , R − L ) (u,v,R-L) (u,v,RL)

考虑到最后要让流量平衡,分类讨论:
如果一个点的初始流入 = 流出那么它平衡了
如果初始流入 > 流出,那么这个点在附加流中流入 < 流出,称为 A A A 类点
如果初始流入 < 流出,那么附加流流入 > 流出,称为 B B B 类点
记差量为 ∣ Δ ∣ |\Delta| Δ

为了使流量平衡,我们建立超级源汇 S , T S,T S,T S S S A A A 类点连边,流量为 ∣ Δ ∣ |\Delta| Δ
B B B 类点向 T T T 连边,流量为 ∣ Δ ∣ |\Delta| Δ

容易发现,与源点汇点 S , T S,T S,T向连的边边权和是相等的
有解当且仅当把不平衡的流量填平,也就是 S , T S,T S,T 的所有出边入边满流

跑一个 S S S T T T 的最大流即可


有源汇上下界可行流

源点和汇点的流量始终不会平衡

考虑到源点出去的流量 = 汇点进的流量,汇点向源点连流量 + ∞ +\infty + 的边就可以平衡

整个可行流的流量就是汇点到源点那条边的流量


有源汇有上下界最大流

在满足可行即流量平衡的条件下流量最大

建图如上,我们发现残余网络中有些边是没有跑满的

把与超级源汇的边断开,然后在残余网络上跑一个原图 S , T S,T S,T 的最大流

最终的最大流需要加上原本的可行流

最小流可以倒过来跑, T T T S S S


无源汇上下界最小费用可行流

同样建立超级源汇 S , T S,T S,T

对于边 ( u , v , L , R , c o s t ) (u,v,L,R,cost) (u,v,L,R,cost),建边 ( u , v , R − L , c o s t ) (u,v,R-L,cost) (u,v,RL,cost),并将初始值加上 L ∗ c o s t L*cost Lcost

对于那些流量不平衡的点,建边同 “ 无源汇上下界可行流 ”,费用为 0

然后跑 S S S T T T 的最小费用最大流

有源汇加一条原图中 ( T , S , ∞ , 0 ) (T,S,\infty,0) (T,S,,0)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值