CN111104471B - 基于跳点路径搜索的模式数据库信息压缩方法及*** - Google Patents
基于跳点路径搜索的模式数据库信息压缩方法及*** Download PDFInfo
- Publication number
- CN111104471B CN111104471B CN201911138912.4A CN201911138912A CN111104471B CN 111104471 B CN111104471 B CN 111104471B CN 201911138912 A CN201911138912 A CN 201911138912A CN 111104471 B CN111104471 B CN 111104471B
- Authority
- CN
- China
- Prior art keywords
- point
- jumping
- nodes
- passable
- axial
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Remote Sensing (AREA)
- Software Systems (AREA)
- Instructional Devices (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于跳点路径搜索的模式数据库信息压缩方法,通过对均匀网格地图进行结构分析和模式数据库标识预计算解决面临的严峻的地图预处理复杂度问题。其中对均匀网格地图进行结构分析识别出轴向跳点和有源对角跳点;并对轴向跳点和有源对角跳点的塌缩位置进行全地图搜索,得到所有源节点和所有可通行节点之间的最优路径的初始边,并结合索引,生成预处理信息,对预处理信息进行压缩,生成压缩模式数据库。使得能够在均匀网格地图预处理代价可接受的前提下实现超快搜索速度。
Description
技术领域
本发明的基本应用领域为机器人导航和游戏人工智能中智能体的快速路径规划,技术领域主要涉及人工智能中经典的启发式搜索问题求解技术、地图空间拓扑结构提取技术等。
背景技术
在人工智能领域,机器人技术和计算机游戏智能被视为建模人类在复杂环境下的感知、规划、决策和行动能力的综合领域。近年来,各类型机器人在生产生活中广泛使用,以及学界与工业界对计算机游戏智能的重视程度逐渐提高,作为机器人和游戏非玩家角色(NPC,Non-Player Characters)各方面技术的基础,基于均匀网格(uniform grids)地图的最短路径规划技术近十年也取得了显著的进步。作为一个基础服务,很多场景中有限的计算资源需要同时应答大量智能体的路径规划请求,因此规划技术的快速响应能力最受关注。
其中最为著名的一类算法称为跳点搜索算法(JPS,Jump Point Search),当智能体在均匀网格地图上移动时,跳点搜索算法在相同起点和终点、相等长度的对称路径中,将对角移动优先路径确定为主要偏序,将不满足该原则的其他所有路径剔除在搜索空间之外。理论证明,任何可通行的两个位置之间都存在至少一条满足该规则的最短路径。被该偏序规则剔除的子节点通常可以由当前节点的父节点从更短的路径或长度相同但对角移动出现更早的路径到达。
跳点搜索算法应用A*算法时并不将中间节点加入Open表中,除非遇到需要将前进方向向其他分支扩展的节点时,才将这样的节点加入Open表中以待扩展。中间节点都将被跳过。
跳点搜索算法仅需在线处理,不涉及地图预处理,相较单纯的A*算法速度提高了一个数量级。但它的一个主要缺点是扩展节点时需要进行大量的逐行逐列的中间节点扫描和判断。基于此,JPS+在离线阶段为每一可通行节点的每一可通行方向计算和存储与通过该方向可到达的第一个跳点或障碍物的距离。这一预存信息进一步提高了搜索速度。进一步地,JPS+(P)在搜索时采用中转剪枝技术,将对角跳点视为过渡节点不加入Open表进行处理,相比JPS+一定程度降低了Open表操作次数。
通过与压缩模式数据库(CPD,Compressed Pattern Databases)技术的结合,跳点搜索算法的性能得到了大幅度提升。压缩模式数据库是用空间换时间的基于预处理的路径规划技术,在离线阶段通过以每个可通行节点为源发起Dijkstra搜索,为当前节点找到能够以最短路径到达其他所有连通节点的出边。若以矩阵M表示这一预处理得到的数据,则M[i,j]表示从第i个节点到达第j个节点的最短路径上源于节点i的第一边。为压缩这一矩阵的存储空间,SRC(Single-Row Compression)算法对其每一行(对应每一个源节点)采用RLE(Run-Length Encoding)方法进行数据压缩,一般可得到300-400的压缩比。在线进行路径规划时,SRC则在从起点开始的每一个当前节点向压缩模式数据库中检索其到达给定目标点的最佳移动,从而迭代得到完整的最短路径。其中的每一次检索都需要在对应行压缩数据中进行二分查找。SRC因为完全不需要进行A*算法的在线搜索,检索效率非常高。
跳点搜索算法与SRC结合产生了Topping算法,仅在关键节点上(如起点、跳点)上进行压缩模式数据库的二分查找得到最优方向,而同时访问跳点搜索的距离表得到对应方向可以重复执行的步数,从而免去了在中间节点上多余的二分查询。因为对跳点搜索距离表的访问是常数级的,Topping算法相较SRC提高了数倍的路径规划效率。需要注意地是,与SRC不同,预处理阶段的Dijkstra搜索采用了与JPS一致的diagonal-first偏序,保证两者结合的最大效益,即能将压缩模式数据库查询的次数降到最低。
这一基于离线预先计算的规划技术相对JPS+和SRC算法分别提升了一个数量级左右和数倍的性能提升,使其能够在经典测试集下取得最快平均数十微秒的搜索速度。然而,这一显著进步的代价则是必须在预处理阶段投入大量的CPU时间和存储空间。如前所述,Topping和SRC一样都需要在所有可通行点对之间执行一次修正后的Dijkstra搜索。假设某一网格地图含有n个可通行节点,则该算法的时间和空间复杂度均为O(n2),即二次复杂度。通常完成一张1024*1024规模StarCraft地图的计算需要十个小时左右的时间和数百兆甚至几个GB的存储空间。这样的代价在为路径规划指定的CPU时间和内存空间有限的应用中是不可接受的,不幸的是,机器人导航和游戏AI中一般都是这样的场景。目前,尚无研究成果能够在预处理代价可接受的前提下实现超快搜索速度。
发明内容
本发明旨在利用地图空间结构分析解决现有技术面临的严峻的地图预处理复杂度问题,地图中所有跳点位置的数量远远小于所有可通行节点的数量,因此若仅从所有跳点发起Dijkstra搜索将极大程度地减少预处理在时空两个方面的开销。
为实现上述目的,本发明提供一种基于跳点路径搜索的模式数据库信息压缩方法,具体步骤为:
S1,对均匀网格地图进行结构分析,识别出所有轴向跳点,生成轴向跳点集;
S2,根据轴向跳点集识别出所有有源对角跳点,生成有源对角跳点集;
S3,对均匀网格地图所有可通行节点进行深度优先排序,获得所有可通行节点按照位置相近程度建立的索引;
S4,以所有轴向跳点与对角跳点的塌缩位置为源节点进行全地图搜索,得到所有源节点和所有可通行节点之间的最优路径的初始边,并结合索引,生成预处理信息;
S5,对上述预处理信息进行压缩,生成压缩模式数据库。
为实现上述目的,本发明还提供一种基于跳点路径搜索的模式数据库信息压缩方法的***,包括存储器和处理器,所述存储器存储有均匀网格地图和跳点路径搜索的模式数据库信息压缩程序,所述处理器在运行所述跳点路径搜索的模式数据库信息压缩程序时执行所述方法的步骤。
采用本发明可以达到以下技术效果:
本发明通过对均匀网格地图进行结构分析和模式数据库标识预计算解决面临的严峻的地图预处理复杂度问题。对均匀网格地图进行结构分析识别出轴向跳点和有源对角跳点;并对轴向跳点和有源对角跳点的塌缩位置进行全地图搜索,得到所有源节点和所有可通行节点之间的最优路径的初始边,并结合索引,生成预处理信息,生成压缩数据库的过程,将元素之间的标识位与当前回合的标识位进行对比,若当前元素符合并入当前回合的规则,则将当前元素并入当前回合,否则重新开始一个新的回合,其中每个回合记录其所包含的所有元素的起始位置和该回合代表的最优初始边。生成压缩模式数据库。使得能够在均匀网格地图预处理代价可接受的前提下实现超快搜索速度。
附图说明
图1为本发明实施例一中主序路径分类;
图2为本发明实施例一中距离表;
图3为本发明实施例一中等价主序路径;
图4为本发明实施例一中StarCraft地图集中TheFrozenSeaMap地图;
图5,为本发明实施例一中SRC和Topping与本发明所提供的三种压缩方法的压缩效果对比。
具体实施方式
实施例一
参见图1-5,本发明实施例提供一种基于跳点路径搜索的模式数据库信息压缩方法,具体步骤为:
S1,对均匀网格地图进行结构分析,识别出所有轴向跳点,生成轴向跳点集;
S2,根据轴向跳点集识别出所有有源对角跳点,生成有源对角跳点集;
一个对角跳点可表示为一个二元组包含一个网格位置n和一个对角方向位置n由来自/>方向的移动到达,并可经过/>或/>到达某一以/>或/>为父方向的轴向跳点,或到达目标节点。同一轴向跳点可同时被多个对角跳点到达,甚至同一位置可能同时附着有不同的对角跳点,而它们都能到达同一轴向跳点。
所有符合对角方向移动优先规则的路径可以归为两类。如图1所示,第一类,为简单主序路径,如图1中<s1,t1>所示,不涉及在跳点位置的搜索方向转换,寻找最优路径时可以通过一次深度优先搜索判断。第二类称为复合主序路径,可表示为<s,(ds),s1,(d1)x1,s2,(d2)x2,s3,…,sn,(dt),t>,如图1中<s2,t2>所示,可划分为三个部分:(1)起始部分:从起点s到第一个轴向跳点s1,其中可能包含一个无源对角跳点ds;(2)中间部分:从第一个轴向跳点s1到最后一个轴向跳点sn,相邻两个之间有xi个有源对角跳点;(3)结尾部分:从sn到终点t,可能包含一个无源跳点。
S3,对均匀网格地图所有可通行节点进行深度优先排序,获得所有可通行节点按照位置相近程度建立的索引;
首先对全地图采用一次深度优先搜索对所有可通行节点排序,从而使得位置相近的节点拥有相近的索引。
建立索引的过程具体为:
第一步,以所有可通行网格位置为节点,以其可通行方向为边,基于网格地图构建图结构。
第二步,设置当前索引号为0,将其赋予某给定网格位置,以其为源节点进行深度优先搜索。每探索到一个新的节点,将索引加一赋予当前节点。直到该深度优先搜索结束为止
第三步,若仍有节点未被探索,将索引号加一赋予其中某节点,再次进行深度优先搜索并递增地赋予索引号。
第四步,重复第三步,直到所有可通行节点都获取到唯一索引号。
S4,以所有轴向跳点与对角跳点的塌缩位置为源节点进行全地图搜索,得到所有源节点和所有可通行节点之间的最优路径的初始边,并结合索引,生成预处理信息;
本发明仅将两类跳点作为源节点发起经主序思路修正后的Dijkstra搜索。同一网格位置上可能附着有多个不同类型、或同类型但元组表示不同的跳点,本发明无需根据其元组表示中的位置与父方向的不同进行重复的计算,而仅仅是将相关跳点塌缩在该位置上,针对不同塌缩位置的跳点进行预计算。
与Dijkstra一般存储起点到达其他节点的距离不同,本发明记录起点到达每一可达节点的对角优先路径上的初始边。在路径对称性较强的地图中,这样的初始边往往不止一条。将跳点作为源节点,因此可以安全地剔除初始边中不符合主序原则的边。与Topping相同,本方法同样强调Dijkstra算法打破平局(tie-breaking)的方式与JPS的对角优先偏序规则一致。这不仅是因为主序搜索可以避免在对称路径上耗费大量计算资源,更重要的是保持离线计算与在线搜索的一致性,确保CPD二分查找的次数降到最低。
S5,对上述预处理信息进行压缩,生成压缩模式数据库。
本发明所述S1轴向跳点识别步骤包括:
S11,扫描均匀网格地图中所有节点,并识别出所有节点中存在的障碍物顶点;
S12,获得所有障碍物顶点的可行对角节点;
S13,在包含障碍物顶点与该障碍点的可行对角节点的两个公共邻域节点均为可通行节点时,将该障碍点的可行对角节点识别为轴向跳点;
S14,重复步骤S13获得均匀网格地图中所有轴向跳点。
本发明所述步骤S2中有源对角跳点具有一个轴向跳点作为其父节点,由轴向跳点经过无障碍的移动到达。
本发明所述有源对角跳点识别步骤包括:
S21,计算均匀网格地图上所有可通行节点轴向跳跃距离表,该表显示每个可通行节点在轴向方向上至其他轴向跳点或障碍物的距离;
S22,计算均匀网格地图上所有可通行节点对角跳跃距离表,该表显示每个可通行节点在对角方向上至其他可通行节点的距离,该可通行节点可通过该对角方向的某一轴向分量的方向到达某一轴向跳点;
S23,以每个轴向跳点为源进行遍历,反复读取当前节点的对角距离,对角距离为正表明在该位置能够将对角方向的移动转入轴向移动,从而到达轴向跳点,则判断当前节点为有源对角跳点。
轴向跳点和有源对角跳点是构成主序路径的关键位置,因此预处理代价主要瞄准这轴向跳点和有源对角跳点。在识别出地图中所有轴向跳点后,关键在于快速提取有源对角跳点。本发明首先为地图上所有可通行节点计算跳跃距离表,如图2所示。该计算过程与节点数量成线性关系,更准确地,每个节点不会被访问超过8次,至多每个方向一次。
本发明所述S4中所述生成预处理信息具体包括:
预处理信息由二维矩阵组成,全地图所有可通行节点中的每个节点对应一列,且按照S3中得到的可通行节点索引排列;
根据索引号为次序进行排列。
每个塌缩位置对应一行所生成的预处理信息称为一类预处理信息,其中每个元素存储该行塌缩位置到达该可通行节点的最优路径的所有初始边情况,用标识位来表示;将每个塌缩位置拆分获得塌缩位置对应的所有跳点,跳点类型确定了跳点的主序扩展方向,对应行中仅取该跳点主序扩展方向与每个可通行节点初始边的交集,记录为矩阵的每个元素,生成二类预处理信息,其中每个元素存储该行跳点到达该可通行节点的最优路径的初始边情况,用标识位来表示。
每个跳点塌缩位置对应的所有跳点的信息,因此计算二类模式数据库时可以快速确定将每个塌缩位置拆分的跳点数量和类型;其次,跳点类型确定了跳点的主序扩展方向,对应行中仅取该跳点主序扩展方向与每个可通行节点初始边的交集,记录为矩阵每个元素,以待压缩。
本发明所述标识位表示该行塌缩位置/跳点的8个邻域到达该可通行节点所有最优路径的初始边情况,由8个bit位按固定顺序分别表示8个邻域的初始边情况;
当该邻域具有最优路径初始边时,该邻域对应的bit位设置为1,否则为0;
压缩过程将每行中的所有元素,压缩成为较少数量的回合,其中每个回合记录其包含的所有元素的起始位置和该回合代表的最优初始边。
每个回合记录其包含的所有元素的起始位置和该回合代表的最优初始边。压缩的结果就是将一行中的n个元素,压缩成为了较少数量的回合,压缩比一般在几百以上。
本发明与现有技术相比,发起Dijkstra搜索的次数远远降低,本发明在如何压缩模式数据库和如何处理等价主序路径上与原方法Topping有较大差别。根据处理方法的不同,本发明提出三种数据压缩方式。
如图3所示,存在两条从起点s到达目标点t的最优主序路径,分别用实线和虚线标出。网格s上附着有两个轴向跳点(s,E,S)和(s,N,W)分别用实线和虚线短箭头标出,上述两条最优路径在两个跳点的父方向下分别符合主序条件,称之为等价主序路径。因此,以s为源的Dijkstra搜索将储存两条可最优到达t的边,即向东方向E和西北方向NW。
在模式数据库中,第i行M[i,*]存储着第i个源节点到达其他所有节点的最佳初始边,按深度优先序排列。元素M[i,j]以一个字节中的8个bit位表示某一方向是否是节点i到达节点j的最优方向,从最低位到最高位依次逆时针地表示向南到向西南的所有8条边。
作为上述方案进一步的改进,步骤S5中压缩及生成压缩数据库的具体步骤包括:
在同类预处理信息中,将待压缩元素的最优初始边与该元素所在行前一元素所在回合的最优初始边进行对比,若相同,则将当前元素并入前一元素所在的回合,否则重新开始一个新的回合,其中每个回合记录其所包含的所有元素的起始位置和该回合代表的最优初始边。
作为实施例一的优选实施方式一
本发明所述第一种压缩处理方法为:一类预处理信息进行压缩生成一类模式数据库的方法包括:
S51a,在压缩当前塌缩位置对应的一行时,将该行第一个元素作为当前回合代表的最优初始边;
S52a,对该行所有元素进行循环,若当前元素与当前回合的所有bit位都相同,则将其也并入此回合;
S53a,当相邻两个元素的标识位有任一bit不同,则重新开始一个回合。
第一种压缩处理方式,为跳点塌缩的每个网格位置储存单独的一行,这种方式简称Topping+CN,CN是CollapsedNodes的首字母缩写。其中M[i,j]存储节点i到达节点j的所有等价最优边。这是因为在线查询时,访问该行的可能是附着在该位置上的任一跳点,因此不能去掉任何一个最优边。因此在压缩该行时,一旦相邻两个标识的字节有任一bit不同,都应重新开始一个新的回合。以图3为例,若M[s,t]=00100100,M[s,t+1]=00000100,上一个回合应在M[s,t]处停止,而在M[s,t+1]处开始一个新回合。
作为实施例一的优选实施方式二
本发明第二种压缩处理方法为:二类预处理信息进行压缩生成二类模式数据库的方法包括:
S51b,初始化当前回合,将当前行第一个元素的标识位作为当前回合标识位;
S52b,若当前元素与当前回合的所有bit位中至少有一个为1的bit位在相同位置,此时称为交集不为空,则将当前元素归入当前回合,并将当前回合继续向后延伸;
S53b,若当前元素与当前回合的所有bit位中没有相同位置共同为1,此时交集为空,则将当前回合在此结束,开始一个新的回合。
S54b,由于二类模式数据库中每个回合仅表示一个初始边即可,因此将其用8bit标识位压缩为表示十进制0-7的4bit标识位。
第二种方式,将每个塌缩的网格位置拆分为附着其上的所有跳点,模式数据库中为每个跳点单独存储一行,这种方式简称Topping+JP,JP是Jump Points的首字母缩写。以图3为例,在跳点(s,E,S)对应的行中,在t的位置上仅会存储在当前跳点下符合主序的最右边。即使符合条件的最优边不止一条,由于都满足主序条件,因此在压缩时可以采用贪婪的编码方式,即只要当前标识字节与当前回合中有至少一个bit位相同,即可将其归入该回合中,并将该回合的标识进一步更新。若 当从/>开始一个新回合时,可以编码为00000111;访问到/>时,取/>与当前回合的交集更新回合标识位为00000101;进一步,到下一标识交集仍不为空,因此更新回合标识位为00000100。因此该行压缩后,从该跳点到达t-1,t和t+1三个目标的最优边都唯一化为向东。
第三种压缩处理方法是在第二种方式上的变形,所述S53b中:
当前元素与当前回合的所有bit位此时交集为空时,若当前元素标识位为全零,则用通配符代替该元素标识位,该元素直接并入当前回合;
其中通配符设置为前一时刻可通行节点的元素bit位。
将不可通行节点的元素改写为与上一个可通行节点的元素bit位完全相同,则可使上一回合将此节点也并入其中。当按照跳点进行压缩时,由于其固定了父方向,因此有大量的节点无法通过主序路径到达,则存在大量不可通行节点。因此,若两个存在交集的回合被一长串不可通行节点分割时,如果将中间的所有不可通行节点也并入其中,则回合长度将大幅增加,压缩效果显著提高。
作为实施例一的优选实施方式三
第三种方式,是一种牺牲部分在线寻路效率换取预处理代价更低的平衡(trade-off)。在第二种方式中,若跳点与t之间不可达或无法通过符合主序的路径到达t,该标识应为00000000。若/>是可达标识(即含有为1的bit位),该全0标识将使得压缩过程重新开始一个回合。为进一步压缩存储空间,第三种方式将不可达标识设置为与当前回合相同的8个bit位,从而延续当前回合的覆盖范围。以第二种方式的例子继续说明,若/>为不可达标识,则将其改写为00000100,从而使当前回合进一步延续,减少需要存储的回合的个数。这种方式简称Topping+JP_WS,WS是WildcardSubstitutions的首字母缩写,即用通配符代替的意思。
上述三种方式都将很大程度降低原算法Topping的预处理代价,但彼此之间亦有差异。
如前所述,一般网格地图中两类跳点塌缩位置的数量远小于所有可通行节点的总量。因此本发明将大大地节省所需的预处理时间和空间。这里以取自https://movingai.com的通用测试集为地图,其基本信息如表1所示。其中既包含典型的游戏地图,也有人工合成的房间和迷宫。
原算法Topping与本发明中Topping+CN的预处理的实验结果如表2所示。其中,每个矩形包围盒需要上下左右四个坐标来标定它的位置,每个坐标我们采用16字节存储。结果清晰地表明,本发明所需进行的预计算Dijkstra搜索次数比Topping少1-2个数量级,因此节省了1-2个数量级的时间与空间。以最复杂的StarCraft地图为例,原算法对该75幅地图的预处理时间总计需要接近8天,消耗存储空间30个GB左右。采用本发明,仅需一天左右时间和不到4GB空间,效益极其明显。
表1实验所用地图
地图类别 | 地图数量 | 最小规模 | 最大规模 |
StarCraft游戏 | 75 | 384*384 | 1024*1024 |
DragonAge:Origins游戏(DAO) | 156 | 30*21 | 1104*1260 |
Baldur’sGateII游戏(BG) | 75 | 512*512 | 512*512 |
WarcraftIII游戏 | 36 | 512*512 | 512*512 |
表2预处理结果对比。Dijk表示算法进行Dijkstra搜索总次数,分别对应Topping算法中可通行节点总数和Topping+的跳点位置总数,单位为百万;Time表示预处理所需总时间,单位为小时;Mem表示存储包围盒所需的总内存空间,单位为MB。
由于本发明中三种模式数据库的存储和压缩方式采用相同的Dijkstra搜索过程,其耗时相近,因此仅需简要对比三种方法在存储空间需求上的差异。表3给出了它们在处理StarCraft地图集上的结果对比。
表3三种变形预处理结果对比。run表示回合,#run表示在所有75个地图上处理得到run的总数量(单位:百万),Mem表示存储CPD所需总空间(单位:MB)
Topping+CN | Topping+JP | Topping+JP_WS | |
#run | 599.97 | 626.64 | 212.42 |
Mem | 2297.99 | 2402.65 | 822.51 |
图4给出了一个具体实例。Topping按照先计算距离表、再开始APSP方式的Dijkstra搜索对其进行处理,总共以754304个节点为源进行了计算,耗费时间19.4个小时,存储几何容器需要内存1314.2MB。与之对比,Topping+按前文所述步骤,预处理过程进行了107624次搜索,耗时2.9小时,三种方式所需内存空间需要为115.76MB,127.80MB和35.60MB。
如图5所示,给出了背景技术SRC和Topping与本发明所提三种压缩方法的压缩效果对比。所用地图集为Warcraft III,图中每个数据点表示某一算法在某一地图中的平均回合长度。相比SRC,Topping因为采用了基于对角优先的Dijkstra搜索,降低了起点终点对之间的初始边数量,因此减少了压缩余地。与Topping相比,一号和二号压缩模式数据库对回合的压缩效果有效2-3倍。更为突出的是,通配符的使用极大幅度地延长了回合长度,相较SRC高出2-3倍。另外,由于本发明仅对跳点进行预处理,数据库中的行数远小于SRC和Topping,因此总体而言压缩数据库所需内存空间大幅降低。
实施例二
基于上述实施例一,本发明还提供一种基于跳点路径搜索的模式数据库信息压缩方法的***,包括存储器和处理器,所述存储器存储有均匀网格地图和跳点路径搜索的模式数据库信息压缩程序,所述处理器在运行所述跳点路径搜索的模式数据库信息压缩程序时执行上述基于跳点路径搜索的模式数据库信息压缩方法任意实施例的步骤。具体效果参见上述实施例一的技术效果,在此不再赘述。
Claims (9)
1.一种基于跳点路径搜索的模式数据库信息压缩方法,其特征在于:
S1,对均匀网格地图进行结构分析,识别出所有轴向跳点,生成轴向跳点集,所述轴向跳点识别步骤包括:
S11,扫描均匀网格地图中所有节点,并识别出所有节点中存在的障碍物顶点;
S12,获得所有障碍物顶点的可行对角节点;
S13,在包含障碍物顶点与该障碍物定点的可行对角节点的两个公共邻域节点均为可通行节点时,将该障碍点的可行对角节点识别为轴向跳点;
S14,重复步骤S13获得均匀网格地图中所有轴向跳点;
S2,根据轴向跳点集识别出所有有源对角跳点,生成有源对角跳点集,其中可通行节点在对角方向上由轴向跳点经过无障碍的移动到达时,认定该可通行节点为有源对角跳点;
S3,对均匀网格地图所有可通行节点进行深度优先排序,获得所有可通行节点按照位置相近程度建立的索引;
S4,以所有轴向跳点与有源对角跳点的塌缩位置为源节点进行全地图搜索,得到所有源节点和所有可通行节点之间的最优路径的初始边,并结合索引,生成预处理信息;
S5,对上述预处理信息进行压缩,生成压缩模式数据库。
2.如权利要求1所述的一种基于跳点路径搜索的模式数据库信息压缩方法,其特征在于,所述步骤S2中有源对角跳点识别的步骤包括:
S21,计算均匀网格地图上所有可通行节点轴向跳跃距离表,该表显示每个可通行节点在轴向方向上至其他轴向跳点或障碍物的距离;
S22,计算均匀网格地图上所有可通行节点对角跳跃距离表,该表显示每个可通行节点在对角方向上至其他可通行节点的距离,该可通行节点可通过该对角方向的某一轴向分量的方向到达某一轴向跳点;
S23,以每个轴向跳点为源进行遍历,反复读取当前节点的对角距离,对角距离为正表明在该位置能够将对角方向的移动转入轴向移动,从而到达轴向跳点,则判断当前节点为有源对角跳点。
3.如权利要求1所述的一种基于跳点路径搜索的模式数据库信息压缩方法,其特征在于,S4中所述生成预处理信息具体包括:
预处理信息由二维矩阵组成,全地图所有可通行节点中的每个节点对应一列,且按照S3中得到的可通行节点索引排列;
每个塌缩位置对应一行生成一类预处理信息,其中该行每个元素存储该行塌缩位置到达该可通行节点的最优路径的所有初始边情况,用标识位来表示;
将每个塌缩位置拆分获得塌缩位置对应的所有跳点,每个拆分的跳点对应一行,根据跳点类型确定了该跳点的主序扩展方向,对应行中仅取该跳点主序扩展方向与每个可通行节点初始边的交集,记录为该行的每个元素,生成二类预处理信息,其中每个元素存储该行跳点到达该可通行节点的最优路径的初始边,用标识位来表示。
4.如权利要求3所述的一种基于跳点路径搜索的模式数据库信息压缩方法,其特征在于,所述S5对上述预处理信息进行压缩,生成压缩模式数据库的步骤包括:
在同类预处理信息中,将待压缩元素的最优初始边与该元素所在行前一元素所在回合的最优初始边进行对比,若相同,则将当前元素并入前一元素所在的回合,否则重新开始一个新的回合,其中每个回合记录其所包含的所有元素的起始位置和该回合代表的最优初始边。
5.如权利要求3所述的一种基于跳点路径搜索的模式数据库信息压缩方法,其特征在于,
所述标识位由8个bit位按固定顺序分别表示塌缩位置或塌缩位置对应跳点的8个邻域的初始边;
当该邻域具有最优路径初始边时,该邻域对应的bit位设置为1,否则为0。
6.如权利要求5所述的一种基于跳点路径搜索的模式数据库信息压缩方法,其特征在于,一类预处理信息进行压缩生成一类模式数据库的方法包括:
S51a,在压缩当前塌缩位置对应的一行时,将该行第一个元素作为当前回合代表的最优初始边;
S52a,对该行所有元素进行循环,若当前元素与当前回合的所有bit位都相同,则将其也并入此回合;
S53a,当相邻两个元素的标识位有任一bit不同,则重新开始一个回合。
7.如权利要求5所述的一种基于跳点路径搜索的模式数据库信息压缩方法,其特征在于,二类预处理信息进行压缩生成二类模式数据库的方法包括:
S51b,初始化当前回合,将当前行第一个元素的标识位作为当前回合标识位;
S52b,若当前元素与当前回合的所有bit位中至少有一个为1的bit位在相同位置,此时称为交集不为空,则将当前元素归入当前回合,并将当前回合继续向后延伸;
S53b,若当前元素与当前回合的所有bit位中没有相同位置共同为1,此时交集为空,则将当前回合在此结束,开始一个新的回合;
S54b,由于二类模式数据库中每个回合仅表示一个初始边即可,因此将其用8bit标识位压缩为表示十进制0-7的4bit标识位。
8.如权利要求7所述的一种基于跳点路径搜索的模式数据库信息压缩方法,其特征在于,所述S53b中:
当前元素与当前回合的所有bit位此时交集为空时,若当前元素标识位为全零,则用通配符代替该元素标识位,该元素直接并入当前回合;
其中通配符设置为前一时刻可通行节点的元素bit位。
9.一种基于跳点路径搜索的模式数据库信息压缩***,其特征在于:
包括存储器和处理器,所述存储器存储有均匀网格地图和跳点路径搜索的模式数据库信息压缩程序,所述处理器在运行所述跳点路径搜索的模式数据库信息压缩程序时执行权利要求1~8中任一项所述基于跳点路径搜索的模式数据库信息压缩方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911138912.4A CN111104471B (zh) | 2019-11-20 | 2019-11-20 | 基于跳点路径搜索的模式数据库信息压缩方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911138912.4A CN111104471B (zh) | 2019-11-20 | 2019-11-20 | 基于跳点路径搜索的模式数据库信息压缩方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111104471A CN111104471A (zh) | 2020-05-05 |
CN111104471B true CN111104471B (zh) | 2023-03-31 |
Family
ID=70421264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911138912.4A Active CN111104471B (zh) | 2019-11-20 | 2019-11-20 | 基于跳点路径搜索的模式数据库信息压缩方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111104471B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111829526B (zh) * | 2020-07-23 | 2022-05-10 | 中国人民解放军国防科技大学 | 一种基于防撞半径的距离地图重构与跳点路径规划方法 |
CN114089927B (zh) * | 2022-01-24 | 2022-04-19 | 清研捷运(天津)智能科技有限公司 | 一种路径规划预处理数据压缩方法 |
CN117152458B (zh) * | 2023-11-01 | 2024-01-30 | 南京盛视工业技术有限公司 | 一种基于行程编码的连通域快速提取方法及*** |
CN117370619B (zh) * | 2023-12-04 | 2024-02-23 | 支付宝(杭州)信息技术有限公司 | 图的分片存储和子图采样方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109115226A (zh) * | 2018-09-01 | 2019-01-01 | 哈尔滨工程大学 | 基于跳点搜索的多机器人冲突避免的路径规划方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101761313B1 (ko) * | 2010-12-06 | 2017-07-25 | 삼성전자주식회사 | 로봇 및 로봇의 경로생성방법 |
-
2019
- 2019-11-20 CN CN201911138912.4A patent/CN111104471B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109115226A (zh) * | 2018-09-01 | 2019-01-01 | 哈尔滨工程大学 | 基于跳点搜索的多机器人冲突避免的路径规划方法 |
Non-Patent Citations (1)
Title |
---|
Cong Hu, etc..Speeding up FastMap for Pathfinding on Grid Maps.《2019 IEEE International Conference on Mechatronics and Automation(ICMA)》.2019,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111104471A (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111104471B (zh) | 基于跳点路径搜索的模式数据库信息压缩方法及*** | |
CN110967015B (zh) | 一种路径规划方法及*** | |
CN107607120A (zh) | 基于改进修复式Anytime稀疏A*算法的无人机动态航迹规划方法 | |
CN113485369A (zh) | 改进a*算法的室内移动机器人路径规划和路径优化方法 | |
JP2004518226A (ja) | データベースシステムおよびクエリオプティマイザ | |
AU2023201614A1 (en) | Device and method for improving route planning computing devices | |
CN110975290A (zh) | 一种基于模式数据库的路径规划方法及*** | |
CN112129296B (zh) | 一种机器人轨迹规划方法及*** | |
CN110702133A (zh) | 路径规划方法、机器人以及具有存储功能的装置 | |
CN115167474A (zh) | 一种移动机器人路径规划优化方法 | |
CN107121146A (zh) | 基于路链深度的最优路径规划方法 | |
CN114440916A (zh) | 一种导航方法、装置、设备及存储介质 | |
Garcia et al. | GPU-based dynamic search on adaptive resolution grids | |
CN113296520A (zh) | 融合a*与改进灰狼算法的巡检机器人路径规划方法 | |
CN110975288B (zh) | 基于跳点路径搜索的几何容器数据压缩方法及*** | |
CN114254832A (zh) | 一种最优巡查路径的选择方法与终端 | |
CN111427341A (zh) | 一种基于概率地图的机器人最短预期时间目标搜索方法 | |
CN110975291B (zh) | 一种路径提取方法及*** | |
CN113868434A (zh) | 图数据库的数据处理方法、设备和存储介质 | |
CN115454070B (zh) | 一种K-Means蚁群算法多机器人路径规划方法 | |
CN114577217B (zh) | 基于冯洛诺伊图的路径规划方法、装置、设备及存储介质 | |
CN115270377B (zh) | 一种基于改进蚁群算法的多电缆最佳路径规划方法 | |
CN114723108B (zh) | 城市路网海量公共服务设施可达性计算方法与装置 | |
CN112256705B (zh) | 一种Gaia***中的多表连接优化方法 | |
CN111323036B (zh) | 原料场智能寻优路径方法、***、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |