Dijkstra算法,当它们具有相同的长度时如何选择下一个节点

Dijkstra's Algorithm, how to choose next node when they have the same length

in Dijkstra's Algorithm(求最短路径),当你分析了从当前节点出发的所有未被访问的路径,并找到了它们的暂定距离。您必须 select 下一个要到达的节点,这是通过 select 具有最短暂定距离的节点来完成的。这很容易,除非有多个相同长度的路径。例如在这张图中:

如果我们尝试从节点 0 到节点 5,有两条路径,首先我们到节点 4,然后我们必须在 6 和 8 之间进行选择。这很复杂,算法会在两者之间进行选择长度为 10.

的路径

我看到 3 个选项:

实在是不知道怎么操作了,谢谢阅读

(Cross posted on theoretical computer science stack exchange)

这个特殊情况不是很复杂。


这取决于分析的深度:

唯一的开始可能性:

0 - 4(费用:10)

现在有一个决策点 - 有 2 种可能的方法。

I深度成本相同:

  • 0 - 4(c:10) - 6 (c:10)
  • 0 - 4(c:10) - 8 (c:10)

那么让我们看看II深度级别

  • 0 - 4(c:10) - 6 (c:10) - 3 (c:5)
  • 0 - 4(c:10) - 8 (c:10) - 5 (c:5)

你已经完成了 - 第二种方式在这个环境中是最优化的(但是,如果道路没有结束 - 算法会进一步分析)并根据几个深度选择最佳决策。


当然 - 这是一个实现(它更复杂 - 因为你需要注意所有可能的 cases/scenarios 和可供性):

Dijkstra's algorithm in python https://www.bogotobogo.com/python/python_Dijkstras_Shortest_Path_Algorithm.php