我知道Dijkstra的算法只能用于正边长度,而当图也有负数时,可以使用Bellman-Ford。
假设我们有一个只有正边的图。 Bellman-Ford会给Dijkstra带来相同的结果吗?
答案 0 :(得分:2)
是的,它会给出相同的结果。但它会运行得更慢,因为它也可能用于具有负边缘的图形(可能没有负循环)。如果你看一下BF的正确性证明,就没有假设某些边缘是负的。
答案 1 :(得分:0)
我想在Ami Tavory的回答中添加一些内容。 Bellman-ford的算法可以更快一点,如果你可以在任何传递中检测到它,没有节点值更新,然后从那里返回。如果没有节点更新,则证明每个节点遍历都已完成。