狄杰斯特拉算法 vs A_star 算法

杂谈

狄杰斯特拉算法(以下简称为D 算法)和A* 算法,网上的学习资料很多,在此不在赘述。以下做出几点总结:

1、D 算法 是可以可以获取一个全局最优解。

2、但是A* 算法 只有在 启发代价h <= 当前位置到终点的实际代价的时候 ,才能获得全局最优解。3、当h(n)的值越小,算法将遍历越多的节点,也就导致算法越慢。并且 当启发代价h =0的时候,算法会退化成D 算法。如果h(n)完全等于节点n到终点的代价,则A算法将找到最佳路径,并且速度很快。可惜的是,并非所有场景下都能做到这一点。因为在没有达到终点之前,我们很难确切算出距离终点还有多远。

4、如果h(n)的值比节点n到终点的代价要大,则A*算法不能保证找到最短路径,不过此时会很快,类似BFS。

算法流程

两者流程很相似,伪代码如下:

1、定义 openlist,和closelist
2、将start 点加入到openlist
3、if openlist 不为空
      从openlist 中选择总代价最小的节点,作为cur节点
      if cur 节点 = 目标节点,则退出算法,回溯生成路径。
      将cur 从openlist 中删除,加入closelist
      遍历cur的周边节点
      if 该节点在closelist 中,或者是障碍物,则 跳过该节点
      if 该节点 不在openlist中,或者该节点算出的代价,比openlist中原本的代价小
         更新openlist中的节点
     
      

可运行的c++ 代码,参考如下:

GitHub - KJsouth/A_star

效果对比:

1、D 算法

2、 A*

结论:两者都可以计算出最优结果,但是A* 比D快很多。

参考:

 Introduction to the A* Algorithm

自动驾驶路径规划——A*(Astar)算法_yuan〇的博客-CSDN博客_astar路径规划 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值