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

技术编号:11295815 阅读:68 留言:0更新日期:2015-04-15 12:04
本发明专利技术涉及信息技术领域,尤其涉及一种最短路径查询方法及装置,用以解决现有技术中预先计算并存储数据库中所有节点间的最短路径的方式耗费存储空间较大的问题;本发明专利技术的方法包括:确定并存储数据库中的每个节点分别所属的每一级别的聚合区域,以及每个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,和不同最高级别的聚合区域的中心节点之间的最短路径;根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径。本发明专利技术方法所需存储空间较小,且根据存储的聚合区域和最短路径就可以确定查询请求中的两个节点之间的最短路径,查询效率较高。

【技术实现步骤摘要】
一种最短路径查询方法及装置
本专利技术涉及信息
,尤其涉及一种最短路径查询方法及装置。
技术介绍
确定节点间的最短路径是在数据库应用中基本的操作需求,传统获取最短路径的方式是在查询数据库时临时计算最短路径,但是,随着数据库中的图数据规模的增长,采用传统方式获取最短路径时,无法一次通过内存读取整个数据库中的图数据,这样很多传统的基于内存的图算法都需要重新进行调整,每次只能加载一部分需要的图数据进行计算,而不是一次加载整个数据库中的图数据,严重降低了查询效率。为了解决上述传统方式查询效率低的问题,开始对数据库中的图数据进行预先处理,比较普遍的一种方式是预先计算并存储数据库中所有节点间的最短路径;但是,这种方式将耗费巨大的存储空间,甚至导致存储器件,如内存、硬盘等溢出,影响正常工作流程。
技术实现思路
本专利技术提供一种最短路径查询方法及装置,用以解决预先计算并存储数据库中所有节点间的最短路径的方式,耗费存储空间较大的问题。第一方面,提供一种最短路径查询方法,包括:确定并存储数据库中的每个节点分别所属的每一级别的聚合区域,以及每个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,和不同最高级别的聚合区域的中心节点之间的最短路径;其中,高级别的聚合区域包含多个不同的低级别的聚合区域;针对任意一级别的聚合区域,相邻的聚合区域最多包括一个公共节点或最多包括一个比所述任意一级别低一级别的聚合区域;根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径。结合第一方面,在第一种可能的实现方式中,确定数据库中的每个节点分别所属的第一级别的聚合区域,包括:访问数据库中的一个未被访问的度最大的节点,及与所述度最大的节点存在直接连接的边的所有节点,并将访问的所述度最大的节点及与所述度最大的节点存在直接连接的边的所有节点组成一个第一级别的聚合区域;重复上述步骤,直到访问完数据库中的所有节点。结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,确定数据库中的每个节点分别所属的第N级别的聚合区域,N为大于1的正整数,包括:以每个第N-1级别的聚合区域为一个第N-1级别的虚拟节点,访问数据库中的一个未被访问的度最大的第N-1级别的虚拟节点,及与所述度最大的第N-1级别的虚拟节点存在直接连接的边的所有第N-1级别的虚拟节点,并将访问的所述度最大的第N-1级别的虚拟节点及与所述度最大的第N-1级别的虚拟节点存在直接连接的边的所有第N-1级别的虚拟节点组成一个第N级别的聚合区域;重复上述步骤,直到访问完数据库中的所有第N-1级别的虚拟节点。结合第一方面,或第一方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,确定数据库中的每个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,包括:根据确定的每个节点分别与所属的低级别的聚合区域的中心节点之间的最短路径,确定数据库中的每个节点分别与所属的高级别的聚合区域的中心节点之间的最短路径。结合第一方面,或第一方面的第一至三种任意一种可能的实现方式,在第四种可能的实现方式中,根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径之前,还包括:确定所述查询请求中的两个节点之间不存在直接连接的边。结合第一方面,或第一方面的第一至四种任意一种可能的实现方式,在第五种可能的实现方式中,根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径,包括:若确定所述查询请求中的两个节点属于不同的最高级别的聚合区域,则将所述两个节点分别与所属的最高级别的聚合区域的中心节点之间的最短路径,以及所述两个节点分别所属的最高级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的最短路径;若确定所述查询请求中的两个节点属于相同的最高级别的聚合区域,则判断是否存在所述两个节点所属的不同的第M级别的聚合区域,其中,M为正整数,所述第M级别为所述两个节点所属的不同的同一级别的聚合区域中的最高级别;若存在,则将所述两个节点分别与所属的第M+1级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的最短路径,若不存在,则将所述两个节点分别与所属的第一级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的最短路径。第二方面,提供一种最短路径查询装置,该装置包括:第一确定模块,用于确定并存储数据库中的每个节点分别所属的每一级别的聚合区域,以及每个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,和不同最高级别的聚合区域的中心节点之间的最短路径;其中,高级别的聚合区域包含多个不同的低级别的聚合区域;针对任意一级别的聚合区域,相邻的聚合区域最多包括一个公共节点或最多包括一个比所述任意一级别低一级别的聚合区域;第二确定模块,用于根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径。结合第二方面,在第一种可能的实现方式中,所述第一确定模块具体用于:访问数据库中的一个未被访问的度最大的节点,及与所述度最大的节点存在直接连接的边的所有节点,并将访问的所述度最大的节点及与所述度最大的节点存在直接连接的边的所有节点组成一个第一级别的聚合区域;重复上述步骤,直到访问完数据库中的所有节点。结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一确定模块具体用于根据以下步骤确定数据库中的每个节点分别所属的第N级别的聚合区域,N为大于1的正整数,:以每个第N-1级别的聚合区域为一个第N-1级别的虚拟节点,访问数据库中的一个未被访问的度最大的第N-1级别的虚拟节点,及与所述度最大的第N-1级别的虚拟节点存在直接连接的边的所有第N-1级别的虚拟节点,并将访问的所述度最大的第N-1级别的虚拟节点及与所述度最大的第N-1级别的虚拟节点存在直接连接的边的所有第N-1级别的虚拟节点组成一个第N级别的聚合区域;重复上述步骤,直到访问完数据库中的所有第N-1级别的虚拟节点。结合第二方面,或第二方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,所述第二确定模块具体用于:根据确定的每个节点分别与所属的低级别的聚合区域的中心节点之间的最短路径,确定数据库中的每个节点分别与所属的高级别的聚合区域的中心节点之间的最短路径。结合第二方面,或第二方面的第一至三种任意一种可能的实现方式,在第四种可能的实现方式中,所述第二确定模块还用于,根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径之前,确定所述查询请求中的两个节点之间不存在直接连接的边。结合第二方面,或第二方面的第一至四种任意一种可能的实现方式,在第五种可能的实现方式中,所述第二确定模块具体用于:若确定所述查询请求中的两个节点属于不同的最高级别的聚合区域,则将所述两个节点分别与所属的最高级别的聚合区域的中心节点之间的最短路径,以及所述两个节点分别所属的最高级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的最短路径;若确定所述查询请求中的两个节点属于相同的最高级别的聚合区域,则判断是否存在所述两个节点所属的不同的第M级别的聚合区域,其中,M为正整数,所述第M级别为所述两个节点所属的不同的同一级别的聚合区域中的最高级别;若存在,则将所述两个节点分别与所属的第M+1级别的聚本文档来自技高网...
一种最短路径查询方法及装置

