图论-网络流⑥-费用流

本文介绍了费用流的概念,即在网络流图中每条边带有成本,目标是在达到最大流的同时求最小总成本。文章讨论了三种常见的费用流算法:EK费用流、Dinic费用流和zkw费用流,并提供了相应的算法框架和实现思路。通过将最大流问题与最短路径算法结合,这些方法能够在满足最大流需求的同时寻找最小费用路径。
摘要由CSDN通过智能技术生成

图论-网络流⑥-费用流

上一篇:图论-网络流⑤-最大流解题②

下一篇:图论-网络流⑦-费用流解题

参考文献:

https://www.cnblogs.com/finder-iot/p/8409010.html
https://blog.csdn.net/Frocean/article/details/81543757

大纲

  • 什么是网络流
  • 最大流(最小割)
  • D i n i c Dinic Dinic (常用)
  • E K EK EK
  • S a p Sap Sap
  • F o r d − F u l k e r s o n Ford-Fulkerson FordFulkerson(不讲)
  • H L P P HLPP HLPP (快)
  • 最大流解题
  • 费用流 Start \color{#33cc00}\texttt{Start} Start
  • E K EK EK 费用流
  • D i n i c Dinic Dinic 费用流
  • z k w zkw zkw 费用流 End \color{red}\texttt{End} End
  • 费用流解题

  • 有上下界的网络流

  • 无源汇上下界可行流
  • 有源汇上下界可行流
  • 有源汇上下界最大流
  • 有源汇上下界最小流
  • 最大权闭合子图
  • 有上下界的网络流解题

上篇讲完了网络最大流的解题,如果你去找个题库刷刷,你会发现网络最大流根本不能满足我们的解题需要。面对更为复杂的情况,需要这一篇的主角出场——网络费用流

费用流

首先讲讲费用流图。这种网络流图每条边比普通的网络流图多一个限制,就是 c o s t cost cost表示这条边上每走过 1 1 1 流量就要付费 c o s t cost cost 如下:

mcmf.jpg

最小费用最大流(就是俗称的费用流),就是求在最大流的情况下的最小费用。如上图的最大流为 1 1 1 ,当流量走 s → 1 → 2 → t s\to1\to2\to t s12t 时达到最小费用最大流,此时的费用为 3 3 3

费用流算法

常见的算法是 E K EK EK D i n i c Dinic Dinic和zkw费用流。有些时候我们需要的是最大费用最大流,只需要对代码稍作转化即可。

EK费用流

大部分同求最大流的 E K EK EK,算法框架长这样:

int bfs(){
   
    //找到一条增广路
}
int EK(){
   
    //对找到的增广路进行一系列处理
}

因为最大流的一条支流肯定是处处流量相等的,所以一条支流的费用就为 流量 f × f\times f×一路费用和。可以证明,如果把一条边的费用看作边的长度,不停找最短路增广最大流的费用是最小的。

实现: 把原来最大流 E K EK EK D f s Dfs Dfs 变成最短路算法(你可以写 D i j + h e a p Dij+heap Dij+heap B e l l Bell Bell S p f a Spfa Spfa S p f a + S L F Spfa+SLF Spfa+SLF

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值