本发明属于数据处理,具体涉及一种计算数据图谱海量节点间最短路径的算法。
背景技术:
1、我们想要在数据图谱中计算两个节点之间的最短路径,常用的算法有很多,但如果节点规模达到海量规模,例如节点数达到百万级,它们存在以下缺点:
2、1.内存开销巨大。以节点数达到百万级为例,邻接矩阵就需要存储t级别的数据,这种情况下普通的服务器将无法承受如此大的内存开销。
3、2.不适用于动态数据图谱。如果图的结构或权重发生变化,需要重新运行算法来更新最短路径。即使改变的节点与其他现有节点没有太多的联系,但算法也必须全部计算一遍,给系统带来了不必要的开销。
4、3.不支持并行计算。普通算法只支持单节点来计算最短路径,这样对这台服务器的cpu性能要求很高,cpu将成为算法最大的瓶颈之一。
技术实现思路
1、本发明的目的在于提供一种计算数据图谱海量节点间最短路径的算法,克服了现有技术的不足,针对海量规模的节点进行优化,动态的运行算法更新最短路径,缩短了计算时间,提高了运行效率。
2、为解决上述问题,本发明所采取的技术方案如下:
3、一种计算数据图谱海量节点间最短路径的算法,包括以下步骤:
4、步骤1、图像数据初始化,定义对应的邻接矩阵,通过邻接矩阵存储所有的顶点和边;
5、步骤2、对图像数据进行压缩,采用bitmap存储压缩后的图像数据;
6、步骤3、采用均匀切割的方式将邻接矩阵分割为多个大小相等的部分;
7、步骤4、算法分配中心为每个数据节点创建一个独立的计算任务,每个独立的任务将输入数据转换为键值对集合;
8、步骤5、对单节点的图像数据进行最短路径的计算,然后重复遍历所有节点;
9、步骤6、将所有节点的计算结果进行分组,并按照键值进行排序,执行合并函数,得到最短路径结果。
10、进一步,步骤1中所述定义对应的邻接矩阵,具体步骤为:
11、(1)获取图像数据,对图像数据进行特征提取,得到第一特征图和第二特征图;
12、(2)根据所述第一特征图,对参数化对象模型的相机参数、姿态参数和形状参数进行初始化,得到初始对象模型;
13、(3)根据初始化的相机参数、姿态参数和形状参数以及所述第二特征图,生成携带有对象空间结构信息的图结构对应的图节点特征;
14、(4)根据初始对象模型的顶点坐标之间的关系,生成图像对应的邻接矩阵。
15、进一步,步骤2中所述图像数据进行压缩,具体压缩步骤包括:
16、一个向图其中包含5个节点(a、b、c、d、e)和一些有向边;
17、将使用链接矩阵来表示这个图的连接关系;
18、具体的向边信息如下:
19、从节点a到节点b存在一条有向边;
20、从节点a到节点c存在一条有向边;
21、从节点b到节点c存在一条有向边;
22、从节点c到节点d存在一条有向边;
23、从节点d到节点e存在一条有向边;
24、现在,我们可以构建连接矩阵:
25、
26、在这个连接矩阵中:
27、行代表起始节点,列代表目标节点;
28、元素(i,j)表示从节点i到节点j是否存在有向边;如果有,则元素的值为1;如果没有,则为0。
29、进一步,步骤5中所述最短路径的计算,包括以下步骤:
30、(1)创建一个集合用于存储已访问的节点,初始化所有节点的距离值为无穷大,将起始节点的距离值设为0;
31、(2)在对于未访问的节点中,选择距离值最小的节点作为当前节点,将当前节点标记为已访问;
32、(3)遍历当前节点的所有邻居节点,计算当前节点到达邻居节点的距离,并将该距离与邻居节点当前的距离值进行比较,如果新计算得到的距离值更小,则更新邻居节点的距离值;
33、(4)如果更新了邻居节点的距离值,需要相应地更新优先队列以保持最小堆的性质。
34、进一步,步骤五中算法分配中心根据图像数据的结构或权重的变化,定位到发生变化的数据所在的节点,然后对节点进行计算,接着将当前计算结果与以前的计算结果执行合并函数,最后将输出结果持久化写入数据库中。
35、进一步,步骤6中所述合并函数的任务为对每个键的所有值执行汇总、聚合或其他计算操作,合并任务的输出结果被持久化写入数据库中,用于后续的分析和查询使用。
36、本发明与现有技术相比较,具有以下有益效果:
37、1.本发明的算法不受数据图谱中节点数量的影响,随着节点规模的扩大,可以水平动态扩容。
38、2.对图数据进行压缩,采用bitmap存储,对原先单字节存储的数据,绝对存储空间降低到原来的1/8。另外支持多节点分割,假定分为十个子矩阵,那么单节点的存储空间规模达到未压缩前的1/80。
39、3.支持动态数据图谱,例如图的结构或权重发生变化,我们的算法不用对所有数据全部计算一遍,显示提升了系统的性能。
40、4.支持并行计算,缩短了算法运行的时间。以十个节点为例,去除分解和合并的时间,算法总体运算时间可达到单机的1/9。
1.一种计算数据图谱海量节点间最短路径的算法,其特征在于:包括以下步骤:
2.根据权利要求1所述的一种计算数据图谱海量节点间最短路径的算法,其特征在于:步骤1中所述定义对应的邻接矩阵,具体步骤为:
3.根据权利要求1所述的一种计算数据图谱海量节点间最短路径的算法,其特征在于:步骤2中所述图像数据进行压缩,具体压缩步骤包括:
4.根据权利要求1所述的一种计算数据图谱海量节点间最短路径的算法,其特征在于:步骤5中所述最短路径的计算,包括以下步骤:
5.根据权利要求1所述的一种计算数据图谱海量节点间最短路径的算法,其特征在于:步骤五中算法分配中心根据图像数据的结构或权重的变化,定位到发生变化的数据所在的节点,然后对节点进行计算,接着将当前计算结果与以前的计算结果执行合并函数,最后将输出结果持久化写入数据库中。
6.根据权利要求1所述的一种计算数据图谱海量节点间最短路径的算法,其特征在于:步骤6中所述合并函数的任务为对每个键的所有值执行汇总、聚合或其他计算操作,合并任务的输出结果被持久化写入数据库中,用于后续的分析和查询使用。