3.A星寻路算法的基本原理

  1. 3.A星寻路算法的基本原理
    1. 3.1 题目
    2. 3.2 深入解析
      1. 关键点
      2. 基本原理
    3. 3.3 答题示例
    4. 3.4 关键词联想

3.A星寻路算法的基本原理


3.1 题目

请简单描述A星寻路算法的基本原理。


3.2 深入解析

关键点

  1. 寻路消耗公式
    f(寻路消耗)=g(离起点距离)+h(离终点距离)
  2. 开启列表:记录待检查的节点。
  3. 关闭列表:记录已检查的节点。

基本原理

A星(A*)是一种启发式图搜索算法,常用于网格/导航图寻路。在启发函数 h 可采纳(不高估实际代价)等前提下,能保证得到最优路径;其基本原理如下:

  1. 初始化

    • 将起点加入开启列表。
    • 设定起点的g值为0,h值为起点到终点的估算距离。
  2. 循环过程

    • 从开启列表中取出f值最小的节点作为当前节点。
    • 将当前节点从开启列表移到关闭列表。
    • 检查当前节点的所有相邻节点:
      • 如果相邻节点是终点,则路径找到,算法结束。
      • 如果相邻节点不在关闭列表中,计算其g值和h值,并将其加入开启列表。
      • 如果相邻节点已在开启列表中,检查新的g值是否更小,如果是则更新该节点的g值和父节点。
  3. 结束条件

    • 如果开启列表为空,则表示没有找到路径。
    • 如果找到终点,则可以通过节点的父节点链回溯到起点,得到完整路径。

3.3 答题示例

“A* 算法是基于启发式搜索的图遍历算法,它为每个节点维护:

  • g:从起点移动到该节点的实际代价,
  • h:该节点到终点的估算代价(启发式函数,如曼哈顿距离),
  • f = g + h:总估算代价。

核心流程:

  1. 将起点放入“开启列表”;

  2. 每次从开启列表取 f 最小的节点作为当前节点,移到“关闭列表”;

  3. 对其相邻节点计算 g、h 和 f:

    • 若相邻节点未入开启或关闭列表,则加入开启列表;
    • 若已在开启列表且新 g 更小,则更新其 g 和父节点;
  4. 重复直到遇到终点或开启列表空。

最终通过父节点指针从终点回溯到起点得到路径;若 h 可采纳,该路径为最优解。”


3.4 关键词联想

  • 启发式函数(Heuristic)
  • g(n) = 起点→当前代价
  • h(n) = 当前→终点估算
  • f(n) = g + h
  • 开启列表(Open Set)
  • 关闭列表(Closed Set)
  • 曼哈顿距离 / 欧氏距离
  • 节点回溯(Parent Pointer)
  • 最短路径
  • 优先队列(Priority Queue)


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