JumpPointSearchPlus with GoalBounding 学习笔记

本文是关于A*搜索算法与Jump Point Search结合Goal Bounding的学习笔记,详细介绍了这两种寻路算法的基本概念、原理及实现细节,包括节点的评估、开放列表和关闭列表的管理,以及Jump Point的四种类型。文章通过实例解释了如何减少搜索空间,提高路径查找效率。
摘要由CSDN通过智能技术生成

应该是个人理解能力有限吧,经过两周的研究,总算还有点结果,下面是这个的一点学习笔记,还在继续研究,会继续补充的.
如需转载请注明出处
http://blog.csdn.net/u010140575/article/details/54319322
基础知识
a star search

如下图,红色的格子是目标格子,绿色的格子是起点格子,黄色的线就是通过的路径,红色箭头就是物体移动的方向。
这里写图片描述
a* 每个节点有两个数值,下面称探索到的节点为当前格子节点(current node)。
1.current到终点的预估花费,因为不是最总走的路径,在探索的时候只能知道预计的值。假设当前点为下图蓝色的点,到红色点的预估值(H值)为5,因为最开始不知道右边是不能行走的区域。
2.从起点到current的实际花费值(g值),这个值是准确的值,每个节点都存放着各个方向上的节点到当前节点的所需要的花费(这个花费不仅仅是路径长度,还有可能是行走消耗的资源金钱等,这里仅仅指路径长度)为父节点g值+当前节点g值,这样就可以保证每次计算的值都是准确的值。
这里写图片描述
算法描述;
1,找到起点,确定起点所在的格子,并将其放入到开启列表中(openlist,是用于存放我们将要处理的点),计算终点所在的格子
2,当openlist.size>0的时候循环以下操作
2.1从开启列表中取出一个节点命名为当前节点(current node)并从开放列表中删除当前节点(要开始处理了),并放到关闭列表中(用于存放已经处理过的节点),判断当前节点是否是终点所在的节点,是则退出循环,不是则继续
2.2判断当前节点的每一个邻居节点的状态(邻接节点)进行判断:
2.2.1如果已经在关闭列表中或者当前节点不能通行,则继续,进行下一个节点;
2.2.2如果不在开启列表中,那就是还没处理过这个节点,这怎么能行,怎能漏掉,赶紧放进去,并把该邻接节点的父节点指针指向当前节点,告诉邻居我是你baba~就是找到爹就能找到儿子了~哈,并计算邻接节点的g值,h值
2.2.3如果已经在开启列表中了,那就表示这个邻居已经被处理过一次了,也就意味着有两个父节点。那怎么能行,怎么可以有两个爹,快比较一下哪一个爹更合理,也就是重新计算父节点到邻接节点的g值,如果新计算的g值比原来的更小说明新爹好,重置父节点,否则就是老爹好。
2.3按着以下规则进行排序,f=g+h;按着f值由大到小的方式进行排序,每次取值的时候也是取f值最小的节点。
3循环停止了,openlist中节点数目大于0,目标节点已经在关闭列表中了,意味着找到了路径了.如果openlist空了,那就是没有找到可以通过的路径

参考网址: http://www.cnblogs.com/bugrabbit/p/5049827.html

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值