说我有以下图表:
e (destination)
|
| (1)
|
d
|
| (100)
|
(start) a - - - b - - - c
(1) (1)
Dijkstra的算法会陷入死胡同吗?我想如果我从a开始,它会进入a-> b-> c并进入死胡同,因此无法达到e。是这样吗?
答案 0 :(得分:4)
显然不是。来自wikipedia description of Dijkstra's algorithm:
0.3。对于当前节点,考虑所有未访问的邻居并计算它们的暂定距离。
这意味着,如果您从a
开始,b
和d
都会被检查(即计算其暂定距离),因为它们是未访问过的邻居。由于b
的临时距离较小,因此您可以访问该临时距离。
使用额外节点e
进行更新:如上所述,您到达c
。但你并没有陷入困境 - 仍然有一个未预见到的节点具有预先计算的暂定距离,即d
- 所以你下次访问那个节点。