a算法和a*算法的区别_机器人路径规划之A*算法(附C++源码)

1. 基本原理

A*算法的本质是广度优先的图搜索.意在寻找一个从起点到目标节点的最短路径.

A*算法在Dijkstra的基础上加入了启发式变量,一般用启发式距离(两点的直线距离)表示.

71cc176c75b92a56b0ab9f38e789a969.png
启发式距离

2. 算法伪代码

本伪代码摘取自Principles of Robot Motion.

其中O代表优先队列,C存放着已访问过的节点.

3. 关键C++代码剖析

先来看看A*算法运行的最终结果吧

知乎视频​www.zhihu.com

首先先创建一个类代表节点(省略了构造函数等Method).

class 

在main函数中定义起始节点和目标节点

node 

初始化地图,这里计算了每个节点的启发式距离

for 

添加障碍物

void 

A*算法函数

void 

4. 资源指路

最近一直没更新就是因为在写这个A*算法,其中大部分变量和算法过程我都尽量和Principles of Motion中的说明保持一致,源代码已上传github(非工程文件,需自行配置),有不明白的可以在评论区留言,我会尽量回复.

aStar​github.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值