网站首页 > 技术教程 正文
前段时间用C++简单的写了一个走迷宫的小游戏,但是一直没有实现求最短路径的算法,今天抽空看了一下A*算法,就简单的实现了一下,下面写一些代码的思路和实现的步骤。
A*算法;A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。
其实总结就是根据每个节点的权值选最优,那么怎么计算权值呢?
权值 :F = G + H;
移动距离:G(地图中水平垂直移动就+1,以此类推)
曼哈顿距离F:就是到终点的水平距离和垂直距离的和
计算的权值怎么处理这些节点信息呢?
在A*算法中,设置了两个列表,一个是开启列表另一个是关闭列表,将遍历当前节点周围所有节点(计算F值),并加入开启列表中,然后将当前节点放入关闭列表中。
怎么维护开启列表中的结点?
使用优先队列,C++中提供了priority_queue直接使用,要注意重载操作符
到此基本的思路有一个大概了,剩下的就是一些边边角角的处理,比如障碍的判断,是否超出范围以及对每一个访问过的结点visited数组的设置等。
下面有一张图体现A*算法搜索的方法(1为通路,起点(0,1) 终点(9, 19))
可以发现每一次都会搜索附近的8个结点(忽略已标记的结点)
有需要源码的小伙伴可以在下方留下邮箱,有错误的欢迎指正交流,谢谢~
猜你喜欢
- 2024-10-25 AMEYA360报道:智能扫地机器人 SLAM技术与A算法
- 2024-10-25 基于LFOA算法的相关向量机核参数优化
- 2024-10-25 定积分的换元法与分部积分法 定积分的换元和分部
- 2024-10-25 Apriori算法是什么?适用于什么情境?
- 2024-10-25 用Python写一个A*搜索算法含注释说明
- 2024-10-25 浅谈什么是分治算法 浅谈什么是分治算法是什么
- 2024-10-25 技术分享 | Prometheus避障—A_star算法代码阅读
- 2024-10-25 浅析机器人学位置与姿态之坐标系绕任意轴线旋转算法
- 2024-10-25 一文简介常见的机器学习算法 常见机器学习算法
- 2024-10-25 欧几里得算法 最大公约数欧几里得算法
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)