【技术保护点】
一种最短路径查询方法,其特征在于,该方法包括:确定并存储数据库中的每个节点分别所属的每一级别的聚合区域,以及每个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,和不同最高级别的聚合区域的中心节点之间的最短路径;其中,高级别的聚合区域包含多个不同的低级别的聚合区域;针对任意一级别的聚合区域,相邻的聚合区域最多包括一个公共节点或最多包括一个比所述任意一级别低一级别的聚合区域;根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径。

【技术特征摘要】
1.一种最短路径查询方法,其特征在于,该方法包括:确定并存储数据库中的每个节点分别所属的每一级别的聚合区域,以及每个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,和不同最高级别的聚合区域的中心节点之间的最短路径;其中,高级别的聚合区域包含多个不同的低级别的聚合区域;针对任意一级别的聚合区域,相邻的聚合区域最多包括一个公共节点或最多包括一个比所述任意一级别低一级别的聚合区域;根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径。2.如权利要求1所述的方法,其特征在于,确定数据库中的每个节点分别所属的第一级别的聚合区域,包括:访问数据库中的一个未被访问的度最大的节点,及与所述度最大的节点存在直接连接的边的所有节点,并将访问的所述度最大的节点及与所述度最大的节点存在直接连接的边的所有节点组成一个第一级别的聚合区域;重复上述步骤,直到访问完数据库中的所有节点。3.如权利要求2所述的方法,其特征在于,确定数据库中的每个节点分别所属的第N级别的聚合区域,N为大于1的正整数,包括:以每个第N-1级别的聚合区域为一个第N-1级别的虚拟节点,访问数据库中的一个未被访问的度最大的第N-1级别的虚拟节点,及与所述度最大的第N-1级别的虚拟节点存在直接连接的边的所有第N-1级别的虚拟节点,并将访问的所述度最大的第N-1级别的虚拟节点及与所述度最大的第N-1级别的虚拟节点存在直接连接的边的所有第N-1级别的虚拟节点组成一个第N级别的聚合区域;重复上述步骤,直到访问完数据库中的所有第N-1级别的虚拟节点。4.如权利要求1~3任一所述的方法,其特征在于,确定数据库中的每个节点分别与所属的每一级别的聚合区域的中心节点之间的最短路径,包括:根据确定的每个节点分别与所属的低级别的聚合区域的中心节点之间的最短路径,确定数据库中的每个节点分别与所属的高级别的聚合区域的中心节点之间的最短路径。5.如权利要求1~3任一所述的方法,其特征在于,根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径之前,还包括:确定所述查询请求中的两个节点之间不存在直接连接的边。6.如权利要求1~3任一所述的方法,其特征在于,根据存储的聚合区域及最短路径,确定查询请求中的两个节点之间的最短路径,包括:若确定所述查询请求中的两个节点属于不同的最高级别的聚合区域,则将所述两个节点分别与所属的最高级别的聚合区域的中心节点之间的最短路径,以及所述两个节点分别所属的最高级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的最短路径;若确定所述查询请求中的两个节点属于相同的最高级别的聚合区域,则判断是否存在所述两个节点所属的不同的第M级别的聚合区域,其中,M为正整数,所述第M级别为所述两个节点所属的不同的同一级别的聚合区域中的最高级别;若存在,则将所述两个节点分别与所属的第M+1级别的聚合区域的中心节点之间的最短路径作为所述两个节点之间的最短路径,若不存在,则将所述两个节点分别与所属的第一级别的聚合区域的中心节点之间的最短路径作为所...

【专利技术属性】
技术研发人员:王靓伟
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1