本发明涉及图计算,更具体地,涉及一种基于缓存机制的图数据划分方法。
背景技术:
1、图划分是分布式图处理的一个初步步骤,近些年为了解决数据规模不断扩张所引起的处理大规模图数据划分时的效率问题,学者提出了简洁高效的流式图划分算法,但划分效果相较于传统离线算法仍有较大差距。对于如何在保留流式划分简洁高效的前提下提升划分效果的问题,仍有较大的研究空间。
2、fennel算法将图流式划分问题转化为了基于数据流上的模块最大化(modularitymaximization)问题,核心思路是最大化相邻顶点数和最小化不相邻顶点数,以此推导了相关的目标函数公式。虽然计算较为复杂,但可实现负载平衡下边割率相对于其他点划分算法较低的划分效果,是目前划分效果最好的一类算法。缺点是需要提前获取全图的顶点数,无法处理动态图,且未能充分利用图数据的局部结构信息。
3、现有技术公开了一种图划分方法、装置及计算机可读存储介质。其中,方法包括预先根据并行计算系统各计算节点的计算性能按照预设度量机制确定用于将图数据成比例分配至各计算节点的图划分规则。在进行图划分过程中,先根据图顶点数和加载线程数确定各加载线程的数据读取范围,同时调用多个加载线程以顶点为单位并行读取待划分图数据,并将各加载线程读取的图顶点数据传递给相应的划分线程;各划分线程基于当前时刻已经划分好的图数据、按照图划分规则确定相应线程内被传入的每个图顶点数据所属子图,最后基于子图与计算节点间的对应关系将各图顶点数据划分至相应计算节点,可高效、准确地将大图划分为一系列顶点数或连接边数满足任意比例关系的子图。该方法在图数据规模过大,仍然未能充分利用图数据的局部结构信息,划分效果不佳。
技术实现思路
1、本发明提供一种基于缓存机制的图数据划分方法,提高fennel算法在图数据规模过大的情况下的划分精度。
2、为解决上述技术问题,本发明的技术方案如下:
3、一种基于缓存机制的图数据划分方法,包括以下步骤:
4、s1:获取图数据,根据所述图数据获取图数据的全图顶点数、每个顶点的邻居列表、初始顶点划分集以及初始分区数,顶点划分集包括若干顶点集;
5、s2:根据图数据的全图顶点数和初始分区数,计算负载上限;
6、s3:根据顶点及该顶点的邻居列表计算该顶点在每一个当前未达到所述负载上限的顶点集的关联度得分;
7、s4:判断顶点是否满足缓存条件,若满足,不进行缓存处理,直接根据关联度得分进行划分;若不满足,则将该顶点划分入缓存模块,当缓存模块达到最大容量限制时,缓存模块返回缓存模块最适合当前进行划分的顶点及其邻居列表,返回步骤s3;
8、s5:判断是否所有顶点均已被划分完成,如果是,则得到最终的图数据划分集;如果不是,则返回步骤s3。
9、优选的,步骤s1获取的图数据的类型为边集数组。
10、3.根据权利要求1所述的基于缓存机制的图数据划分方法,其特征在于,步骤s2中根据图数据的全图顶点数和初始分区数,计算负载上限,具体为:
11、
12、式中,loadlimit为负载上限,n为图数据的全图顶点数,k为初始分区数,v为调节参数。
13、优选的,v设置为0.001~0.005。
14、优选的,步骤s3中根据顶点及该顶点的邻居列表计算该顶点在每一个当前未达到所述负载上限的顶点集的关联度得分,具体为:
15、δg(v,vi)=|vi∩n(v)|-αγ|vi|γ-1
16、
17、式中,δg(v,vi)表示顶点v在当前未达负载上限loadlimit的顶点集vi上的关联度得分,δg(v,vi)包括得分项|vi∩n(v)|和惩罚项αγ|vi|γ-1,n(v)表示顶点v的邻居列表,α为惩罚系数,k为初始分区数,m表示图数据中边的数量,n为图数据的全图顶点数,γ为缓存参数。
18、优选的,步骤s3中计算关联度得分时,创建临时空间,所述临时空间记录当前未达负载上限loadlimit的顶点集以及顶点在当前未达到所述负载上限的顶点集的得分项|vi∩n(v)|。
19、优选的,步骤s4中满足缓存条件,不进行缓存处理,直接进行划分,具体为:
20、若:
21、maxδf(v,vi):=|vi∩n(v)|≠0
22、式中,f(v,vi)表示顶点v的邻居集合中,被划分至顶点集vi的顶点个数;
23、则不必进行缓存处理,仅需根据关联度得分进行判定,找到v的最优划分顶点集,该顶点集vi满足:
24、
25、优选的,步骤s4中若不满足,则将该顶点划分入缓存模块,当缓存模块达到最大容量限制时,缓存模块返回缓存模块最适合当前进行划分的顶点及其邻居列表,具体为:
26、若:
27、maxδf(v,vi):=|vi∩n(v)|=0
28、此时若缓存模块未达到最大容量限制,则直接将顶点v加入缓存模块,处理下一个点流中的顶点;若缓存模块达到最大容量限制,则将顶点v加入缓存模块,并返回缓存模块中最适合当前进行划分的顶点u及其邻居列表,并对顶点u进行划分。
29、优选的,递归调用cc-fennel方法对顶点u进行划分。
30、优选的,所述返回缓存模块中最适合当前进行划分的顶点u及其邻居列表u,具体为:
31、通过cva方法返回下一个用于划分的顶点,所述cva方法计算缓存模块中每个顶点的得分,计算缓存模块中顶点与已划分顶点的相关关系,并返回得分最高的顶点。
32、与现有技术相比,本发明技术方案的有益效果是:
33、本发明改变了顶点划分的顺序,确定了针对数据流中的单一顶点的分配规则,后续通过重复以上一系列操作读取流图g,直到g的所有节点都分配完毕,即可完成对流图的划分,提高了fennel算法在图数据规模过大的情况下的划分精度。
1.一种基于缓存机制的图数据划分方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于缓存机制的图数据划分方法,其特征在于,步骤s1获取的图数据的类型为边集数组。
3.根据权利要求1所述的基于缓存机制的图数据划分方法,其特征在于,步骤s2中根据图数据的全图顶点数和初始分区数,计算负载上限,具体为:
4.根据权利要求3所述的基于缓存机制的图数据划分方法,其特征在于,ν设置为0.001~0.005。
5.根据权利要求1所述的基于缓存机制的图数据划分方法,其特征在于,步骤s3中根据顶点及该顶点的邻居列表计算该顶点在每一个当前未达到所述负载上限的顶点集的关联度得分,具体为:
6.根据权利要求5所述的基于缓存机制的图数据划分方法,其特征在于,步骤s3中计算关联度得分时,创建临时空间,所述临时空间记录当前未达负载上限loadlimit的顶点集以及顶点在当前未达到所述负载上限的顶点集的得分项|vi∩n(v)|。
7.根据权利要求6所述的基于缓存机制的图数据划分方法,其特征在于,步骤s4中满足缓存条件,不进行缓存处理,直接进行划分,具体为:
8.根据权利要求7所述的基于缓存机制的图数据划分方法,其特征在于,步骤s4中若不满足,则将该顶点划分入缓存模块,当缓存模块达到最大容量限制时,缓存模块返回缓存模块最适合当前进行划分的顶点及其邻居列表,具体为:
9.根据权利要求8所述的基于缓存机制的图数据划分方法,其特征在于,递归调用cc-fennel方法对顶点u进行划分。
10.根据权利要求9所述的基于缓存机制的图数据划分方法,其特征在于,所述返回缓存模块中最适合当前进行划分的顶点u及其邻居列表u,具体为: