Dijkstra的算法会陷入死胡同吗?

时间:2013-02-12 04:09:16

标签: algorithm graph graph-algorithm

说我有以下图表:

           e (destination)
           |
           | (1)
           |
           d
           |
           | (100)
           |
  (start)  a - - - b - - - c
             (1)      (1)

Dijkstra的算法会陷入死胡同吗?我想如果我从a开始,它会进入a-> b-> c并进入死胡同,因此无法达到e。是这样吗?

1 个答案:

答案 0 :(得分:4)

显然不是。来自wikipedia description of Dijkstra's algorithm

  

0.3。对于当前节点,考虑所有未访问的邻居并计算它们的暂定距离。

这意味着,如果您从a开始,bd都会被检查(即计算其暂定距离),因为它们是未访问过的邻居。由于b的临时距离较小,因此您可以访问该临时距离。

使用额外节点e进行更新:如上所述,您到达c。但你并没有陷入困境 - 仍然有一个未预见到的节点具有预先计算的暂定距离,即d - 所以你下次访问那个节点。