gpt4 book ai didi

dijkstra - 我可以使用 Prim 算法代替 Dijkstra 算法来查找最短路径吗?

转载 作者:行者123 更新时间:2023-12-02 19:14:03 25 4
gpt4 key购买 nike

我一整天都在努力理解 Dijkstra 算法并实现,但没有取得任何重大成果。我有一个城市及其距离的矩阵。我想做的是给定一个起点和一个终点,找到城市之间的最短路径。

示例:

     __0__ __1__ __2__ 
0 | 0 | 34 | 0 |
|-----|-----|-----|
1 | 34 | 0 | 23 |
|-----|-----|-----|
2 | 0 | 23 | 0 |
----- ----- -----

我开始想是否有其他方法可以解决这个问题。如果我从原点应用 Prim 算法,然后循环遍历创建的整个树,直到找到目标点,会怎样?

最佳答案

您可以应用 Prim 的算法,然后遍历生成的树,但您的答案可能是错误的。假设您有一个图,其中每条边具有相同的权重。 Prim 的算法只是在可以添加到树中的边集中选择一个最小权重边。您可能不会选择导致两个节点之间最短路径的边。假设:

     __0__ __1__ __2__ 
0 | 0 | 1 | 1 |
|-----|-----|-----|
1 | 1 | 0 | 1 |
|-----|-----|-----|
2 | 1 | 1 | 0 |
----- ----- -----

从节点 0 开始,您可以通过 Prim 选择边 0-1 和 0-2 来制作树。或者,您可以选择边 0-1 和 1-2 来制作树。在第一个边集下,您可以找到从 0 到 2 的最小长度路径,但在第二个边集下,您将找不到最小路径。由于您无法先验确定 Prim 算法中添加哪些边,因此您无法使用它来查找最短路径。

您可以考虑 Bellman-Ford算法,但除非你处理的是负边权重,否则我发现 Dijkstra 算法更可取。

关于dijkstra - 我可以使用 Prim 算法代替 Dijkstra 算法来查找最短路径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5370145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com