算法简介

A*算法本质上是一种启发式的搜索算法

  • 启发式: 即有一定的评价指标来引导算法运行,从而尽可能得到最优解。
  • 搜索算法: 已知起点和终点,但是过程路径未知,我们要去通过一定的方法(启发式的方法)来找到最优路径的一种算法。

从以上概念可以看出,应用该算法时:

  • 已知条件
    • 起点位置
    • 终点位置
  • 待求解量:
    • 最优路径(即每个最优路径点的集合)
  • 方法:
    • 启发式的评价指标(即某个启发函数或叫代价函数,就是该算法的核心公式

水电费

算法核心公式(启发函数\代价函数)

启发函数\代价函数公式

在这里插入图片描述

  • f(n)节点n的综合代价。当我们选择下一个最优的节点时,我们总会选取综合代价最小的节点
  • g(n)节点n距离起点的代价
  • h(n)节点n距离终点的估计代价

A*算法通过代价函数来计算每个节点的代价,从而选择代价最小的那一个节点进行移动。

预估距离函数h(n)

关于距离的计算,主要有两种方法:

  • 欧式距离,即物体移动时可以朝八个方向移动,其计算公式如下:
    在这里插入图片描述

  • 曼哈顿距离,即物体移动时只能朝四个方向移动,不能斜向移动,其距离计算公式如下:
    在这里插入图片描述

一般采用欧式距离更为灵活,可以根据自己的需要进行选择。

算法简单实现思路

(1)已知条件
  起点位置(S)
  终点位置(E)
(2)待求解量
  周围下一个潜在最优节点的代价值(根据代价函数算得)
(3)代价函数
  f(n) = g(n) + h(n)
(4)实现过程

这里采用欧式距离进行实现:

  1:初始化操作:
	 - 起点、终点坐标
	 - 地图尺寸
	 - 障碍物个数和位置
  2:寻路主程序(循环,直至到达终点):
    (1)计算当前点周围的八个点的代价值f(n)
    (2)选择代价值最小的点作为下一个点(如果是障碍物则忽略)

参考文章:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