一种最短路径查询方法及装置制造方法

文档序号:7772819阅读:241来源:国知局
一种最短路径查询方法及装置制造方法
【专利摘要】本发明涉及信息【技术领域】,尤其涉及一种最短路径查询方法及装置,用以解决现有技术中预先计算并存储数据库中所有节点间的最短路径的方式耗费存储空间较大的问题;本发明的方法包括:确定并存储数据库中的每个节点分别所属的每一级别的聚合区域,以及每个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,和不同最高级别的聚合区域的中心节点之间的最短路径;根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径。本发明方法所需存储空间较小,且根据存储的聚合区域和最短路径就可以确定查询请求中的两个节点之间的最短路径,查询效率较高。
【专利说明】一种最短路径查询方法及装置

【技术领域】
[0001] 本发明涉及信息【技术领域】,尤其涉及一种最短路径查询方法及装置。

【背景技术】
[0002] 确定节点间的最短路径是在数据库应用中基本的操作需求,传统获取最短路径的 方式是在查询数据库时临时计算最短路径,但是,随着数据库中的图数据规模的增长,采用 传统方式获取最短路径时,无法一次通过内存读取整个数据库中的图数据,这样很多传统 的基于内存的图算法都需要重新进行调整,每次只能加载一部分需要的图数据进行计算, 而不是一次加载整个数据库中的图数据,严重降低了查询效率。
[0003]为了解决上述传统方式查询效率低的问题,开始对数据库中的图数据进行预先处 理,比较普遍的一种方式是预先计算并存储数据库中所有节点间的最短路径;但是,这种方 式将耗费巨大的存储空间,甚至导致存储器件,如内存、硬盘等溢出,影响正常工作流程。


【发明内容】

