理论教育 最小费用流问题详解

最小费用流问题详解

时间:2023-06-01 理论教育 版权反馈
【摘要】:前节讨论网络最大流时,只描述了流量的大小问题,而未考虑网络流的费用问题。另一个问题是满足流量达到最大使总费用最小,称为最小费用最大流问题。不断寻找最小费用增广链和调整流量,直到流量等于事先给定的流量v为止。8)求最小费用最大流。对图7-25i的最小费用增广链u5,取调整量θ=6对流量调整,得到图7-26a及赋权图7-26b。

最小费用流问题详解

前节讨论网络最大流时,只描述了流量的大小问题,而未考虑网络流的费用问题。在实际工程中,涉及“流”的问题时,人们考虑的不只是流量,而且还有费用的因素。因此,在一个网络流中求出一条可行流后,满足流量达到一个固定数使总费用最小,就是工程中的最小费用流问题。另一个问题是满足流量达到最大使总费用最小,称为最小费用最大流问题。

与最大流的标号算法相比,最小费用流的标号算法不仅要找增广链,更重要的是寻找所有增广链中费用最小的那条增广链。针对这个问题,首先考虑一下,当沿着一条关于可行流f的增广链u,以Δ=1调整f,得到新的可行流f′时,费用bf′)比bf)增加的量为:

978-7-111-46552-2-Chapter07-82.jpg

我们把978-7-111-46552-2-Chapter07-83.jpg称为这条增广链u的“费用”。

可以证明,流量为vk-1)的可行流fk-1),其最小费用增广链的调整量为θ,则调整后的可行流fk)是流量vk)=vk-1)+θ的最小费用流。

最小费用流算法的基本思路是:给定一个初始流量v(0),找出其最小费用流f(0),如初始流量为零的流量f(0)={0}是最小费用流。然后利用Ford-Fulkerson标号算法寻找一条从发点到收点的最小费用增广链,调整量为θ,调整后的流量为v(0)+θ。不断寻找最小费用增广链和调整流量,直到流量等于事先给定的流量v为止。

设给定的流量为v,则求网络最小费用最大流的算法可归纳如下:

第一步,取初始流量为零的可行流f(0)={0}。

第二步,令网络图中所有弧的权等于dij,得到一个赋权图D,用Dijkstra算法求出最短路,这条最短路就是初始最小费用增广链u

第三步,调整流量。前向弧上令θ=cij-fij,后向弧上令θ=fij,调整量为θ=min(θj)。调整后得到的最小费用流fk),流量为vk)=vk-1)+θ,当vk)=v时计算结束,否则转到第四步。

第四步,作赋权图D并寻找最小费用增广链。

1)最小费用流fk-1)的流量为vk-1)<V时,将网络的费用转化为权wij,其含义等价于最短路中的距离。对可行流fk-1)的最小费用增广链上的弧(ij)作如下变动:

978-7-111-46552-2-Chapter07-84.jpg

式(7-5)的使用方法如下:

第一种情形,当弧(ij)上的流量满足0<fijcij时,在点vivj之间添加一条方向相反的弧(ji),权为(-dij)。

第二种情形,当弧(ij)上的流量满足fij=cij时将弧(ij)反向变为(ji),权为(-dij)。不在最小费用增广链上的弧不作任何变动,得到一个赋权网络图D。

2)求赋权图D从发点到收点的最短路,如果最短路存在,则这条最短路就是f(k-1)的最小费用增广链,转第二步。

赋权图D的所有权非负时,可用Dijkstra算法求最短路,存在负权时用Floyd算法。

3)如果赋权图D不存在从发点到收点的最短路,说明vk-1)已是最大流量,不存在流量等于v的流,计算结束。

【例7.8】 图7-24是一个运输网络图,弧上的数字为(cijbij),cij表示总运量,bij为相应的运输费用,现试制定一个通行能力v=15及最小费用最大流的运输方案。

978-7-111-46552-2-Chapter07-85.jpg

图7-24

解 1)令所有弧的流量等于零,得到初始可行流f(0)={0},流量v(0)=0,总运费df(0))=0。

2)弧的权数等于费用bij,用Floyd算法求出该赋权图的最短路。最小费用增广链u1:Ⓢ→①→④→⑥,见图7-25a。(www.daowen.com)

3)调整流量。调整量θ=4,对f(0)={0}进行调整得到f(1),见图7-25b,括号内的数字为弧的流量,网络流量v(1)=4,总运费:

df(1))=0×4+2×4+3×4=20

4)v(1)=4<15,没有得到最小费用流。在图7-25b中,弧(s,1)和(4,6)满足条件0<fij<cij,添加两条边(1,s)和(6,4),权分别为“0”和“-3”,边(1,s)可以去掉;弧(1,4)上有fij=cij说明已饱和,将弧(1,4)反向变为(4,1),权为“-2”,见图7-25c。

5)继续转到步骤二,求出最小费用增广链u2:Ⓢ→②→④→⑥,调整量θ=3,调整后得到的最小费用流f(2),流量v(1)=4,见图7-25d,总运费:

df(2))=2×4+3×7+5×3=44

6)v(2)=7<15,需要对最小费用增广链u2上的弧进行调整。图7-25c中,弧(s,2)和(4,6)满足条件0<fijcij,添加两条边(2,s)和(6,4),权分别为“0”和“-3”,边(1,s)可以去掉;弧(6,4)已经存在,弧(2,4)上fij=cij说明已饱和,将弧(2,4)反向变为(4,2),权为“-5”,见图7-25e。

978-7-111-46552-2-Chapter07-86.jpg

图7-25

a)f(0),赋权图D0 b)f(1) c)f(1),赋权图D1 d)f(2) e)f(2),赋权图D2 f)f(3)

978-7-111-46552-2-Chapter07-87.jpg

图7-25 (续)

g)f(3),赋权图D3 h)f(4) i)f(4),赋权图D4 j)f(5)

7)继续重复步骤2)、3)及4),得到图7-25i,最小费用增广链u5:Ⓢ→①→⑤→⑥,调整量θ=6,取θ=5,流量v(5)=v=15得到满足,最小费用流见图7-25j,问题1计算结束。

8)求最小费用最大流。对图7-25i的最小费用增广链u5,取调整量θ=6对流量调整,得到图7-26a及赋权图7-26b。

9)图7-26b的最小费用增广链u6:Ⓢ→②→⑤→⑥,调整量θ=1,流量v(6)=17,最小费用流为f(6)及赋权图,见图7-26c、d。图7-26d不存在从vs发点到v6的最短路,则图7-26c的流量就是最小费用最大流,最大流量v=17,最小的总运费为:

df)=2×4+4×6+5×3+4×1+6×1+3×2+3×8+12×9=195

978-7-111-46552-2-Chapter07-88.jpg

图7-26

a)f(5) b)f(5),赋权图D5

978-7-111-46552-2-Chapter07-89.jpg

图7-26 (续)

c)f(6) d)f(6),赋权图D6

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