A星算法4邻域8邻域16邻域路径规划

一、环境建模

  1. 地图表示方式
    使用二维网格地图(Grid Map)表示搜索空间,令地图大小为 M×NM \times N,每个网格代表一个节点。

    • 值为 0 表示可通行区域,1 表示障碍物。

    • 起点记为 S(x_s, y_s),终点记为 G(x_g, y_g)

  2. 邻域定义

    • 4邻域:上下左右四个方向 (0,1),(1,0),(0,−1),(−1,0)(0,1), (1,0), (0,-1), (-1,0)

    • 8邻域:增加对角线 (1,1),(−1,1),(−1,−1),(1,−1)(1,1), (-1,1), (-1,-1), (1,-1)

    • 16邻域:引入更远的方向,如 (2,1),(1,2),(−2,1),(−1,2),…(2,1), (1,2), (-2,1), (-1,2), \ldots,共16个可选方向,需设定合理代价。


二、代价函数设计

A星算法核心使用以下总代价函数:

f(n)=g(n)+h(n)f(n) = g(n) + h(n)

  • g(n)g(n):从起点到当前节点 nn 的实际代价

  • h(n)h(n):从当前节点 nn 到目标点的启发式估计(启发函数)

常用启发函数:

  • 4邻域:曼哈顿距离 h(n)=∣x−xg∣+∣y−yg∣h(n) = |x - x_g| + |y - y_g|

  • 8邻域:对角线距离或欧几里得距离

  • 16邻域:可使用欧几里得距离,也可根据方向设定分段代价函数


三、A星搜索流程

  1. 初始化开放列表和封闭列表

    • 开放列表存储候选节点(按照 f 值排序)

    • 封闭列表记录已访问节点

  2. 主循环逻辑

    • 每次从开放列表取出 f 最小节点

    • 如果该节点为终点,终止并回溯路径

    • 否则对其邻居执行:

      • 若不在封闭列表中,计算 g、h、f 值

      • 判断是否更新已有路径(若 g 更小)

  3. 路径回溯

    • 终点找到后,通过每个节点的父节点回溯路径


四、建模扩展考虑

  • 节点代价权重可扩展为非均匀地图(如泥泞、草地等)

  • 邻域跳跃代价设计:16邻域中,远跳应设更高的 g 增量

  • 可视化建模:使用 Python 的 matplotlibpygame 可视化路径搜索过程

  • 障碍膨胀(Obstacle Inflation):模拟真实导航中安全边距


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI Dog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值