我无法理解为什么 Dijkstra 的算法不适用于具有负边的无环有向图。据我了解,Dijkstra 对图进行了广度优先遍历,并在适当时放松。例如,考虑图表:
S->A (3)
S->B (4)
B->A (-2)
其中 S 是源节点。这就是我想象它的工作方式:
1) 距离为 3 的标记 A。距离为 4 的标记 B。
2) 在 A 上递归。由于 A 不指向任何节点,所以什么也不做。
3)在B上递归。由于B指向A,检查B的距离+B->A是否小于A的当前距离。2 < 3,所以用距离2标记A。
然而,显然这不是它的工作原理,因为我使用的这本书给出了这个图表来说明为什么底片不起作用。我无法遵循书上的解释。Dijkstra 将如何处理这个图表,为什么他们不使用我想象的方法?