Artificial intelligence Dijkstra vs A*结果路径

Artificial intelligence Dijkstra vs A*结果路径,artificial-intelligence,dijkstra,a-star,Artificial Intelligence,Dijkstra,A Star,当我在不同的图上运行Dijkstra和A*时,因为它们都是最优算法,所以我总是希望找到相同的路径,对吗 如下图所示: 节点:S、A、B、C、D、E、G 边缘和成本:(S,A)=1,(A,B)=1(B,C)=1, (A,E)=8,(A,D)=6,(D,G)=2 启发式:h(S)=6,h(C)=7,h(B)=6,h(A)=5,h(D)=2,h(E)=1,h(G)=0 我发现S->A->D->G都是路径。 Dijkstra和A*这条路的成本都是9 任何图都是这样,因为两者都是最优的吗? 如果我想比较这

当我在不同的图上运行Dijkstra和A*时,因为它们都是最优算法,所以我总是希望找到相同的路径,对吗

如下图所示:

节点:S、A、B、C、D、E、G

边缘和成本:(S,A)=1,(A,B)=1(B,C)=1, (A,E)=8,(A,D)=6,(D,G)=2

启发式:h(S)=6,h(C)=7,h(B)=6,h(A)=5,h(D)=2,h(E)=1,h(G)=0

我发现S->A->D->G都是路径。 Dijkstra和A*这条路的成本都是9

任何图都是这样,因为两者都是最优的吗? 如果我想比较这两种算法,我应该使用什么作为统计数据,时间似乎也是一样的

谢谢。

如果最短路径是唯一的,那么任何正确的最短路径算法都必须准确地找到该路径

在开始和目标之间存在多条路径且成本相同的图上,即使同一算法的不同实现也不能保证找到相同的路径,因为可能存在细微的差异,例如:

  • “探索”节点时,处理节点传出边的顺序
  • 从优先级队列中弹出相等值节点的顺序
  • 对于A*,由于优先级队列的排序不同,不同的正确启发式通常会导致不同的路径(成本相等)
如果我想比较这两种算法,我应该使用什么作为统计数据,时间似乎也是一样的

在足够大的图上,当你有一个好的启发式时,a*最终会表现得更好。一个常见的例子是一个没有许多无法通过的瓷砖的网格,其中Dijkstra将大致探索一个圆圈,但A*(如果给出适当的启发)将大致瞄准目标,只探索一条“粗线”。您可以在上看到这种效果

任何图都是这样,因为两者都是最优的吗

A*可以看作是Dijkstra算法的改进版本。它可以更快,因为启发式。 但A*只有在启发式函数为的情况下才是最优的,否则A*可以找到正确的解决方案,但与Dijkstra相比可能是次优的。 所以答案是肯定的,当且仅当你仔细选择你自己

如果我想比较这两种算法,我应该使用什么作为统计数据,时间似乎也是一样的

视情况而定。您想分析算法的结果路径的质量还是它们的执行速度?
如果你的启发式是好的(即可接受的),只有执行时间会改变。您可以实现这两种方法并测量执行时间。您还可以分析探索的节点数。

在不同的图形上?我猜你是指同一张图吧?