algorithm - Dijkstra算法会陷入死胡同吗?

标签 algorithm graph graph-algorithm

假设我有以下图表:

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

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

最佳答案

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

.3. For the current node, consider all of its unvisited neighbors and calculate their tentative distances.

这意味着,如果您从 a 开始,bd 都会被检查(即计算它们的暂定距离),因为它们是没有拜访过的邻居。由于 b 的暂定距离较小,因此您接下来访问该距离。

对于使用额外节点 e 进行的更新:您将到达 c,如上所述。但您并没有陷入困境 - 仍然有一个未访问的节点,其具有预先计算的暂定距离,即 d - 因此您接下来访问该节点。

关于algorithm - Dijkstra算法会陷入死胡同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14825224/

相关文章:

区域体积的 Python 数值积分

algorithm - Reverse LinkedList - 链表工具

c++ - 仅当集合为空时才弹出值的直觉

python - NetworkX:如何从一组预定位置构建 Erdos-Renyi 图?

graph - 生成随机双连通图

Python 设置要为特定结果加减的数字序列

algorithm - 将数组分成两部分的实现,使两部分的平均值相等

c++ - 使用 BFS 寻找图中的最短路径

python - 寻找三角形镶嵌的最近邻

algorithm - 最大平衡二叉树的大小