-
负环的定义
负环是指权值和为负数的环。负环会使图的最短路径计算陷入死循环,因此,存在负环的图不存在最短路。 -
负环的计算方法:
负环有两种计算方法,都是基于Bellman-Ford算法或者SPFA算法。
第一种算法是:统计每个点的入队次数,如果某个点入队大于等于n次,则说明有负环
第二种算法是:统计到某个点的最短路所经过点的个数,如果经过n个点,则说明存在负环。
(一般情况下,我们使用第二种算法)
由于当负环存在时,SPFA会陷入死循环,且n是非死循环的最坏情况。所以以上两种算法是正确的。 -
求负环算法的编程实现
首先将所有点的距离都赋值为0
然后将所有的点入队。
下面说明这两步的正确性:
算法的复杂度分析:
SPFA算法的理论复杂度为O(m),但是在实际求负环中算法的复杂度接近O(mn)。这种算法复杂度是比较高的。但是,经验来看,当SPFA的复杂度比较高时,图中大概率存在负环。
当所有点的入队次数和超过2n时,就认为图中大概率存在负环。
判断负环算法
最新推荐文章于 2024-04-18 15:34:09 发布