基于Spark分布式系统的最短路径关键点查询方法

文档序号:9288461阅读:478来源:国知局
基于Spark分布式系统的最短路径关键点查询方法
【技术领域】
[0001] 本发明涉及的是一种信息处理领域的技术,具体是一种基于Spark分布式系统的 最短路径关键点查询方法。
【背景技术】
[0002]目前有许多最短路径方面的算法,即节点s到节点t的最短路径记为SP〈s,t>, 相应的最短距离为dist〈s, t>。Disjktra是图论单源最短路径问题的经典算法,但其效 率不能满足主流需求。近年涌现出许多相关的高效算法,比如A*,一种启发式的点对点最 短路径直接搜索算法;比如结合了地标(landmark)思想,应用三角形边长不等式约束的 ALT算法;比如Abraham等人提出的hub标签算法(hub labeling,HL);以及缩略层次算法 (Contraction Hierarchies,CH),一种含有索引结构的预处理最短路径算法,通过在预处 理中添加shortcut来提高查询效率。
[0003] Abraham等人提出的层次hub标签(Hierarchicalhublabeling)算法中,将所有 节点按照一定标准排序,使得每个节点对应一个不同的层次(level)。每个节点u包含两个 标签:前向标签Lf(u)和逆向标签Lr(u)。以前向标签为例,每个节点的标签里都存储着一 个二元集合{(Vi,d(u,V》),(v2,d(u,v2)),. . .,(vx,d(u,vx))},每个二元组由一个节点vi和 u与这个节点之间的距离d(u,vj(在逆向标签中,贝lj为d(X,u))组成。节点u的标签包含 了u的部分连接信息。层次hub标签满足覆盖属性:对于两个任意节点s和t,必有一个在 s-t最短路径上的点W,它同时属于Lf(S)和Lr(t),而且它是最短路径SP〈s,t>上层次最 高的节点。
[0004] 缩略层次算法CH由Geisberger等人在2008年提出,是一种高效的,被广泛应用 于各类图上的最短路径算法,其主要思想是通过构造一个带层次索引的结构来提高最短路 径搜索的效率。CH需要一个顶点序列,例如r(v)。CH的预处理是一个不断缩减图的过程, 包含多个迭代,每个迭代将当前图缩减一部分,并添加相应的虚拟捷径。按照全序由低到 高的顺序对节点进行访问,并依次将节点从图中删除。设删减图依次为Gl->...Gn。删除 过程中,被删除点覆盖的最短路径将可能受到影响。假设当前即将删除的点为V,它的入邻 点集为Nin(v),出邻点集为Nout(v),对每一对uGNin(v),wGNout(v),在删除了v的图 上采用witness搜索(即对删除点的邻点进行最短路径搜索,确定每个邻点对之间的最短 距离)得到U-W最小距离为d'(U,W),如果d'(11,'\¥)>6(^6(11,¥)+6(^6(>,'\¥),那么说明删 除V对U_W最短距离会产生影响。因此,需要在删除V之后剩下的图里,添加一条长度为 edge(u,v)+edge(v,w)的虚拟捷径(u,w),以免剩下的图里u-w之间的最短距离因为v的 删除而变化。
[0005] 然而,在大多数情况下并不需要详细、完整的最短路径,只需要得到部分子路径即 可,因而一些路径概要算法成为研究热点。YufeiTao等人2011年在《Onk-skipShortest Paths》提出的k-skip算法也是一种路径概要算法,对查询点对,能给出k-skip最短路径 P* :实际最短路径上每k个连续的点就至少有一个点在P*里,也就是说,P*按至少1/k的 概率给P采样。
[0006] 在日常生活中,往往可以凭借经验判断路网上各节点的重要性,即其关键度。关键 度代表着节点在路网中的重要程度,全部节点的关键度可以被视为所有节点的一个全序, 将节点V的关键度表示为r(v)。
[0007] 近年来,随着大数据和分布式概念的推广,在多台机器上利用分布式平台来实现 算法成为了一个具有吸引力的目标,Spark便是一个高效的基于内存的分布式计算系统, Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台。对需要迭代计算的数 据,Spark提供cache操作,可将数据缓存在内存中,节省了大量读写文件的开销;可直接读 写HDFS文件系统;此外,Spark拥有众多分布式计算框架,能够灵活进行各种分布式计算。
[0008] RDD(RisilientDistributedDataset,弹性分布式数据集)是Spark的核心,是 分布式内存的一个抽象概念。对开发者而言,可将RDD看作是Spark中的一个对象,运行于 内存中。RDD足以表示多种类型的计算,包括MapReduce算法和专用的迭代编程模型(如 Pregel)〇
[0009] GraphX是基于Spark平台的专门处理图的图计算模块,它针对图存储和图计算提 供了丰富的API,能实现并行的图计算,即一张图拆分成若干个子图,对子图分别进行迭代 分阶段的计算。
[0010] 分布式CH算法由Vetter等人在《Paralleltime-dependentcontraction hierarchies》提出,但仅是将算法在MPI上实现,缺乏分布式存储系统、并行任务管理和分 配机制作为支撑。
[0011] 经过对现有技术的检索发现,中国专利文献号CN104518965A,公告日2015. 4. 15, 公开了一种最短路径查询方法及装置,包括:确定并存储数据库中的每个节点分别所属的 每一级别的聚合区域,以及每个节点分别与所属的每一级别的聚合区域的中心节点之间的 最短路径,和不同最高级别的聚合区域的中心节点之间的最短路径;根据存储的聚合区域 及最短路径,确定查询请求中的两个节点之间的最短路径。但该技术需分层聚合和存储数 据,对于给定的点对仅有两个中心点,查询时需遍历所有节点,耗时较长。

【发明内容】

[0012] 本发明针对现有技术存在的上述不足,提出一种基于Spark分布式系统的最短路 径关键点查询方法,在预处理中对路网中的所有节点进行基于Spark平台上的分布式CH预 处理和层次标签构造,查询时利用预处理的结果,向用户返回指定个数的关键点。
[0013] 本发明是通过以下技术方案实现的:
[0014] 本发明通过在分布式的Spark平台上对图中的所有节点按照关键度排序组成的 节点全序进行预处理,得到每个节点对应的层次标签,实现任意点对间的最短路径关键点 查询,并返回最短路径上指定个数的关键点。
[0015] 所述的预处理包括:分布式CH预处理、构造和分布式存储层次标签。
[0016] 所述的分布式CH预处理包括:建立独立集和添加虚拟捷径。
[0017] 所述的图是指:由若干个给定的点及连接任意两点所构成的图形,图形中的点为 节点。
[0018] 所述的关键度是指:任意一个节点在图中的重要程度,其衡量指标包括但不限于: 节点度和覆盖能力。
[0019] 所述的独立集是指:能够从当前图中按照任意顺序缩减若干个节点,且不影响下 一迭代中图的最短距离的正确性的点集。
[0020] 所述的虚拟捷径(shortcut)是指:对于图中任意一个点对<s,t>,如果对<s,t> 最短距离上除了s、t以外的每一点v,v的关键度都低于s和t的关键度,则存在一条虚拟 捷径s- >t,其权值为<s,t>间的最短距离。
[0021] 所述的层次标签为二元组集合,每一个节点的二元组集合中,二元组由目标节点 和该节点至目标节点的距离向量组成。
[0022] 所述的层次标签根据距离向量的方向,进一步分为前向标签和逆向标签,且满足 层次标签的覆盖性质,即对任意一个点对<s,t>,起点s的前向标签与终点t的逆向标签的 交集必然包含它们最短路径上关键度最高的节点。
[0023] 所述的关键点是指:在最短路径上关键度最高的一个节点或关键度降序排列的前 若干个节点。 技术效果
[0024] 与现有技术相比,本发明通过分布式CH预处理和层次标签构造对已排序的点集 全序进行预处理,利用Spark平台和HDFS文件存储系统让算法得到一个高效的分布式计算 平台和分布式存储系统的支持,使大量工作在基于Spark平台的预处理阶段完成,通过预 处理得到的层次标签,缩小了搜索时占用的空间,并具有一定的拓展性。
【附图说明】
[0025] 图1为本发明示意图;
[0026] 图2为实施例中路网NWs8324中预处理时间图;
[0027] 图3为实施例中路网BAYsl5164中预处理时间图;
[0028] 图4为实施例中路网Floridas52781中预处理时间图;
[0029] 图5为实施例中路网NWslll729中预处理时间图。
【具体实施方式】
[0030] 下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行 实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施 例。 实施例1
[0031] 本实施例涉及的Spark平台版本为Hadoop2. 4. 1,Sparkl. 3. 0 ;Spark平台的编译 工具版本为sbtO. 13. 4、程序语言
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1