algorithm - Dijkstra 如何找到这个图中的最短路径?

标签 algorithm dijkstra

如果我们必须找到从 0 到 3 的最短路径,我很难理解 Dijkstra 如何在下图中找到最短路径(从我理解它的工作方式):https://graphonline.ru/tmp/saved/SH/SHBqKyENwJqcCJGM.png

如果算法从0中选择最小的权值,并标记0为已访问,那么它不会先选择节点1再选择节点3吗?它会如何选择节点 2?

最佳答案

Dijkstra 算法涉及一个优先级队列,其中保留了从被访问节点可直接到达的所有节点,以及它们到起始节点的距离。

该算法将访问节点 0,并将节点 1 和 2 添加到优先级队列中。然后它将访问节点 1,因为它是优先级队列中最近的节点,并将节点 3 添加到优先级队列中,距离为 6。节点 2 仍在队列中,因为它比节点 3 更靠近节点 0 ,接下来会访问它。当访问节点2时,会找到到节点3的长度为4的较短路径,因此到节点3的距离将更新为4。然后访问节点3。

关于algorithm - Dijkstra 如何找到这个图中的最短路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56615632/

相关文章:

c++ - Facebook 编程挑战

java - Dijkstra算法-优先级队列问题

algorithm - Dijkstra 算法属性

algorithm - 具有燃料限制的最短路径

algorithm - 在没有旋转的情况下保持avl树平衡

java - 在 Java 中使用正则表达式复制数组

algorithm - 在不使用循环或条件的情况下打印字符串 X 次

hadoop - dijkstra的最短路径算法回溯了吗?

algorithm - 保留直接连接的最短路径算法?

algorithm - 哈希什么时候发生冲突?