什么是A*算法?A*算法是怎么工作的

发布:2022-10-11 19:20:01
阅读:3711
作者:网络整理
分享:复制链接

A*算法它是一种搜索算法,用于找到初始点和最终点之间的最短路径。

通常用于地图遍历以找到最短路径。A*算法最初被应用于图遍历,用来帮助机器人规划移动路线。

A*算法会优先搜索最短的路径,完整运行算法后,会找到问题的所有可能结果,进而找到问题的最低成本结果,使A*算法如此强大的另一个方面是在实现算法的过程中使用了加权图。加权图使用数字来表示采取每条路径或行动方案的成本。这意味着算法可以选择成本最低的路径,并在距离和时间方面找到最佳路径。

A*算法的一个主要缺点是其空间和时间复杂度。存储所有可能的路径需要大量空间,并且需要大量时间来查找它们。

为什么选择A*搜索算法?

A*搜索算法是一种简单高效的搜索算法,可用于查找图中两个节点之间的最优路径。它将用于最短路径查找。它是Dijkstra最短路径算法的扩展。这里的扩展是,我们不是使用优先级队列来存储所有元素,而是使用堆(二叉树)来存储它们。A*搜索算法还使用启发式函数,提供关于我们离目标节点多远的附加信息。

通过上述加权图,我们可以发现不同的节点,而A*算法必须采用这些节点才能到达最终节点。这些节点之间的路径都有一个数值,被认为是路径的权重,所有横向路径的权重总和可以视为该路径的成本。

A*算法如何工作?

以上述加权图为例,假设从节点A开始,去节点D,以A*算法来计算最短路径。

现在,由于起点在节点A,它将具有一些初始启发式值。因此,结果是

f(A)=g(A)+h(A)

f(A)=0+6=6

接下来,取到其他相邻顶点的路径:

f(AB)=1+4

f(AC)=5+2

现在从这些节点获取到目的地的路径,并计算权重:

f(ABD)=(1+7)+0

f(ACD)=(5+10)+0

很明显,节点B提供了最佳路径。

扫码进群
微信群
免费体验AI服务