最小费用最大流问题——greatji_1994

来源:互联网 发布:zol软件下载 编辑:程序博客网 时间:2024/06/03 18:15

最小费用最大流问题

(转载请说明出处

一、方法

对偶法

始终保持网络中的可行流是最小费用流,然后不断调整,是流量逐步增大,最终成为最小费用的最大流


二、定理

若X是流量为f(X)的最小费用流,u是关于X的所有增广链中费用最小的增广链,那么沿着u去调整X得到的心得可行流X’就是流量为f(X’)的最小费用流


三、实施关键

构造增广费用网络图(即扩展费用网络图),借助最短路算法寻找最小费用增广链

为什么要用扩展费用图?因为使用最短路法找到的必须是一条通路,但是增广链不一定是通路,他的有向边是可能头对头或者尾对尾的,所以要构造这样的一个具有“四通八达”通路的图来使用最短路


四、构造方法:

将网络中每一条弧(vi,vj)都变成’堆方向相反的狐,权数定义如下:


零流弧上,保持原来的弧不变,将单位费用作为权数

非饱和弧上,原有弧以单位费用作权数,后加弧(虚线弧)以单位费用的负数作权数

饱和弧上,去掉原有弧,后加弧(虚线弧)以单位费用的负数作权数


于是,在容量网络中寻找最小费用增广链就相当于在增广费用网络图中国寻找从起点到终点的最短路


还原问题:

虚线弧改成原图中的反向弧


五、具体算法步骤

1、用Ford-Fukerson算法求出该容量网格图的最大流量fmax

2、取出事可行流为零流,其毕为流量为0的最小费用流(定义)

3、一般为第k-1次迭代,的一最下费用流X(k-1),对当前可行流构造增广费用网络图W(X(k-1)),用最短路算法求出从出发点到重点的最短路(若不存在最短路,则X(k-1)即最小费用最大流,停止迭代

4、将最短路还原成网络图中的最小费用增广链u,在u上对可行流X(k-1)进行调整,得到新的可行流图,若其流量等于fmax,迭代结束。否则转入第一步,进入下一次迭代过程。


六、每次迭代分成两部分

1、构造扩展费用网络图

按照上述的权数定义构造

求最短路

还原到原图,找出最小费用增广链

2、根据增广链计算

流量调整量min{容量i - 流量i}+原来已有的总流量

最小费用增广链的费用 sum(cij) = 增广链上的单位费用之和

总费用是 原来已有的总费用+min{容量i - 流量i} * sum(cij)


0 0
原创粉丝点击