RRT,RRT*,A*,Dijkstra,PRM算法

RRT
实现:给定一个node_start, node_goal,随机选择一个node_rand,在node_list列表里选择一个离node_random最近的点设置为node_nearest,然后沿着node_nearest朝node_random走step_length距离,找到一个node_new, 将其加入node_list。
重复上述过程直到找到一个node_new接近node_goal,然后再在得到的node_list中找到从node_start到最后一个node_new的列表就构成了path。
优势:速度较快,概率完备
劣势:通常不是最优路径

https://blog.csdn.net/u013528298/article/details/80546175

RRT*:
实现原理于RRT,基本相同,但是RRT的最优化的版本。
1 不同:RRT会记录每个顶点相对于其父顶点移动的距离。 这称为顶点的cost()。 在图中找到最近的节点后,将检查距新节点固定半径内的顶点邻域。 如果找到比近端节点更便宜的 cost() 节点,则更便宜的节点替换近端节点。
2 不同:RRT
树的重新布线,当新的顶点连接到更便宜的节点后,再次检查新节点固定半径内的顶点,如果将其连接到新的顶点后(即将新的节点当作父节点)会使得其cost降低,则将新节点当作此节点的父节点连接上去。

Dijkstra
实现:从绿色start开始对每个栅格进行遍历,即对每个栅格的cost进行更新,一直迭代遍历到黄色的goal为止,然后从goal再反向查找start即得最优路径。
在这里插入图片描述

优势:简单
劣势:环境太大的话,算法复杂度较高
https://www.guyuehome.com/5652
https://www.guyuehome.com/33665

A*算法
实现:相对于Dijkstra算法,增加了每个节点到目标点的启发函数,根据启发函数构建最小代价的节点。
优势:相对Dijkstra算法较快
劣势:当目标较多的时候,会带入大量重复数据和复杂的估价函数

A*算法和Dijkstra算法的比较
Dijkstra算法计算源点到其他所有点的最短路径长度,A关注点到点的最短路径
Dijkstra算法的实质是广度优先搜索,是一种发散式的搜索,所以空间复杂度和时间复杂度都比较高。对路径上的当前点,A
算法不但记录其到源点的代价,还计算当前点到目标点的期望代价,是一种启发式算法,也可以认为是一种深度优先的算法。

PRM算法
相较于Dijkstra算法,PRM只是采样了一个地图中的一堆点,来进行A*等搜索算法的路径搜索。
优势:算得比较快
劣势:概率不完备

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值