[0004] 本发明提供一种最短路径查询方法及装置,用以解决预先计算并存储数据库中所 有节点间的最短路径的方式,耗费存储空间较大的问题。
[0005] 第一方面,提供一种最短路径查询方法,包括:
[0006] 确定并存储数据库中的每个节点分别所属的每一级别的聚合区域,以及每个节点 分别与所属的每一级别的聚合区域的中心节点之间的最短路径,和不同最高级别的聚合区 域的中心节点之间的最短路径;其中,高级别的聚合区域包含多个不同的低级别的聚合区 域;针对任意一级别的聚合区域,相邻的聚合区域最多包括一个公共节点或最多包括一个 比所述任意一级别低一级别的聚合区域;
[0007] 根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径。
[0008]结合第一方面,在第一种可能的实现方式中,确定数据库中的每个节点分别所属 的第一级别的聚合区域,包括:
[0009] 访问数据库中的一个未被访问的度最大的节点,及与所述度最大的节点存在直接 连接的边的所有节点,并将访问的所述度最大的节点及与所述度最大的节点存在直接连接 的边的所有节点组成一个第一级别的聚合区域;
[0010] 重复上述步骤,直到访问完数据库中的所有节点。
[0011] 结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,确定数据 库中的每个节点分别所属的第N级别的聚合区域,N为大于1的正整数,包括:
[0012] 以每个第N-1级别的聚合区域为一个第N-1级别的虚拟节点,访问数据库中的一 个未被访问的度最大的第N-1级别的虚拟节点,及与所述度最大的第N-1级别的虚拟节点 存在直接连接的边的所有第N-1级别的虚拟节点,并将访问的所述度最大的第N-1级别的 虚拟节点及与所述度最大的第N-1级别的虚拟节点存在直接连接的边的所有第N-1级别的 虚拟节点组成一个第N级别的聚合区域;
[0013] 重复上述步骤,直到访问完数据库中的所有第N-1级别的虚拟节点。
[0014] 结合第一方面,或第一方面的第一或第二种可能的实现方式,在第三种可能的实 现方式中,确定数据库中的每个节点分别与所属的每一级别的聚合区域的中心节点之间的 最短路径,包括:
[0015] 根据确定的每个节点分别与所属的低级别的聚合区域的中心节点之间的最短路 径,确定数据库中的每个节点分别与所属的高级别的聚合区域的中心节点之间的最短路 径。
[0016] 结合第一方面,或第一方面的第一至三种任意一种可能的实现方式,在第四种可 能的实现方式中,根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最 短路径之前,还包括:
[0017] 确定所述查询请求中的两个节点之间不存在直接连接的边。
[0018] 结合第一方面,或第一方面的第一至四种任意一种可能的实现方式,在第五种可 能的实现方式中,根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最 短路径,包括:
[0019] 若确定所述查询请求中的两个节点属于不同的最高级别的聚合区域,则将所述两 个节点分别与所属的最高级别的聚合区域的中心节点之间的最短路径,以及所述两个节点 分别所属的最高级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的最 短路径;
[0020] 若确定所述查询请求中的两个节点属于相同的最高级别的聚合区域,则判断是否 存在所述两个节点所属的不同的第M级别的聚合区域,其中,M为正整数,所述第M级别为 所述两个节点所属的不同的同一级别的聚合区域中的最高级别;若存在,则将所述两个节 点分别与所属的第M+1级别的聚合区域的中心节点之间的最短路径作为所述两个节点之 间的最短路径,若不存在,则将所述两个节点分别与所属的第一级别的聚合区域的中心节 点之间的最短路径作为所述两个节点之间的最短路径。
[0021] 第二方面,提供一种最短路径查询装置,该装置包括:
[0022] 第一确定模块,用于确定并存储数据库中的每个节点分别所属的每一级别的聚合 区域,以及每个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,和不 同最高级别的聚合区域的中心节点之间的最短路径;其中,高级别的聚合区域包含多个不 同的低级别的聚合区域;针对任意一级别的聚合区域,相邻的聚合区域最多包括一个公共 节点或最多包括一个比所述任意一级别低一级别的聚合区域;
[0023] 第二确定模块,用于根据存储的聚合区域及最短路径,确定查询请求中的两个节 点之间的最短路径。
[0024] 结合第二方面,在第一种可能的实现方式中,所述第一确定模块具体用于:
[0025] 访问数据库中的一个未被访问的度最大的节点,及与所述度最大的节点存在直接 连接的边的所有节点,并将访问的所述度最大的节点及与所述度最大的节点存在直接连接 的边的所有节点组成一个第一级别的聚合区域;
[0026] 重复上述步骤,直到访问完数据库中的所有节点。
[0027] 结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一 确定模块具体用于根据以下步骤确定数据库中的每个节点分别所属的第N级别的聚合区 域,N为大于1的正整数,:
[0028] 以每个第N-1级别的聚合区域为一个第N-1级别的虚拟节点,访问数据库中的一 个未被访问的度最大的第N-1级别的虚拟节点,及与所述度最大的第N-1级别的虚拟节点 存在直接连接的边的所有第N-1级别的虚拟节点,并将访问的所述度最大的第N-1级别的 虚拟节点及与所述度最大的第N-1级别的虚拟节点存在直接连接的边的所有第N-1级别的 虚拟节点组成一个第N级别的聚合区域;
[0029] 重复上述步骤,直到访问完数据库中的所有第N-1级别的虚拟节点。
[0030] 结合第二方面,或第二方面的第一或第二种可能的实现方式,在第三种可能的实 现方式中,所述第二确定模块具体用于:
[0031] 根据确定的每个节点分别与所属的低级别的聚合区域的中心节点之间的最短路 径,确定数据库中的每个节点分别与所属的高级别的聚合区域的中心节点之间的最短路 径。
[0032] 结合第二方面,或第二方面的第一至三种任意一种可能的实现方式,在第四种可 能的实现方式中,所述第二确定模块还用于,根据存储的聚合区域及最短路径,确定查询请 求中的两个节点之间的最短路径之前,确定所述查询请求中的两个节点之间不存在直接连 接的边。
[0033] 结合第二方面,或第二方面的第一至四种任意一种可能的实现方式,在第五种可 能的实现方式中,所述第二确定模块具体用于:
[0034] 若确定所述查询请求中的两个节点属于不同的最高级别的聚合区域,则将所述两 个节点分别与所属的最高级别的聚合区域的中心节点之间的最短路径,以及所述两个节点 分别所属的最高级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的最 短路径;
[0035] 若确定所述查询请求中的两个节点属于相同的最高级别的聚合区域,则判断是否 存在所述两个节点所属的不同的第M级别的聚合区域,其中,M为正整数,所述第M级别为 所述两个节点所属的不同的同一级别的聚合区域中的最高级别;若存在,则将所述两个节 点分别与所属的第M+1级别的聚合区域的中心节点之间的最短路径作为所述两个节点之 间的最短路径,若不存在,则将所述两个节点分别与所属的第一级别的聚合区域的中心节 点之间的最短路径作为所述两个节点之间的最短路径。
[0036] 本发明中确定并存储数据库中的每个节点分别所属的每一级别的聚合区域,以及 每个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,和不同最高级别 的聚合区域的中心节点之间的最短路径,根据存储的聚合区域及最短路径,确定查询请求 中的两个节点之间的最短路径;本发明中预先存储的聚合区域占用存储空间较小,且存储 的最短路径只是每个节点分别与所属的聚合区域的中心节点之间的最短路径以及最高级 别的聚合区域的中心节点之间的最短路径,因此所需的存储空间也较小;采用本发明方法, 根据存储的聚合区域及最短路径,就可以确定查询请求中的两个节点之间的最短路径,查 询效率较高。

