A*算法的实际应用

编程入门 行业动态 更新时间:2024-10-08 13:28:32

A*<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法的实际应用"/>

A*算法的实际应用

A*算法的设计

A*算法,A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。

 

 

 

A* [1]  (A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是许多其他问题的常用启发式算法。注意——是最有效的直接搜索算法,之后涌现了很多预处理算法(如ALT,CH,HL等等),在线查询效率是A*算法的数千甚至上万倍。

公式表示为: f(n)=g(n)+h(n),

其中, f(n) 是从初始状态经由状态n到目标状态的代价估计,

g(n) 是在状态空间中从初始状态到状态n的实际代价,

h(n) 是从状态n到目标状态的最佳路径的估计代价。

(对于路径搜索问题,状态就是图中的节点,代价就是距离)

h(n)的选取

保证找到最短路径(最优解的)条件,关键在于估价函数f(n)的选取(或者说h(n)的选取)。

我们以d(n)表达状态n到目标状态的距离,那么h(n)的选取大致有如下三种情况:

  1. 如果h(n)< d(n)到目标状态的实际距离,这种情况下,搜索的点数多,搜索范围大,效率低。但能得到最优解。

  2. 如果h(n)=d(n),即距离估计h(n)等于最短距离,那么搜索将严格沿着最短路径进行, 此时的搜索效率是最高的。

  3. 如果 h(n)>d(n),搜索的点数少,搜索范围小,效率高,但不能保证得到最优解。 [2]

(网图)

 

 

 

核心思路是将地图网格化,思考现实的应用性,机器人自动寻路,如果是较为固定的环境可以直接将地图

网格化之后利用结构体数组存入机器人(这里考虑使用单片机控制的机器人)

 

其他语言编程的控制器可以考虑更加高效的数据结构,但始终将一个网格看做是一个对象,具有坐标,访问与否 fhg值

等等

然后构建a*算法,启发函数可以好好研究,目前代码发现两点间距离就挺好

 

算法如果优化不好很难在mcu上面运行起来,这里采用上位机计算,然后和mcu通讯。

 

 

 

 

更多推荐

A*算法的实际应用

本文发布于:2024-02-06 06:27:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1747068.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法   实际应用

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!