论判短负环回路算法的存活率

本篇博客只讲思路,总结经验,不适于作为新手零基础学习的材料。

关于负权回路,一般有2种主流算法:spfa与bellman。

  spfa判负环:

    1、bfs版:即最基础的spfa判负环。有多种判定条件:当一个路径上的节点数大于n时;当某个点的入队次数大于n-1时。最差复杂度O(nm)

    2、dfs版:基于dfs的spfa找最短路时效率不高,但找负权环有时要胜于bfs。我们可以记录dfs到某点时经过的路径,如果我们在dfs时发现到了一个已经在路径中存在的点,就说明找到的一个负权环了。复杂度很玄学,有时快到飞起,但最差复杂度可达指数级别...

  众所周知,spfa是非常容易被针对的算法,只要出题人毒瘤,总是可以把spfa卡得死死的,所以平常要慎用spfa。(猝死率极高)

  bellman判负环:

    十分稳定的算法,当spfa废了的时候,用它也许会是一个不错的选择。只要看第n次迭代能否还能进行松弛操作,若还能,则有负权回路,否则没有。若一次迭代一次松弛都没有进行,就可以提前退出了,这是一个小优化。(基本不会猝死,但时间复杂度也不低)

    

转载于:https://www.cnblogs.com/InductiveSorting-QYF/p/11567933.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值