A*搜索算法是一种流行的路径查找和图解转录技术,用于机器人,游戏开发,网络路由等各种应用中. 它结合了统一成本搜索和贪婪最先搜索的特征,以高效地找到从起始节点到目标节点的最短路径. 本指南提供了一步步执行A*算法的过程,并用实例计算来说明每个阶段.

理解A* 算法

A*算法使用成本函数,f(n)=g(n)+h(n),其中:

  • g(n):] 从起始节点到节点n的实际成本.
  • h(n): 从节点n到目标的成本的热度估计.

该算法探索了f(n)值最低的节点,平衡了实际成本和估算成本,以高效地找到最佳路径.

分步执行

遵循这些步骤执行A*算法:

1. 初始化开放和封闭名单

打开列表包含要评价的节点, 从初始节点开始。 关闭列表包含已经评价的节点 。

2. 选择 f(n) 最低的节点

从打开列表中删除此节点, 并添加到关闭列表中 。

3. 产生邻近的节点

为每个邻居计算 g(n) 和 h(n) 。 如果邻居不在打开列表中, 或者有一个下格(n), 请更新其值并将其父创建到当前节点 。

4. 重复,直至实现目标

继续进程,直到目标节点被添加到关闭列表中,表明找到最短路径.

示例计算

考虑一个简单的网格,带有起始节点A和目标节点G. heuristic h(n)是直线距离。 初始计算如下:

从节点A开始,g(A)=0,h(A)=4. f(A)=4. 相邻的节点B和C被评价: 1.

对于节点B:g(B)=g(A)+成本(A,B)=0+1=1,h(B)=3,f(B)=4.

对于节点C:g(C)=1,h(C)=2,f(C)=3. 节点C有最低的f(n),因此它被选中下一个.

这一过程仍在继续,更新g,h,和f值,直到目标节点G用所查明的最短路径到达.