最小费用最大流

    网 络流的基本问题为:设一个有向赋权图G(V,E),V={s,a,b,c,…,s’},其中有两个特殊的节点s和s’。s称为发点,s’称为收点。图中各 边的方向和权数表示允许的流向和最大可能的流量(容量)。问在这个网络图中从发点流出到收点汇集,最大可通过的实际流量为多少?流向的分布情况为怎样?

    设有一个网络图G(V,E),,V={s,a,b,c,…,s’},E中的每条边(i,j)对应一个容量c(i,j)与输送单位流量所需费用a(i,j)。如有一个运输方案(可行流),流量为f(i,j),则最小费用最大流问题就是这样一个求极值问题:

               

其中F为G的最大流的集合,即在最大流中寻找一个费用最小的最大流。

    确 定最小费最大流的过程实际上是一个多次迭代的过程。基本思想是:从零流为初始可行流开始,在每次迭代过程中对每条边赋予与c(i,j)(容量)、 a(i,j)(单位流量运输费用)、f(i,j)(现有流的流量)有关的权数ω(i,j),形成一个有向赋权图。再用求最短距离路径的方法确定由发点s至 收点s’的费用最小的非饱和路,沿着该路增加流量,得到相应的新流。经过多次迭代,直至达到最大流为止。

    构造权数的方法如下:

    对任意边(i,j),根据现有的流f,该边上的流量可能增加,也可能减少。因此,每条边赋予向前费用权ω+(i,j)与向后费用权ω-(i,j):

             

           

    对于赋权后的有向图,如把权ω(i,j)看作长度,即可确定s到s’ 的费用最小的非饱和路,等价于从s到s’ 的最短路。确定了非饱和路后,就可确定该路的最大可增流量。因此需对每一条边确定一个向前可增流量△+(i,j)与向后可增流量△-(i,j):

         

               

因此,确定最小费用最大流的具体算法如下:

(1)从零流开始,令f≡0。

 

(2)赋权  

         

(3)确定一条从s到s’的最短路

         R(s,s’)={(s,i1),(i1,i2),…,(ik,s’)}

若R(s,s’)的长度为+∞,表明已得到最小费用最大流,则停止;否则转向(4)。


(4)确定沿着该路R(s,s’)的最大可增流量

       α=min{△(s,i1),△(i1,i2),…,△(ik,s’)}

其中根据边的取向决定取△或△


(5)生成新的流

          

若f(i,j)已为最小费用最大流,则停止;否则转向(2)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值