【费用流的一点改进】距离标号连续增广路费用流算法

本文介绍了一种结合ZKW算法与多路增广技术的距离标号连续增广路费用流算法。该算法通过在更新标号的同时进行多路增广来提高最短路径的查找效率,从而加速整体流程。实验证明,在密集图场景下表现尤为突出。

其实标题中那个又长又霸气的名字只是用来唬人的,其实这个算法非常简单

zkw算法的重点其实就是引入了一个距离标号,让程序一边更新标号求最短路,一边增广,从而使速度大幅提高

可是zkw算法中每次调整标号只增广一次,感觉有点浪费,为什么不多次增广呢?

如果说这个标号让增广的步伐加快了的话,那多路增广就能加大增广的步子,一步多跨一点,也就能让速度更快一点

我所谓的距离标号连续增广路费用流算法本质就是 zkw+多路增广

具体实现的话,可以像dinic一样,每次增广时找到一个最靠前的满流边,退到那个地方,继续做

代码量并没有大多少,速度却可以飙升

实测发现,可能卡到zkw的稠密图一般卡不到这种算法,zkw飞速的图,这个算法光速(夸张了一点。。呵呵)

测试工作在盾盾的机子上做的,图片等下再问他要,到时发上来

附关键代码:

p.s KM用到的slack优化zkw也是可以的,具体见程序(slack数组就是sl[i])

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值