【专利附图】

【附图说明】
[0037] 图1为本发明实施例一提供的最短路径查询方法流程图;
[0038] 图2为本发明实施例第一级别的聚合区域形成的示意图;
[0039] 图3为本发明实施例第二级别的聚合区域形成的示意图;
[0040] 图4为本发明实施例二提供的最短路径查询方法流程图;
[0041] 图5所示,为本发明实施例一提供的最短路径查询装置结构图;
[0042] 图6所示,为本发明实施例二提供的最短路径查询装置结构图。

【具体实施方式】
[0043] 本发明实施例中确定并存储数据库中的每个节点分别所属的每一级别的聚合区 域,以及每个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,和不同 最高级别的聚合区域的中心节点之间的最短路径,根据存储的聚合区域及最短路径,确定 查询请求中的两个节点之间的最短路径;本发明实施例中,预先存储的聚合区域占用存储 空间较小,且存储的最短路径只是每个节点分别与所属的聚合区域的中心节点之间的最短 路径以及最高级别的聚合区域的中心节点之间的最短路径,因此所需的存储空间也较小; 采用本发明实施例的方法,根据存储的聚合区域及最短路径,就可以确定查询请求中的两 个节点之间的最短路径,查询效率较高。
[0044] 下面结合说明书附图对本发明实施例作进一步详细描述。
[0045]如图1所示,为本发明实施例一提供的最短路径查询方法流程图,包括以下步骤:
[0046] S101:确定并存储数据库中的每个节点分别所属的每一级别的聚合区域,以及每 个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,和不同最高级别的 聚合区域的中心节点之间的最短路径;其中,高级别的聚合区域包含多个不同的低级别的 聚合区域;针对任意一级别的聚合区域,相邻的聚合区域最多包括一个公共节点或最多包 括一个比所述任意一级别低一级别的聚合区域;
[0047] S102:根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短 路径。
[0048] 在具体实施过程中,可以将数据库中的节点划分为一个级别或多个级别的聚合区 域,即对数据库中的节点进行一个级别或多个级别的区域聚合,其中,高级别的聚合区域是 在低级别的聚合区域的基础上进行聚合的,每一级别的每个聚合区域都存在一个中心节 点,第一级别的聚合区域由中心节点和该中心节点的邻居节点组成,第N级别的聚合区域 是由中心的第N-1级别的聚合区域和该中心的第N-1级别的聚合区域的第N-1级别的邻居 聚合区域组成;
[0049] 根据上述确定并存储的聚合区域和最短路径,可以确定查询请求中的两个节点之 间的最短路径,比如,假设查询请求中的两个节点为同一个第一级别的聚合区域中的非中 心节点,且它们之间不存在直接连接的边,则可以将这两个节点分别与所属的第一级别的 聚合区域的中心节点之间的最短路径作为这两个节点之间的最短路径。
[0050] 可选地,步骤S101中,确定数据库中的每个节点分别所属的第一级别的聚合区 域,包括:
[0051] 访问数据库中的一个未被访问的度最大的节点,及与所述度最大的节点存在直接 连接的边的所有节点,并将访问的所述度最大的节点及与所述度最大的节点存在直接连接 的边的所有节点组成一个第一级别的聚合区域;
[0052] 重复上述步骤,直到访问完数据库中的所有节点。
[0053] 在具体实施中,可以从数据库中选取一个未被访问的度最大的节点,由该度最大 的节点及与该度最大的节点存在直接连接的边的节点组成一个第一级别的聚合区域;重复 执行该步骤,直到数据库中的所有节点都有所属的第一级别的聚合区域后,即可得到所有 第一级别的聚合区域。
[0054] 如图2所示,为第一级别的聚合区域形成的示意图,首先,从数据库中选取一个未 被访问的度最大的节点1,由该节点1及与该节点1存在直接连接的边的节点2?7组成一 个第一级别的聚合区域1',继续从剩余的未被访问的节点中选取一个度最大的节点8,由 该节点8及与该节点8存在直接连接的边的节点9?13,组成第二个第一级别的聚合区域 8',继续从剩余的未被访问的节点中选取一个度最大的节点14,由该节点14及与该节点14 存在直接连接的边的节点15?20组成第三个第一级别的聚合区域14',如此,形成第一级 别的聚合区域1'、8'、14',这三个聚合区域形成第一级别的聚合区域网络,在具体实施过程 中,若两个不同的第一级别的聚合区域之间存在公共节点或直接连接的边,则在聚合后的 区域网络中,在这两个聚合区域之间记录一条边。在第一级别的聚合区域中,各非中心节点 与中心节点之间的最短路径即为各非中心节点与中心节点的直接连接的边,因此,存储了 第一级别的聚合区域网络,也即存储了每个第一级别的聚合区域所包括的中心节点和非中 心节点后,也就相当于存储了各非中心节点到中心节点的最短路径;
[0055] 本发明实施例中,最短路径对应的路径长度即为最短距离,也即,若节点之间直接 连接的边对应的距离为1,则图2中,各非中心节点与中心节点之间的最短距离为1 ;本发明 实施例中,若只将数据库中的节点划分为一个级别的聚合区域,也即第一级别的聚合区域, 则在根据查询请求确定两个节点之间的最短路径时,若两个节点之间存在直接连接的边, 则该直接连接的边可作为它们之间的最短路径,如图2中,节点5和节点15之间存在直接 连接的边,它们之间的最短路径即为5〇15;若两个节点分别为相同的第一级别的聚合区 域的非中心节点,且它们之间不存在直接连接的边,则它们之间的最短路径为它们分别与 所属的第一级别的聚合区域的中心节点之间的最短路径,如图2中,节点2和节点3之间的 最短路径即为20l〇3;若这两个节点分别为不同的第一级别的聚合区域中的节点,且它 们之间不存在直接连接的边,则它们之间的最短路径为它们分别与所属的第一级别的聚合 区域的中心节点之间的最短路径,以及它们分别所属的第一级别的聚合区域的中心节点之 间的最短路径,如图2中,节点2和节点10之间的最短路径即为2〇1〇4〇8〇丨0。
[0056] 若将数据库中的节点划分为多个级别的聚合区域,可继续采用下述方式对第一级 别的聚合区域进行聚合;
[0057] 具体地,确定数据库中的每个节点分别所属的第N级别的聚合区域,N为大于1的 正整数,包括:
[0058] 以每个第N-1级别的聚合区域为一个第N-1级别的虚拟节点,访问数据库中的一 个未被访问的度最大的第N-1级别的虚拟节点,及与所述度最大的第N-1级别的虚拟节点 存在直接连接的边的所有第N-1级别的虚拟节点,并将访问的所述度最大的第N-1级别的 虚拟节点及与所述度最大的第N-1级别的虚拟节点存在直接连接的边的所有第N-1级别的 虚拟节点组成一个第N级别的聚合区域;
[0059] 重复上述步骤,直到访问完数据库中的所有第N-1级别的虚拟节点。
[0060]在具体实施中,可以从数据库中选取一个未被访问的度最大的第N-1级别的虚拟 节点,由该度最大的第N-1级别的虚拟节点及与该度最大的第N-1级别的虚拟节点存在直 接连接的边的第N-1级别的虚拟节点组成一个第N级别的聚合区域;重复执行该步骤,直到 数据库中的所有第N-1级别的虚拟节点都有所属的第N级别的聚合区域后,即可得到所有 第N级别的聚合区域;
[0061] 在具体实施中,可以布置分层虚拟节点存储器,在分层虚拟节点存储器中存储每 一级别的聚合区域,以及每个聚合区域内各节点与聚合区域的中心节点之间的最短路径; 在实施中,可根据实际需要直接设置上述N值,也可以在数据库对应的区域数目小于设定 阈值时,停止进行区域聚合。
[0062]如图3所示,为第二级别的聚合区域形成的示意图,以第一级别的聚合区域1'、 8'、14'分别为三个虚拟节点,从数据库中选取一个未被访问的度最大的虚拟节点1',由该 虚拟节点1'及与该虚拟节点1'存在直接连接的边的虚拟节点8'和14'组成一个第二级 另I撤聚合区域1";从图中可知,第二级别的聚合区域1"的中心节点即为第一级别的聚合区 域1'的中心节点1 ;
[0063]在确定各节点分别与所属的第二级别的聚合区域的中心节点之间的最短路径时, 若第一级别的中心聚合区域和它的邻居聚合区域之间存在公共节点,如1'与8'之间存在 公共节点4,则该第一级别的邻居聚合区域的中心节点与所属的第二级别的聚合区域的中 心节点之间的最短路径为该第一级别的邻居聚合区域的中心节点与所述公共节点之间的 最短路径、以及所述公共节点与所述第二级别的聚合区域的中心节点之间的最短路径,如 8'的中心节点8与1"的中心节点1之间的最短路径为8〇4〇1,将每条边的距离记为1, 则最短距离为2,同时,除公共节点外,该第一级别的邻居聚合区域的非中心节点与所属的 第二级别的聚合区域的中心节点之间的最短路径为上述得到的该第一级别的邻居聚合区 域的中心节点与所属的第二级别的聚合区域的中心节点之间的最短路径加上该第一级别 的邻居聚合区域的非中心节点与该第一级别的邻居聚合区域的中心节点之间的最短路径, 也即,将该第一级别的邻居聚合区域的非中心节点与该第一级别的邻居聚合区域的中心节 点之间的最短路径、该第一级别的邻居聚合区域的中心节点与所述公共节点之间的最短路 径、以及所述公共节点与所述第二级别的聚合区域的中心节点之间的最短路径作为该第一 级别的邻居聚合区域的非中心节点与所属的第二级别的聚合区域的中心节点之间的最短 路径,如8'的非中心节点11与1 "的中心节点1之间的最短路径为1>4-,最短距 尚为2+1=3 ;
[0064]若第一级别的中心聚合区域和它的邻居聚合区域之间存在直接连接的边,如1'与14'之间存在直接连接的边,则该第一级别的邻居聚合区域的中心节点与所属的第二级 别的聚合区域的中心节点之间的最短路径为该第一级别的邻居聚合区域的中心节点与该 第一级别的邻居聚合区域中与第一级别的中心聚合区域存在直接连接的边的节点之间的 最短路径,该直接连接的边,以及该直接连接的边对应的属于该第一级别的中心聚合区域 的节点、与该第二级别的聚合区域的中心节点之间的最短路径,如14'的中心节点14与1" 的中心节点1之间的最短路径为14〇丨5->5〇丨,将每条边的距离记为1,则最短距离为3, 同时,除该直接连接的边对应的节点外,第一级别的邻居聚合区域的非中心节点与所属的 第二级别的聚合区域的中心节点之间的最短路径为上述得到的第一级别的邻居聚合区域 的中心节点与所属的第二级别的聚合区域的中心节点之间的最短路径加上该第一级别的 邻居聚合区域的非中心节点与该第一级别的邻居聚合区域的中心节点之间的最短路径,如 14'的非中心节点18与1"的中心节点1之间的最短路径为18^14〇15^5〇1,最短距 离为3+1=4。
[0065] 可选地,确定数据库中的每个节点分别与所属的每一级别的聚合区域的中心节点 之间的最短路径,包括:
[0066] 根据确定的每个节点分别与所属的低级别的聚合区域的中心节点之间的最短路 径,确定数据库中的每个节点分别与所属的高级别的聚合区域的中心节点之间的最短路 径。
[0067] 在具体实施中,在确定出每个节点分别与所属的低级别的聚合区域的中心节点之 间的最短路径之后,可以根据已确定的每个节点分别与所属的低级别的聚合区域的中心 节点之间的最短路径确定每个节点分别与所属的高级别的聚合区域的中心节点的最短路 径;
[0068] 结合上述与图3相关的说明,根据确定的每个节点分别与比所属的第N级别的聚 合区域级别低的聚合区域的中心节点之间的最短路径,确定数据库中的每个节点分别与所 属的第N级别的聚合区域的中心节点之间的最短路径的方式可以有但不仅限于以下几种: [0069]针对第N级别的聚合区域中的任意一个节点,若所述任意一个节点与所述第N级 别的聚合区域的中心节点属于同一个第N-1级别的聚合区域,则将所述任意一个节点与所 属的第N-1级别的聚合区域的中心节点之间的最短路径作为所述任意一个节点与所属的 第N级别的聚合区域的中心节点之间的最短路径;其中,N为大于1的正整数;
[0070] 若所述任意一个节点与所述第N级别的聚合区域的中心节点不属于同一个第N-1 级别的聚合区域,且所述任意一个节点是所属的第N-1级别的聚合区域的中心节点,则判 断所述任意一个节点所属的第N-1级别的聚合区域与所述第N级别的聚合区域的中心节点 所属的第N-1级别的聚合区域之间是否存在公共节点(N=2)或公共的第N-2级别的聚合区 域(N>2),若存在,则将所述任意一个节点与所述公共节点或公共的第N-2级别的聚合区域 的中心节点之间的最短路径、以及所述公共节点或公共的第N-2级别的聚合区域的中心节 点与所述第N级别的聚合区域的中心节点之间的最短路径作为所述任意一个节点与所属 的第N级别的聚合区域的中心节点之间的最短路径;若不存在,则将属于不同的第N-1级别 的聚合区域、且存在直接直接连接的边的两个节点分别与所属的第N-1级别的聚合区域的 中心节点之间的最短路径、以及所述直接直接连接的边作为所述任意一个节点与所属的第 N级别的聚合区域的中心节点之间的最短路径;
[0071] 若所述任意一个节点与所述第N级别的聚合区域的中心节点不属于同一个第N-1 级别的聚合区域,且所述任意一个节点不是所属的第N-1级别的聚合区域的中心节点,也 不是所属的第N-1级别的聚合区域与所述第N级别的聚合区域的中心节点所属的第N-1级 别的聚合区域之间的直接连接的边所对应的节点或对应的第N-2级别的聚合区域中的节 点,则判断所述任意一个节点所属的第N-1级别的聚合区域与所述第N级别的聚合区域的 中心节点所属的第N-1级别的聚合区域之间是否存在公共节点或公共的第N-2级别的聚 合区域,若存在,则将所述任意一个节点与所属的第N-1级别的聚合区域的中心节点之间 的最短路径、所述任意一个节点所属的第N-1级别的聚合区域的中心节点与所述公共节点 或公共的第N-2级别的聚合区域的中心节点之间的最短路径、以及所述公共节点或公共的 第N-2级别的聚合区域的中心节点与所述第N级别的聚合区域的中心节点之间的最短路径 作为所述任意一个节点与所属的第N级别的聚合区域的中心节点之间的最短路径;若不存 在,则将属于不同的第N-1级别的聚合区域,且存在直接连接的边的两个节点分别与所属 的第N-1级别的聚合区域的中心节点之间的最短路径、所述直接连接的边对应的两个节点 之间的最短路径、以及所述任意一个节点与所属的第N-1级别的聚合区域的中心节点之间 的最短路径作为所述任意一个节点与所属的第N级别的聚合区域的中心节点之间的最短 路径;
[0072] 若所述任意一个节点是所属的第N-1级别的聚合区域与所述第N级别的聚合区域 的中心节点所属的第N-1级别的聚合区域之间的直接连接的边所对应的节点,则将所述直 接连接的边、以及所述直接连接的边所对应的另外一个节点与所述第N级别的聚合区域的 中心节点之间的最短路径作为所述任意一个节点与所属的第N级别的聚合区域的中心节 点之间的最短路径;
[0073] 若N>2,则还可以存在以下确定方式:
[0074] 若所述任意一个节点不是所属的第N-1级别的聚合区域与所述第N级别的聚合区 域的中心节点所属的第N-1级别的聚合区域之间的直接连接的边所对应的节点,但是所述 任意一个节点所属的第N-2级别的聚合区域中存在节点是所述直接连接的边所对应的节 点,这时,若N=3,则可以将所述任意一个节点与所属的第N-2级别的聚合区域的中心节点 之间的最短路径、所述第N-2级别的聚合区域的中心节点与所述第N级别的聚合区域的中 心节点之间的最短路径,作为所述任意一个节点与所属的第N级别的聚合区域的中心节点 之间的最短路径;若N>3,则需要继续判断所述任意一个节点是否属于,所述直接连边对应 的节点所属的第N-3级别的聚合区域中的节点,并根据判断结果,确定所述任意一个节点 与所属的第N级别的聚合区域的中心节点之间的最短路径,由于本领域技术人员根据以上 说明书内容可继续实施,这里不再赘述。
[0075] 可选地,上述步骤S102之前,还包括:
[0076] 确定所述查询请求中的两个节点之间不存在直接连接的边。
[0077] 在具体实施过程中,若确定查询请求中的两个节点之间存在直接连接的边,则可 以将该直接连接的边作为两个节点之间的最短路径,若两个节点之间不存在直接连接的 边,则可以根据存储的最短路径,确定查询请求中的两个节点之间的最短路径。
[0078] 可选地,上述步骤S102中,根据存储的聚合区域及最短路径,确定查询请求中的 两个节点之间的最短路径,包括:
[0079] 若确定所述查询请求中的两个节点属于不同的最高级别的聚合区域,则将所述两 个节点分别与所属的最高级别的聚合区域的中心节点之间的最短路径、以及所述两个节点 分别所属的最高级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的最 短路径;
[0080] 这里,所述查询请求中的两个节点之间的最短路径对应的最短距离用公式表示 为:

