路径的搜索方法、装置、处理器和电子装置制造方法及图纸

技术编号:18427093 阅读:31 留言:0更新日期:2018-07-12 02:10
本发明专利技术公开了一种路径的搜索方法、装置、处理器和电子装置。其中,该方法包括:检测待寻路区域中用于表示路径起点的当前节点以及用于表示路径终点的目标节点;以当前节点为中心,沿多个方向查找每个方向上最长路径的终点对应的跳点,得到第一节点集合;在第一方向上查找跳点,得到第二节点集合;从第一节点集合和第二节点集合的所有跳点中查找目标跳点;将路径最短的路径组合确定为路径起点到路径终点的路径。本发明专利技术解决了搜索路径的效率比较低的技术问题。

【技术实现步骤摘要】
路径的搜索方法、装置、处理器和电子装置
本专利技术涉及数据处理领域,具体而言,涉及一种路径的搜索方法、装置、处理器和电子装置。
技术介绍
寻路方法用途众多,例如在游戏和地图中进行寻路。在游戏中通常会用到寻路A*方法每次从有序队列中取出优先级最高的节点,然后扩展该节点的八个邻居,直到找到目标节点为止。JPS方法每次从有序队列中取出优先级最高的点,然后扩展该点附近的跳点,直到找到目标点为止。JPS又名跳点搜索方法(JumpPointSearch),是基于Grid格子的寻路方法。JPS根据当前节点的方向、并基于跳点的策略来扩展后继节点,遵循确定强迫邻居、跳点的定义,以及确定后继节点的拓展原则,具体流程如下:一,若当前节点的当前方向是直线方向:(1)如果当前节点的左后方不可走且左方可走(即左方是强迫邻居),则沿当前节点左前方和左方寻找不在关闭节点集合的跳点;(2)如果当前节点的当前方向可走,则沿当前节点的当前方向寻找不在关闭节点集合的跳点;(3)如果当前节点的右后方不可走且右方可走(右方是强迫邻居),则沿当前节点右前方和右方寻找不在关闭节点集合的跳点;二,若当前节点的当前方向为对角线方向:(1)如果当前节点的当前方向的水平分量可走(例如当前节点的当前为东北方向,则水平分量为东),则沿当前节点的当前方向的水平分量寻找不在关闭节点集合的跳点;(2)如果当前节点的当前方向可走,则沿当前节点的当前方向寻找不在关闭节点集合的跳点;(3)如果当前节点的当前方向的垂直分量可走(例如当前节点的当前为东北方向,则垂直分量为北),则沿当前节点的当前方向的垂直分量寻找不在关闭节点集合的跳点。A*方法包括如下步骤:Step1.将起始点加入开启节点集合;Step2.重复以下工作:当开启节点集合为空,则结束程序,此时没有路径。寻找开启节点集合中F值最小的节点,设为当前点关闭节点集合,从开启节点集合中移出当前点关闭节点集合;关闭节点集合中加入当前点关闭节点集合;若当前节点为目标节点,则结束程序,此时有路径生成,此时由目标节点开始逐级追溯路径上每一个节点x的上一级父节点parent(x),直至回溯到开始节点,此时回溯的各节点即为路径。对当前节点的八个方向的每一个相邻节点来说,如果相邻节点不可通过或者已经在关闭节点集合中,略过。如果相邻节点不在开启节点集合中,加入开启节点集合中;如果相邻节点在开启节点集合中,G值判定,若此路径G值比之前路径小,则相邻节点的父节点为当前节点,同时更新G值与F值。反之,则保持原来的节点关系与G值、F值。G值表示从起点到当前点路径耗费;H值表示不考虑不可通过区域,当前点到终点的理论路径耗费,其中,F=G+F。下面举例说明JPS具体的寻路流程。如图1所示,5*5的网格,黑色代表阻挡区,白色代表无阻挡区,S为起点,E为终点。JPS要寻找从S到E的最短路径,首先初始化将S加入开启节点集合。从开启节点集合取出F值最小的点S,并从开启节点集合删除,加入关闭节点集合,S的当前方向为空,则沿八个方向寻找跳点,在该图中只有下、右、右下三个方向可走,但向下遇到边界,向右遇到阻挡,因此都没有找到跳点,然后沿右下方向寻找跳点,在G点的父节点为S,praent(G)到S为对角线移动,并且G经过垂直方向移动(向下移动)可以到达跳点I,因此G为跳点,将G加入开启节点集合。从开启节点集合取出F值最小的点G,并从开启节点集合删除,加入关闭节点集合,因为G当前方向为对角线方向(从S到G的方向),因此在G点的右、下、右下三个方向寻找跳点,在该图2中只有向下可走,因此向下寻找跳点,找到跳点I,将I加入开启节点集合。从开启节点集合取出F值最小的点I,并从开启节点集合删除,加入关闭节点集合。因为I的当前方向为直线方向(从G到I的方向),在I点时I的左后方不可走且左方可走,因此沿下、左、左下寻找跳点,但向下、左下都遇到边界,只有向左寻找到跳点Q,因此将Q加入开启节点集合。从开启节点集合取出F值最小的点Q,并从开启节点集合删除,加入关闭节点集合,因为Q的当前方向为直线方向,Q的左后方不可走且左方可走,因此沿右、左、左上寻找跳点,但向右、左上都遇到边界,只有向左寻找到跳点E,因此将E加入开启节点集合。从开启节点集合取出F值最小的点E,因为E是目标点,因此寻路结束,路径是S、G、I、Q、E。可。上述的JPS寻路效率是明显快于A*的方法,原因在于:在从S到A沿垂直方向寻路时,在A点,如果是A*方法,会将F、G、B、H都加入开启节点集合,但是在JPS中这四个点都不会加入开启节点集合。对F、G、H三点而言,因为从S、A、F的路径长度比S、F长,所以从S到F的最短路径不是S、A、F路径,同理S、A、G也不是最短路径,走到A后不会走到F、G,所以F、G不会加入开启节点集合,虽然S、A、H是S到H的最短路径,但因为存在S、G、H的最短路径且不经过A,从S走到A后,下一个走的点不会是H,因此H也不会加入开启节点集合;对B点而言,B不是跳点,也不会加入开启节点集合,直接走到C即可。避免在开启节点集合中加入太多点,从而避免过多的排序是JPS比A*快的原因,实际上在从S到E的寻路过程中,进入开启节点集合的只有S、G、I、Q、E。由此可见,虽然JPS寻路方法的效率要由于A*方法的效率,然而,这种方法需要逐个寻找跳点,导致寻找路径的效率仍然比较低。针对上述的问题,目前尚未提出有效的解决方案。
技术实现思路
本专利技术实施例提供了一种路径的搜索方法、装置、处理器和电子装置,以至少解决搜索路径的效率比较低的技术问题。根据本专利技术实施例的一个方面,提供了一种路径的搜索方法,包括:检测待寻路区域中用于表示路径起点的当前节点以及用于表示路径终点的目标节点;以所述当前节点为中心,沿多个方向查找每个方向上最长路径的终点对应的跳点,得到第一节点集合;在所第一方向上查找跳点,得到第二节点集合,其中,目标节点处于所述第一方向,所述多个方向包括所述第一方向;从所述第一节点集合和所述第二节点集合的所有跳点中查找目标跳点,其中,所述当前节点到所述目标跳点之间的第一路径以及所述目标跳点到所述目标节点之间的第二路径的路径组合的路径最短;将路径最短的所述路径组合确定为所述路径起点到所述路径终点的路径。根据本专利技术实施例的一个方面,提供了一种路径的搜索装置,包括:检测单元,用于检测待寻路区域中用于表示路径起点的当前节点以及用于表示路径终点的目标节点;第一查找单元,用于以所述当前节点为中心,沿多个方向查找每个方向上最长路径的终点对应的跳点,得到第一节点集合;第二查找单元,用于在所第一方向上查找跳点,得到第二节点集合,其中,目标节点处于所述第一方向,所述多个方向包括所述第一方向;第三查找单元,用于从所述第一节点集合和所述第二节点集合的所有跳点中查找目标跳点,其中,所述当前节点到所述目标跳点之间的第一路径以及所述目标跳点到所述目标节点之间的第二路径的路径组合的路径最短;确定单元,用于将路径最短的所述路径组合确定为所述路径起点到所述路径终点的路径。可选地,所述第一查找单元包括:第三查找模块,用于以所述当前节点为中心,沿多个方向查找每个方向上离所述当前节点最近的跳点,其中,所述跳点包括边界节点和阻挡节点;集合模块,用于将所述每个方向本文档来自技高网
...

【技术保护点】
1.一种路径的搜索方法,其特征在于,包括:检测待寻路区域中用于表示路径起点的当前节点以及用于表示路径终点的目标节点;以所述当前节点为中心,沿多个方向查找每个方向上最长路径的终点对应的跳点,得到第一节点集合;在第一方向上查找跳点,得到第二节点集合,其中,目标节点处于所述第一方向,所述多个方向包括所述第一方向;从所述第一节点集合和所述第二节点集合的所有跳点中查找目标跳点,其中,所述当前节点到所述目标跳点之间的第一路径以及所述目标跳点到所述目标节点之间的第二路径的路径组合的路径最短;将路径最短的所述路径组合确定为所述路径起点到所述路径终点的路径。

【技术特征摘要】
1.一种路径的搜索方法,其特征在于,包括:检测待寻路区域中用于表示路径起点的当前节点以及用于表示路径终点的目标节点;以所述当前节点为中心,沿多个方向查找每个方向上最长路径的终点对应的跳点,得到第一节点集合;在第一方向上查找跳点,得到第二节点集合,其中,目标节点处于所述第一方向,所述多个方向包括所述第一方向;从所述第一节点集合和所述第二节点集合的所有跳点中查找目标跳点,其中,所述当前节点到所述目标跳点之间的第一路径以及所述目标跳点到所述目标节点之间的第二路径的路径组合的路径最短;将路径最短的所述路径组合确定为所述路径起点到所述路径终点的路径。2.根据权利要求1所述的方法,其特征在于,在第一方向上查找跳点,得到第二节点集合包括:在所述第一方向上查找中间跳点和所述中间跳点的下一级跳点;将所述下一级跳点的父节点设置为所述当前节点;将父节点为所述当前节点的所有所述下一级跳点作为所述第二节点集合。3.根据权利要求1所述的方法,其特征在于,从所述第一节点集合和所述第二节点集合中查找目标跳点包括:在所述目标跳点为所述目标节点的情况下,判断从所述当前节点到所述目标节点是否为直线路径可到达;在所述当前节点与所述目标节点之间通过直线路径不可到达的情况下,查找拐点,其中,所述当前节点与所述拐点之间为直线路径,且所述拐点与所述目标节点之间为直线路径;将查找到的拐点作为所述目标跳点。4.根据权利要求3所述的方法,其特征在于,在所述当前节点与所述目标节点之间通过直线路径不可到达的情况下,查找拐点包括:获取所述目标节点的坐标和所述当前节点的坐标在横坐标上的第一坐标差和在纵坐标上的第二坐标差;将所述第一坐标差和所述第二坐标差为坐标的节点作为所述拐点。5.根据权利要求1所述的方法,其特征在于,以所述当前节点为中心,沿多个方向查找每个方向上最长路径的终点对应的跳点,得到第一节点集合包括:以所述当前节点为中心,沿多个方向查找每个方向上离所述当前节点最近的跳点,其中,所述跳点包括边界节点和阻挡节点;将所述每个方向上的所有所述跳点集合确定为所述第一节点集合。6.根据权利要求1至5中任一项所述的方法,其特征在于,在以所述当前节点为中心,沿多个方向查找每个方向上最长路径的终点对应的跳点,得到第一节点集合之前,所述方法还包括:对所述待寻路区域内的所有节点进行编码,其中,所述编码的数据位用于表示可行进节点和不可行进节点;利用指令从所述编码中查找所述所有节点中的跳点和阻挡节点。7.根据权利要求1所述的方法,其特征在于,在以所述当前节点为中心,沿多个方向查找每个方向上最长路径的终点对应的跳点,得到第一节点集合之前,所述方法还包括:检测所述当前节点所在的当前区域和所述目标节点所在的目标区域是否在同一连通区域;以所述当前节点为中心,沿多个方向查找每个方向上最长路径的终点对应的跳点,得到第一节点集合包括:在检测出所述当前区域和所述目标区域在所述同一连通区域的情况下,以所述当前节...

【专利技术属性】
技术研发人员:王杰
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1