一种基于图的多点路径查询方法和装置

文档序号:1201222 发布日期:2020-09-01 浏览:2次 >En<

阅读说明:本技术 一种基于图的多点路径查询方法和装置 (Multipoint path query method and device based on graph ) 是由 郝彤 于 2019-02-22 设计创作,主要内容包括:本申请提供了一种基于图的多点路径查询方法,接收到查询请求时,针对V中的每个起始顶点扩展M层,将每个起始顶点分别记录到一个数组中;将V中的两两起始顶点对应的扩展信息求交集之后,再将所有交集内的扩展信息求并集;并获取并集中前N条扩展信息作为初步扩展信息;根据缓存中的邻接表将初步扩展信息对应的每个顶点再扩展L-M层,并获取对应的扩展信息作为二次扩展信息;合并初步扩展信息和二次扩展信息,过滤掉非起始顶点对应的扩展信息作为待返回扩展信息;获取待返回扩展信息中的前N条扩展信息,并将所述获取的前N条扩展信息中的路径信息响应给发送查询请求的设备。该方法能够提高查询效率。(The application provides a multipoint path query method based on a graph, wherein when a query request is received, M layers are expanded aiming at each initial vertex in a V, and each initial vertex is respectively recorded into an array; solving an intersection of the extended information corresponding to every two initial vertexes in the V, and then solving a union of the extended information in all intersections; acquiring and concentrating the first N pieces of expansion information as preliminary expansion information; according to an adjacency list in the cache, re-expanding each vertex corresponding to the primary expansion information by an L-M layer, and acquiring corresponding expansion information as secondary expansion information; combining the primary extension information and the secondary extension information, and filtering extension information corresponding to the non-initial vertex as extension information to be returned; acquiring the first N pieces of extended information in the extended information to be returned, and responding the path information in the acquired first N pieces of extended information to the equipment sending the query request. The method can improve the query efficiency.)

一种基于图的多点路径查询方法和装置

技术领域

本发明涉及信息处理技术领域,特别涉及一种基于图的多点路径查询方法和装置。

背景技术

图(Graph)是用来表示物件与物件之间的关系的对象,是图论的基本研究对象。图是一个有序二元组(V,E),其中V称为顶点集,E称为边集。E的元素用(x,y)表示,其中x,y∈V。

计算图中多个顶点之间的关系是非常有意义的,例如:计算两个人在网络上的人脉关系,计算多家公司的之间的投资关系等。

传统计算方法为:以一个节点为中心向外层扩展,直到扩展到目的节点或者达到限定的层次为止。

由一个顶点向外层扩展时,随着扩展计算层次的增加,计算的节点会形成指数级的增加,所以该计算方式不仅效率低,而且对内存消耗比较大。

如:假设图中的每个顶点与100个顶点存在直接关系,如果要遍历该顶点的2层关系,就涉及到100的2次方,也就是10000个顶点数据的加载。如果计算6层关系,就会加载1万亿个顶点数据。

发明内容

有鉴于此,本申请提供一种基于图的多点路径查询方法和装置,能够提高查询效率。

为解决上述技术问题,本申请的技术方案是这样实现的:

一种基于图的多点路径查询方法,该方法包括:

接收到查询请求时,获取该请求携带的起始顶点的集合V、扩展的层次数L和返回的路径数量N;

针对V中的每个起始顶点扩展M层,将每个起始顶点对应的扩展信息分别记录到一个数组中;并将扩展过程中经过的顶点和边使用邻接表进行缓存;其中,M小于L;

将V中的两两起始顶点对应的扩展信息求交集之后,再将所有交集内的扩展信息求并集;

将并集中的扩展信息按照预设规则进行排列;并获取并集中前N条扩展信息作为初步扩展信息;

根据缓存中的邻接表将初步扩展信息对应的每个顶点再扩展L-M层,并获取对应的扩展信息作为二次扩展信息;

合并初步扩展信息和二次扩展信息,过滤掉非起始顶点对应的扩展信息,并按照预设规则排列,作为待返回扩展信息;

获取待返回扩展信息中的前N条扩展信息,并将所述获取的前N条扩展信息中的路径信息响应给发送查询请求的设备。

一种基于图的多点路径查询装置,该装置包括:接收单元、获取单元、第一扩展单元、第二扩展单元和响应单元;

所述接收单元,用于接收查询请求;

所述获取单元,用于当所述接收单元接收到查询请求时,获取该请求携带的起始顶点的集合V、扩展的层次数L和返回的路径数量N;

所述第一扩展单元,用于针对获取单元中的V中的每个起始顶点扩展M层,将每个起始顶点对应的扩展信息分别记录到一个数组中;并将扩展过程中经过的顶点和边使用邻接表进行缓存;将V中的两两起始顶点对应的扩展信息求交集之后,再将所有交集内的扩展信息求并集;将并集中的扩展信息按照预设规则进行排列;并获取并集中前N条扩展信息作为初步扩展信息;其中,M小于L;

所述第二扩展单元,用于根据所述第一扩展单元在缓存中缓存的邻接表将初步扩展信息对应的每个顶点再扩展L-M层,并获取对应的扩展信息作为二次扩展信息;合并初步扩展信息和二次扩展信息,过滤掉非起始顶点对应的扩展信息,并按照预设规则排列,作为待返回扩展信息;获取待返回扩展信息中的前N条扩展信息;

所述响应单元,用于将所述第二扩展单元获取的前N条扩展信息中的路径信息响应给发送查询请求的设备。

一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现基于图的多点路径查询方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现基于图的多点路径查询方法的步骤。

由上面的技术方案可知,本申请中通过先对起始顶点进行M层级的扩展,然后获取扩展信息交集中的顶点进行剩余的L-M层级扩展,并按照返回路径数量反馈查询信息。针对前M层级扩展后,进行扩展信息的交集处理,能够让数据信息得到收敛;再进行剩余的L-M层级的扩展时,使用前M层级扩展产生的缓存数据,提升了查询效率。

附图说明

图1为本申请实施例中基于图的多点路径查询流程示意图;

图2为实施例中一图中顶点关系示意图;

图3为本申请实施例中应用于上述技术的装置结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。

本申请实施例中提供一种基于图的多点路径查询方法,通过先对起始顶点进行M层级的扩展,然后获取扩展信息交集中的顶点进行剩余的L-M层级扩展,并按照返回路径数量反馈查询信息。针对前M层级扩展后,进行扩展信息的交集处理,能够让数据信息得到收敛;再进行剩余的L-M层级的扩展时,使用前M层级扩展产生的缓存数据,提升了查询效率。

本申请实施例中为了描述方便,执行查询请求,并响应查询结果的主体称为查询设备。该查询设备只要存在下述功能即可,具体存在形式不进行限制。

下面结合附图,详细描述本申请实施例中基于图的多点路径查询过程。

参见图1,图1为本申请实施例中基于图的多点路径查询流程示意图。具体步骤为:

步骤101,接收到查询请求时,获取该请求携带的起始顶点的集合V、扩展的层次数L和返回的路径数量N。

本申请实施例中具体实现时,需预先配置查询起始顶点的数量范围、扩展的层次数的范围和返回的路径数量的范围,来检验查询请求携带的查询参数是否合法。

如起始顶点的数量范围为1到100,扩展的层次数的范围为1到10,返回的路径数量的范围为1到10000,但是具体实现时,不限于举例中给出的参数范围,根据实际需要设置即可。

当下述任一项不满足配置的范围时,向发送查询请求的设备返回不能查询的响应:

起始顶点的集合V中的顶点数量、扩展的层次数L和返回的路径数量N。

也就是说起始顶点的集合V中的顶点数量、扩展的层次数L和返回的路径数量N中只要存在不满足配置的范围时,确定查询参数不合法,进而确定不能响应对应的路径信息,这时向发送查询请求的设备返回不能查询的响应。

如V中的顶点数量为50,则确定起始顶点的数量这一参数合法,如扩展的层次数L为12,则确定扩展的层次数这一参数不合法。

当确定上述三个参数都合法时,执行步骤102。

在查询请求中通常还会携带扩展方式,扩展方式通常由三种:出边、入边和双向;其中,双向指包括出边方向和入边方向,在具体查询时,根据查询请求中携带的扩展方式进行查询;

如果在查询请求中未携带扩展方式,则默认使用双向方式进行扩展。

步骤102,针对V中的每个起始顶点扩展M层,将每个起始顶点对应的扩展信息分别记录到一个数组中;并将扩展过程中经过的顶点和边使用邻接表进行缓存。

本申请实施例中的M小于L,具体实现时,M可以取L的一半,也就是说M可以为L/2,当L/2不为整数时,将L/2向上取整作为M。

如L为4,则M为2,如M为5,则M为3。

本申请实施例中的扩展信息,包括:层ID、顶点ID和路径信息;其中,层ID表示当前扩展到第几层;顶点ID表示扩展后当前的顶点ID;路径信息为扩展过程中经过的边的集合,一条边使用顶点的开始顶点和结束顶点表示。

其中,所述邻接表包括顶点,以及顶点对应的边。

参见图2,图2为实施例中一图中顶点关系示意图。图2中包括12个顶点,以查询请求中携带的V为(顶点1、顶点11),L为4,N为5为例。

以双向方式扩展为例:针对顶点1和顶点2扩展L/2=2层,分别对起始顶点1和起始顶点11扩展过程中获得的扩展信息记录到两个数组(数组1和数组2)中;

以数组1和数组2存放顶点1和顶点2对应的扩展信息如下:

数组1包含的内容为:{1 2(1,2),1 3(1,3),1 4(1,4),2 5(1,2)(5,2),2 6(1,3)(3,6),2 6(1,4)(6,4)}。

数组2包含的内容为:{1 12(11,12),2 6(11,12)(12,6)}。

仍然以图2为例,在进行前2层扩展过程中产生的邻接表内容参见表1,表1为本申请实施例中邻接表包含的内容。

Figure BDA0001975717800000061

表1

步骤103,将V中的两两起始顶点对应的扩展信息求交集之后,再将所有交集内的扩展信息求并集。

由于本申请实施例中V中的起始顶点个数只有两个,因此,针对两个数组取交集后的结果也就是步骤103中的并集结果。

这里的求交集是确定扩展信息中的路径信息中的相同顶点对应的扩展信息。

若两两起始顶点对应的扩展信息中的路径信息中存在相同的顶点ID,则确定该扩展信息为交集中的扩展信息;否则,确定对应的扩展信息不为交集中的扩展信息,也就不保留在并集结果中。

如数组1和数组2中,路径信息中相同的顶点为顶点6,则步骤103中的并集结果为:

{2 6(1,3)(3,6),2 6(1,4)(6,4),2 6(11,12)(12,6)}。

当所有交集中的扩展信息为空,也就是说并集为空,即其中不存在任一节点的扩展信息,则向发送查询请求的设备响应未查询到路径信息;当所有交集中的扩展信息存在不为空的情况,也就是说并集不为空,则执行步骤104。

步骤104,将并集中的扩展信息按照预设规则进行排列;并获取并集中前N条扩展信息作为初步扩展信息。

所述预设规则为:

层数从小到大,顶点ID从小到大的顺序;

或,随机顺序;

或,层数从小到大,顶点按照V中起始顶点的顺序。

上述给出了三种预设规则,实际应用中可以不限预设规则,使用者根据具体应用场景设置预设规则,进行排序,如层数从小到大,顶点按照V中起始顶点的顺序这一预设规则,则考虑到请求信息中V中的顶点排序。

如上述并集结果中的扩展信息中层数相同,顶点ID相同这种特例的情况下,可以随机排列。

在上述给出以N为5为例,则并集结果中的3条扩展信息均保留,如果超过5条,则会将第6条,以及第6条之后的扩展信息均过滤掉。

步骤105,根据缓存中的邻接表将初步扩展信息对应的每个顶点再扩展L-M层,并获取对应的扩展信息作为二次扩展信息。

针对上述并集结果过滤后的初步扩展信息为:

{2 6(1,3)(3,6),2 6(1,4)(6,4),2 6(11,12)(12,6)}。

可以或者初步扩展信息中的顶点只有顶点6,则从顶点6开始再扩展L-M=4-2层,也就是说进行第3层和第4层的扩展。

再进行后续层次的扩展过程中可以使用前M层扩展过程中产生的邻接表进行扩展,这样能够大大提到扩展效率。

针对顶点6进行第3层和第4层进行扩展,生成的扩展信息记录到数组3中,作为二次扩展信息,数据3包含的内容为:

{4 1(11,12)(12,6)(3,6)(1,3),4 1(11,12)(12,6)(6,4)(1,4),3 3(11,12)(12,6)(3,6),3 4(11,12)(12,6)(6,4),3 12(1,3)(3,6)(12,6),3 12(1,4)(6,4)(12,6),4 11(1,3)(3,6)(12,6)(11,12),4 11(1,4)(6,4)(12,6)(11,12)}。

步骤106,合并初步扩展信息和二次扩展信息,过滤掉非起始顶点对应的扩展信息,并按照预设规则排列,作为待返回扩展信息。

合并初步扩展信息和二次扩展信息后的合并结果如下:

{2 6(1,3)(3,6),2 6(1,4)(6,4),2 6(11,12)(12,6),4 1(11,12)(12,6)(3,6)(1,3),4 1(11,12)(12,6)(6,4)(1,4),3 3(11,12)(12,6)(3,6),3 4(11,12)(12,6)(6,4),3 12(1,3)(3,6)(12,6),3 12(1,4)(6,4)(12,6),4 11(1,3)(3,6)(12,6)(11,12),4 11(1,4)(6,4)(12,6)(11,12)}。

过滤掉非起始顶点对应的扩展信息后,保留的扩展信息如下:

{4 1(11,12)(12,6)(3,6)(1,3),4 1(11,12)(12,6)(6,4)(1,4),4 11(1,3)(3,6)(12,6)(11,12),4 11(1,4)(6,4)(12,6)(11,12)}。

即只保留顶点ID为1和11的顶点对应的信息。

所述预设规则为:

层数从小到大,顶点ID从小到大的顺序;

或,随机顺序;

或,层数从小到大,顶点按照V中起始顶点的顺序。

以层数从小到大,顶点ID从小到大的顺序排列后,不能进一步排列,如顶点表示和层数均相同的扩展信息,则前后顺序随机,以上述规则,排序后保留的扩展信息可以是如下方式:

{4 1(11,12)(12,6)(3,6)(1,3),4 1(11,12)(12,6)(6,4)(1,4),4 11(1,3)(3,6)(12,6)(11,12),4 11(1,4)(6,4)(12,6)(11,12)}。

将该数组中的扩展信息作为待返回扩展信息。

步骤107,获取待返回扩展信息中的前N条扩展信息,并将所述获取的前N条扩展信息中的路径信息响应给发送查询请求的设备。

仍然以N为5为例,则将待返回扩展信息中的路径信息均响应给发送查询请求的设备,具体的路径信息如下:

(11,12)(12,6)(3,6)(1,3),(11,12)(12,6)(6,4)(1,4),(1,3)(3,6)(12,6)(11,12),(1,4)(6,4)(12,6)(11,12)}。

至此,完成了查询,并将查询结果反馈给了发送查询请求的设备。

基于同样的发明构思,本申请实施例中还提供一种基于图的多点路径查询装置。参见图3,图3为本申请实施例中应用于上述技术的装置结构示意图。该装置包括:接收单元301、获取单元302、第一扩展单元303、第二扩展单元304和响应单元305;

接收单元301,用于接收查询请求;

获取单元302,用于当接收单元301接收到查询请求时,获取该请求携带的起始顶点的集合V、扩展的层次数L和返回的路径数量N;

第一扩展单元303,用于针对获取单元中的V中的每个起始顶点扩展M层,将每个起始顶点对应的扩展信息分别记录到一个数组中;并将扩展过程中经过的顶点和边使用邻接表进行缓存;将V中的两两起始顶点对应的扩展信息求交集之后,再将所有交集内的扩展信息求并集;将并集中的扩展信息按照预设规则进行排列;并获取并集中前N条扩展信息作为初步扩展信息;其中,M小于N;

第二扩展单元304,用于根据第一扩展单元303在缓存中缓存的邻接表将初步扩展信息对应的每个顶点再扩展L-M层,并获取对应的扩展信息作为二次扩展信息;合并初步扩展信息和二次扩展信息,过滤掉非起始顶点对应的扩展信息,并按照预设规则排列,作为待返回扩展信息;获取待返回扩展信息中的前N条扩展信息;

响应单元305,用于将第二扩展单元304获取的前N条扩展信息中的路径信息响应给发送查询请求的设备。

较佳地,

所述预设规则为:

层数从小到大,顶点ID从小到大的顺序;

或,随机顺序;

或,层数从小到大,顶点按照V中起始顶点的顺序。

较佳地,

所述扩展信息,包括:层ID、顶点ID和路径信息;其中,路径信息为扩展过程中经过的边的集合,一条边使用顶点的开始顶点和结束顶点表示。

较佳地,

M为L/2,当L/2不为整数时,将L/2向上取整作为M。

较佳地,

第一扩展单元303,具体用于将V中的两两起始顶点对应的扩展信息求交集时,若两两起始顶点对应的扩展信息中的路径信息中存在相同的顶点ID,则确定该扩展信息为交集中的扩展信息。

较佳地,

获取单元302,进一步用于预先配置查询起始顶点的数量范围、扩展的层次数的范围和返回的路径数量的范围;当获取的下述任一项不满足配置的范围时,向发送查询请求的设备返回不能查询的响应:起始顶点的集合V中的顶点数量、扩展的层次数L和返回的路径数量N。

上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。

此外,本申请实施例中还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现基于图的多点路径查询方法的步骤。

另外,本申请实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现基于图的多点路径查询方法的步骤。

综上所述,本申请通过预先对起始顶点进行M层级的扩展,然后获取扩展信息交集中的顶点进行剩余的L-M层级扩展,并按照返回路径数量反馈查询信息。针对前M层级扩展后,进行扩展信息的交集处理,能够让数据信息得到收敛;再进行剩余的L-M层级的扩展时,使用前M层级扩展产生的缓存数据,提升了查询效率。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于近邻关系的树种空间隔离程度评价方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!