【权利要求】
1. 一种最短路径查询方法,其特征在于,该方法包括: 确定并存储数据库中的每个节点分别所属的每一级别的聚合区域,以及每个节点分别 与所属的每一级别的聚合区域的中心节点之间的最短路径,和不同最高级别的聚合区域的 中心节点之间的最短路径;其中,高级别的聚合区域包含多个不同的低级别的聚合区域; 针对任意一级别的聚合区域,相邻的聚合区域最多包括一个公共节点或最多包括一个比所 述任意一级别低一级别的聚合区域; 根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径。
2. 如权利要求1所述的方法,其特征在于,确定数据库中的每个节点分别所属的第一 级别的聚合区域,包括: 访问数据库中的一个未被访问的度最大的节点,及与所述度最大的节点存在直接连接 的边的所有节点,并将访问的所述度最大的节点及与所述度最大的节点存在直接连接的边 的所有节点组成一个第一级别的聚合区域; 重复上述步骤,直到访问完数据库中的所有节点。
3. 如权利要求2所述的方法,其特征在于,确定数据库中的每个节点分别所属的第N级 别的聚合区域,N为大于1的正整数,包括: 以每个第N-I级别的聚合区域为一个第N-I级别的虚拟节点,访问数据库中的一个未 被访问的度最大的第N-I级别的虚拟节点,及与所述度最大的第N-I级别的虚拟节点存在 直接连接的边的所有第N-I级别的虚拟节点,并将访问的所述度最大的第N-I级别的虚拟 节点及与所述度最大的第N-I级别的虚拟节点存在直接连接的边的所有第N-I级别的虚拟 节点组成一个第N级别的聚合区域; 重复上述步骤,直到访问完数据库中的所有第N-I级别的虚拟节点。
4. 如权利要求1?3任一所述的方法,其特征在于,确定数据库中的每个节点分别与所 属的每一级别的聚合区域的中心节点之间的最短路径,包括: 根据确定的每个节点分别与所属的低级别的聚合区域的中心节点之间的最短路径,确 定数据库中的每个节点分别与所属的高级别的聚合区域的中心节点之间的最短路径。
5. 如权利要求1?4任一所述的方法,其特征在于,根据存储的聚合区域及最短路径, 确定查询请求中的两个节点之间的最短路径之前,还包括: 确定所述查询请求中的两个节点之间不存在直接连接的边。
6. 如权利要求1?5任一所述的方法,其特征在于,根据存储的聚合区域及最短路径, 确定查询请求中的两个节点之间的最短路径,包括: 若确定所述查询请求中的两个节点属于不同的最高级别的聚合区域,则将所述两个节 点分别与所属的最高级别的聚合区域的中心节点之间的最短路径,以及所述两个节点分别 所属的最高级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的最短路 径; 若确定所述查询请求中的两个节点属于相同的最高级别的聚合区域,则判断是否存在 所述两个节点所属的不同的第M级别的聚合区域,其中,M为正整数,所述第M级别为所述 两个节点所属的不同的同一级别的聚合区域中的最高级别;若存在,则将所述两个节点分 别与所属的第M+1级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的 最短路径,若不存在,则将所述两个节点分别与所属的第一级别的聚合区域的中心节点之 间的最短路径作为所述两个节点之间的最短路径。
7. -种最短路径查询装置,其特征在于,该装置包括: 第一确定模块,用于确定并存储数据库中的每个节点分别所属的每一级别的聚合区 域,以及每个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,和不同 最高级别的聚合区域的中心节点之间的最短路径;其中,高级别的聚合区域包含多个不同 的低级别的聚合区域;针对任意一级别的聚合区域,相邻的聚合区域最多包括一个公共节 点或最多包括一个比所述任意一级别低一级别的聚合区域; 第二确定模块,用于根据存储的聚合区域及最短路径,确定查询请求中的两个节点之 间的最短路径。
8. 如权利要求7所述的装置,其特征在于,所述第一确定模块具体用于: 访问数据库中的一个未被访问的度最大的节点,及与所述度最大的节点存在直接连接 的边的所有节点,并将访问的所述度最大的节点及与所述度最大的节点存在直接连接的边 的所有节点组成一个第一级别的聚合区域; 重复上述步骤,直到访问完数据库中的所有节点。
9. 如权利要求8所述的装置,其特征在于,所述第一确定模块具体用于根据以下步骤 确定数据库中的每个节点分别所属的第N级别的聚合区域,N为大于1的正整数,: 以每个第N-I级别的聚合区域为一个第N-I级别的虚拟节点,访问数据库中的一个未 被访问的度最大的第N-I级别的虚拟节点,及与所述度最大的第N-I级别的虚拟节点存在 直接连接的边的所有第N-I级别的虚拟节点,并将访问的所述度最大的第N-I级别的虚拟 节点及与所述度最大的第N-I级别的虚拟节点存在直接连接的边的所有第N-I级别的虚拟 节点组成一个第N级别的聚合区域; 重复上述步骤,直到访问完数据库中的所有第N-I级别的虚拟节点。
10. 如权利要求7?9任一所述的装置,其特征在于,所述第二确定模块具体用于: 根据确定的每个节点分别与所属的低级别的聚合区域的中心节点之间的最短路径,确 定数据库中的每个节点分别与所属的高级别的聚合区域的中心节点之间的最短路径。
11. 如权利要求7?10任一所述的装置,其特征在于,所述第二确定模块还用于,根据 存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径之前,确定所述 查询请求中的两个节点之间不存在直接连接的边。
12. 如权利要求7?11任一所述的装置,其特征在于,所述第二确定模块具体用于: 若确定所述查询请求中的两个节点属于不同的最高级别的聚合区域,则将所述两个节 点分别与所属的最高级别的聚合区域的中心节点之间的最短路径,以及所述两个节点分别 所属的最高级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的最短路 径; 若确定所述查询请求中的两个节点属于相同的最高级别的聚合区域,则判断是否存在 所述两个节点所属的不同的第M级别的聚合区域,其中,M为正整数,所述第M级别为所述 两个节点所属的不同的同一级别的聚合区域中的最高级别;若存在,则将所述两个节点分 别与所属的第M+1级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的 最短路径,若不存在,则将所述两个节点分别与所属的第一级别的聚合区域的中心节点之 间的最短路径作为所述两个节点之间的最短路径。
【文档编号】H04L12/891GK104518965SQ201310462558
【公开日】2015年4月15日 申请日期:2013年9月30日 优先权日:2013年9月30日
【发明者】王靓伟 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1