最小费用最大流

本文介绍了最小费用最大流问题,包括最大流的性质、最小费用最大流的概念,以及求解方法,如广度优先搜索、深度优先搜索和Dinic算法。通过这些算法寻找在满足容量限制和费用最小化的条件下,从源点到汇点的最大流量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、最大流性质:

对一个流网络G=(V,E),其容量函数为c,源点和汇点分别为s和t。G的流f满足下列三个性质: 
      容量限制:对所有的u,v∈V,要求f(u,v)<=c(u,v)。 
      反对称性:对所有的u,v∈V,要求f(u,v)=-f(v,u)。 
      流守恒性:对所有u∈V-{s,t},要求∑f(u,v)=0(v∈V)。

二、最小费用最大流:

在一个网络中每段路径都有容量费用两个限制的条件下,此类问题的研究试图寻找出:流量从AB,如何选择路径、分配经过路径的流量,可以在流量最大的前提下,达到所用的费用最小的要求。如n辆卡车要运送物品,从A地到B地。由于每条路段都有不同的路费要缴纳,每条路能容纳的车的数量有限制,最小费用最大流问题指如何分配卡车的出发路径可以达到费用最低,物品又能全部送到。

三、求最大流方法:

 Ford-Fulkerson方法依赖于三种重要思想,这三个思想:残留网络,增广路径和割。Ford-Fulkerson方法是一种迭代的方法。开始时,对所有的uvVf(u,v)=0,即初始状态时流的值为0。在每次迭代中,可通过寻找一条增广路径来增加流值。增广路径可以看成是从源点s到汇点t之间的一条路径,沿该路径可以压入更多的流,从而增加流的值。反复进行这一过程,直至增广路径都被找出来,根据最大流最小割定理,当不包含增广路径时,fG中的一个最大流。

找增广路的过程可以使用BFSDFSDinic。(若要求最小费用最大流,只需每次寻找的增广路是最小费用即可。可用最短路算法。

3.1 广度优先搜索

//广度优先搜索是从一个节点开始,再到自己的子节点,然后依次从子节点开始到自己子节点的子节点(这个方法就是先把自己的子节点放入队列,搜索完自己的子节点之后从队列中依次出队,从子节点开始新的搜索),因为目标是得到最小流(总的算最大流),所以中间的过程要有边的容量的比较,得到一条路径中最小的流。(虽然遍历了所有的节点,但是更新的却是最先找到的从源点到终点的那条路)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值