1_Grassfire Algorithm_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

烧草算法是一种用于寻找网格中两点间最短路径的方法,类似于BFS。它从目标点开始,逐步标记相邻节点,直到到达起点。算法具有完备性,即存在路径则必能找到最短路径,不存在则能发现。计算量与节点数量成线性关系,但随着维度增加,计算需求指数级增长。适用于机器人路径规划等场景。

用0作为距离值标记目标节点,给所有距离目标节点1步的点标上1,距离2的标上2…以此类推,直至抵达起点。
在这里插入图片描述

对于网格中的节点,标上的距离值代表的是从这个点走到目标点的最少步数。会发现这些数字从目标点向外辐射,就像火势蔓延一样,也即GrassFire名称的由来。

实际上,能够实现这种算法主要是依靠建立一个节点网络。每次在算法进行迭代时,就将第一个节点从列表中取出,再将其所有还未访问过的相邻点标记上当前点标记数值加1的值,然后把这个节点加入到这个列表的未尾(也就是作为终点),下图所示概述了伪代码中的标记算法,这其实就是一个将BFS【Bread First Search】算法应用到图表中的简单例子,而其起点是例子中的终点。

在这里插入图片描述
一旦起点被标记,便可以通过递归地移动到临近单元格而花费最小步数的方式,来构建起抵达目的地的最路径,这一页展示的是一个用这种方法构建的,从起点到终点的路径,注意如果目的地点的两个相邻点含有相同的距离标记值,你可以任意选择。这种情况会在抵达终点的最短路径不是唯一的时候出现。同样也可以通过将这个算法进行逆转,即从起始点开始然后向着终点进行迭代,并且会发现两种方法所规划出来的路径长度将相等。

在这里插入图片描述
下图是将“烧草算法”应用到另一个网格时的例子,在该例子中,若从目标点辐射的点无法进行迭代,算法便会终结。
对于这种情况,我们可以得出结论。因为问题起始点并未被标记,从起点到终点之间不存在可行路径

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值