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 个选项:
- 选择第一个最小函数 returns,在这种情况下,这取决于您表示图表的方式。
- 随机选择一个,但这也无济于事
- 递归输入下一个节点,那不就成了DFS(深度优先搜索)吗
实在是不知道怎么操作了,谢谢阅读
(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
in Dijkstra's Algorithm(求最短路径),当你分析了从当前节点出发的所有未被访问的路径,并找到了它们的暂定距离。您必须 select 下一个要到达的节点,这是通过 select 具有最短暂定距离的节点来完成的。这很容易,除非有多个相同长度的路径。例如在这张图中:
如果我们尝试从节点 0 到节点 5,有两条路径,首先我们到节点 4,然后我们必须在 6 和 8 之间进行选择。这很复杂,算法会在两者之间进行选择长度为 10.
的路径我看到 3 个选项:
- 选择第一个最小函数 returns,在这种情况下,这取决于您表示图表的方式。
- 随机选择一个,但这也无济于事
- 递归输入下一个节点,那不就成了DFS(深度优先搜索)吗
实在是不知道怎么操作了,谢谢阅读
(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