贝尔曼福特的负循环算法

时间:2016-03-18 18:02:13

标签: java algorithm graph cycle bellman-ford

因此,如果我尝试使用Bellman Ford的算法找到最短路径,使用此方法来测试是否存在路径:

public boolean hasPath(int v){
    return distTo[v] < Double.POSITIVE_INFINITY;
}

如果我有一个负循环,那么这个算法会发生什么?它是否仍然是真的,因为我知道Dijkstra的算法不适用于负循环,但福特的呢?

1 个答案:

答案 0 :(得分:1)

它会起作用,但值可能是也可能不是最短路径。实际的最短路径实际上可能是负无穷大,因为如果负圆到达目标节点,则总是会有比当前最短路径更短的路径。

这实际上是你如何使用Bellman-Ford来检测负面圈子。如果在| V |之后循环,(| V | +1)仍然更新一些最短路径,图中有一个负圆。

相关问题