Dijkstra vs Bellman-ford A Directed Graph将给出不同的结果

时间:2014-09-25 16:47:18

标签: algorithm graph

我正在尝试学习Graphs,其中我发现要找到从一个节点到另一个节点的最短路径,我们可以使用Dijkstra和Bellman-ford算法。

其中Dijkstra不适用于包含负权重边的图。 虽然Brllman-ford可以处理包含负权重边的图。

我的怀疑是我尝试了许多类型的图形,其中包含负重量边缘并应用Dijkstra和Bellman-ford两者但在所有情况下我发现相同的结果我的意思没有区别,对于负重量边缘也dijkstra工作正常。 可能是我的思考过程或我如何解决的方式是错误的,所以只有我得到正确答案的dikstra。

我的问题是,任何人都可以向我解释一个具有负面优势的图表,并解释dijkstra和bellman-ford的不同结果。

1 个答案:

答案 0 :(得分:2)

找到两条边之间最短路径的Djikstra算法只能用于具有正权重的图形。要看到当有负边缘权重时bellman-ford和djikstra给出的答案的差异,让我们举一个简单的例子

we have 3 nodes in the graph, A B C
A is connected to B edge weight 4
A is connected to C edge weight 2
B is connected to C edge weight -3

当djikstra用于计算A和C之间的最短路径时,我们得到权重2

但是当使用bellman-ford计算A和C之间的最短路径时,权重为1

这种情况正在发生,因为djikstra确定了具有最小边缘权重的节点,忽略了可能存在权重较小的路径的事实(请注意,只有在存在负权重时才会发生这种情况。只有正权重这是不可能的。)

希望你理解差异