(Visual Navigation)路径规划算法(二)Dijkstra改进 A*算法

栅格地图

  • 栅格地图取值原理
    在这里插入图片描述

  • 下面是构建一个栅格地图的基本过程

  • 膨胀障碍物的意义是构建像上图的非自由区域
    在这里插入图片描述

  • 即直线移动的代价g(n)为1 斜边为根号2
    在这里插入图片描述

回顾Dijkstra算法

  • 下图中的g(n)为节点到节点之间的代价
  • eg:节点① 到节点④的代价为 1
  • Dijkstra算法仅仅以g(n)为驱动函数
    在这里插入图片描述

A*算法

A*算法引入h(n)为启发式函数

  • 下图中为Dijkstra算法的结果 由于栅格地图中每个节点之间的g(n)都 == 1故Dijkstra算法会将收录节点向四周扩散 故结果显示整片地图上很多不相关的节点都会被收录进来 大大增加了工作量
    在这里插入图片描述

伪代码对比

  • 右边引入启发函数减少规划过程中不必要的节点收录
    在这里插入图片描述

以欧氏距离(即起始点和目标点之间的直线距离)为启发式函数的结果

  • 可以看到明显减少了很多不必要的节点的收录
    在这里插入图片描述

A*算法应用的保证最优化要求

  • 启发函数需要小于最短路径
  • 下图为一个不正确的例子 假如到达节点②的h(2)= 6 那么算法就会收录③节点(代价为5+0)而不选择实际的最短路径②节点(代价为1+6)
    在这里插入图片描述

当没有障碍物的时候可以更看出A*算法的优势

  • 此时启发式函数h(n)为欧氏距离 故A*算法基本没有收录其他无关节点
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值