A*搜索算法 | AI生成和翻译
A*(A星)搜索算法是一种广泛应用于计算机科学和人工智能领域的路径查找与图遍历算法。它常用于在图中寻找从起点(或节点)到目标点的最短路径,同时高效地探索可能的路径。
A* 结合了 Dijkstra 算法(保证找到最短路径)和 贪心最佳优先搜索(试图尽快找到目标)的特点。其核心在于同时使用到达节点的实际成本(从起始节点出发)以及从该节点到目标的启发式估计值。
A* 算法工作原理:
- 初始化开放列表:开放列表存储待探索的节点,初始时仅包含起始节点。
- 计算评分:为开放列表中的每个节点计算两种评分:
- g(n):从起始节点到达当前节点的实际成本
- h(n):从当前节点到目标的启发式估计值(根据具体场景设定,如直线距离或欧几里得距离)
- f(n) = g(n) + h(n):总预估成本,用于确定节点优先级。优先探索 f(n) 值最低的节点
- 扩展最优节点:选择 f(n) 值最低的节点进行探索,并将其移入“封闭列表”(已探索节点集合)
- 检查相邻节点:算法会检查当前节点的相邻节点。若相邻节点未被访问过或存在更低成本的访问路径,则将其加入开放列表
- 重复执行直到抵达目标节点或开放列表为空(表示路径不存在)
核心构成要素:
- g(n):从起始节点到当前节点的实际成本
- h(n):从当前节点到目标的启发式估计值(根据问题类型可变)
- f(n) = g(n) + h(n):决定节点探索优先级的综合成本
启发函数:
启发函数对 A* 算法的效率至关重要。在基于网格的路径查找中,常用曼哈顿距离(水平与垂直距离之和)或连续空间中的欧几里得距离(直线距离)作为启发函数。
典型应用场景:
- 导航系统(如GPS)
- 游戏与人工智能(角色或智能体的路径规划)
- 机器人学(用于规划高效移动路径)
总而言之,A* 算法通过系统性地结合已知成本和未来预估成本进行路径探索,在确保可能性的前提下找到最优解,因而具有卓越的效率。