因此,如果我尝试使用Bellman Ford的算法找到最短路径,使用此方法来测试是否存在路径:
public boolean hasPath(int v){
return distTo[v] < Double.POSITIVE_INFINITY;
}
如果我有一个负循环,那么这个算法会发生什么?它是否仍然是真的,因为我知道Dijkstra的算法不适用于负循环,但福特的呢?
答案 0 :(得分:1)
它会起作用,但值可能是也可能不是最短路径。实际的最短路径实际上可能是负无穷大,因为如果负圆到达目标节点,则总是会有比当前最短路径更短的路径。
这实际上是你如何使用Bellman-Ford来检测负面圈子。如果在| V |之后循环,(| V | +1)仍然更新一些最短路径,图中有一个负圆。