最小费用最大流

深度优先搜索这个就用到了递归。此路不通就返回到父节点,换另一个子节点。用数组保存下路径即可。 图如果是地图的模型的话,在算出最短路径长度后,我们总要说明“怎么走”才算真正解决了问题。如何在计算过程中记录下来最短路径是怎么走的,并在最后将它输出呢?    我们定义一个path[]数组,path[i]表示源点s到i的最短路程中,结点i之前的结点的编号(父结点),我们在借助结
摘要由CSDN通过智能技术生成

一、最大流性质:

对一个流网络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 广度优先搜索

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值