JPS(Jump Point Search)寻路及实现代码分析

JPS(Jump Point Search)寻路

参考资料:2018腾讯移动游戏技术评审标准与实践案例
https://blog.csdn.net/yuxikuo_1/article/details/50406651
http://blog.sina.com.cn/s/blog_4a5c75d40102wo5l.html
https://github.com/SkylerAlvarez/JumpPointSearch


一、什么是Jump Point Search?

JPS 又名跳点搜索算法(Jump Point Search),是由澳大利亚两位教授于 2011年提出的基于 Grid 格子的寻路算法。JPS算法在保留A算法的框架的同时,进一步优化了 A算法寻找后继节点的操作。

个人理解,A*是寻找所有的当前点的邻居,会有频繁的点集合加入和删除到点集合操作,jps的优点是会根据当前点的方向及当前点周围邻居的特点进行选择某些特殊的点才执行加入和删除到点集合操作。

JPS类比于KMP算法,有个共同点在于把重复多余的计算通过数据的特性省略,kmp中的next数组是对子字符串的特性的记录,在匹配时根据这些特性跳过多余的计算。jps也是根据邻居点的特性跳过其他多余的点。

这个也是多数优化算法的一个方式。

从论文中的图也可以看出这个特点,M.Time 表示操作 openset 和 closedset 的时间,G.Time 表示搜索后继节点的时间。可见 A*大约有 58%的时间在操作 openset 和 closedset,42%时间在搜索后继节点;而 JPS 大约 14%时间在操作 openset 和 closedset,86%时间在搜索后继节点。
在这里插入图片描述

二、寻路流程

P S : 本 文 定 义 无 法 直 接 走 到 斜 对 角 , 比 如 ( 1 , 1 ) 点 无 法 直 接 走 到 ( 2 , 2 ) 点 , 需 要 的 话 也 可 以 , 要 改 点 逻 辑 \color{red}{PS:本文定义无法直接走到斜对角,比如(1,1)点无法直接走到(2,2)点,需要的话也可以,要改点逻辑} PS:

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值