一种基于滑动窗口的大规模动态图划分方法技术

技术编号:22261409 阅读:28 留言:0更新日期:2019-10-10 14:22
本发明专利技术公开了一种基于滑动窗口的大规模动态图划分方法,属于计算机技术领域。本发明专利技术在增加顶点时,在滑动窗口中优先选取度数较高的顶点进行划分,既能够使得度数小的顶点向度数大的顶点聚集,又可以在每次划分时将尽可能多的顶点划分到适合的分区中,在实现负载均衡的同时降低了割边数量,从而极大减少图计算过程中的通信成本;在增加边时,在滑动窗口中优先选取邻接边最多的顶点进行划分,既能够有效避免频繁的顶点迁移,又可以在每次划分时将尽可能多的邻接顶点划分到合适的分区中,从而极大减少了顶点的迁移次数,提高了划分效率,并实现了负载均衡和割边数量的最小化。

A Large-scale Dynamic Graph Partition Method Based on Sliding Window

【技术实现步骤摘要】
一种基于滑动窗口的大规模动态图划分方法
本专利技术属于计算机
,具体涉及一种基于滑动窗口的大规模动态图划分方法。
技术介绍
图作为一种抽象的数据结构,可以表达复杂的结构和丰富的语义,在社交网络、通信和科学计算等诸多领域获得了广泛应用。近年来随着数据规模的不断增长,必须借助分布式图计算系统才能进行图数据的分析和处理。图划分是将大规模图结构数据分布到由大量计算节点组成的分布式计算系统中的技术,是实现分布式图计算的基础。在图划分中,如果一条边的两个顶点被划分到不同的计算节点上,则称这条边为割边。图划分应最小化割边数量并实现计算节点间的负载均衡。当前,很多应用场景的图数据会经常发生变化,如在社交网络中用户及相关关系的增加、删除等,这类图称为动态图。现有的图划分算法大多是针对静态图的,在划分前需要将图数据全部加载到内存后再进行划分,此类算法用于动态图划分时易产生巨大的计算开销。
技术实现思路
针对现有技术中存在的上述技术问题,本专利技术提出了一种基于滑动窗口的大规模动态图划分方法,设计合理,克服了现有技术的不足,具有良好的效果。为了实现上述目的,本专利技术采用如下技术方案:一种基于滑动窗口的大规模动态图划分方法,包括如下步骤:步骤1:增加顶点;具体包括如下步骤:输入为待增加顶点的集合Svertex、当前K个分区Pi(i=1,2,…,K)的各个分区的顶点集合;步骤1.1:置指定|Wvertex|的上限为Lvertex;其中,Wvertex为将被划分的候选顶点集合,其顶点来自Svertex;步骤1.2:取N=min{|Svertex|,Lvertex-|Wvertex|},即|Svertex|和Lvertex-|Wvertex|的最小值,将Svertex中的前N个顶点增加到Wvertex中,并从Svertex中删除这些顶点;步骤1.3:如果则输出划分结果,并结束划分流程;否则转步骤1.4;步骤1.4:取v=argmax{du|u∈Wvertex,du是顶点u的度数即与u相邻接的顶点的个数},即取Wvertex中度数最大的顶点v,如果有多个度数相同且度数最大的顶点,则任取其中一个;步骤1.5:取V=Q=R={v};V为被选中划分到某分区的顶点集合,Q为顶点队列;R为与V中的顶点相邻的所有顶点的集合;步骤1.6:若则转步骤1.8;否则从取Q中取出第1个顶点u,并从Q中删除该顶点;步骤1.7:取Q=Q∪{w|(u,w)是图的一条边,且R=R∪{w|(u,w)是图的一条边},然后转步骤1.6;步骤1.8:取V=V∪{w|w∈R,且步骤1.9:对每个分区Pi(i=1,2,…,K),计算其中,Ci为将顶点或边划分到第i个分区的代价;是拥有最多顶点的分区的顶点个数,α为计算Ci时分区负载和割边数量的权重系数,0<α<1;用于衡量分区负载情况,用户衡量割边数量;步骤1.10:取m=argmin{Ci|i=1,2,…,K},即Cm是所有{Ci|i=1,2,…,K}中的最小值;步骤1.11:将V中的所有顶点划分到分区Pm中;Pm为与最小值Cm对应的分区;步骤1.12:取Wvertex=Wvertex-V,然后转步骤1.2;步骤2:增加边;具体包括如下步骤:输入为待增加边的集合Sedge、当前K个分区Pi(i=1,2,…,K)的各个分区的顶点集合;前提:Sedge中边的所有顶点都已经划分完毕;步骤2.1:置指定|Wedge|的上限为Ledge;步骤2.2:取N=min{|Sedge|,Ledge-|Wedge|},即|Sdege|和Ledge-|Wedge|的最小值,将Sedge中的前N条边增加到Wedge中,并从Sedge中删除这些边;步骤2.3:如果则输出划分结果,并结束划分流程;否则转步骤2.4;步骤2.4:对每个在Wedge中的顶点v,取Ev={u|(u,v)∈Wedge};Ev为与顶点v相邻接的且属于Wedge的顶点集合;步骤2.5:取v=argmax{|Ev|},即取Wedge中邻接顶点个数最多的顶点v,如果有多个满足条件的顶点,则任取其中一个;步骤2.6:取T={w|(v,w)是图的一条边};T为与Wedge中的某个顶点相关联的所有顶点的集合;步骤2.7:对每个分区Pi(i=1,2,…,K),如果v∈Pi,则否则其中maxj=1,2,…,K{|Pj|}是拥有最多顶点的分区的顶点个数;步骤2.8:取m=argmin{Ci|i=1,2,…,K},即Cm是所有{Ci|i=1,2,…,K}中的最小值;步骤2.9:将v转移到分区Pm中;步骤2.10:对于Ev中的每一条边(u,v),u∈Pi,v∈Pj,若i≠j,则将(u,v)划分到Pi和Pj中;否则将(u,v)划分到Pi中;步骤2.11:Wedge=Wedge-Ev,转步骤2.2。本专利技术所带来的有益技术效果:本专利技术在增加顶点时,在滑动窗口中优先选取度数较高的顶点进行划分,既能够使得度数小的顶点向度数大的顶点聚集,又可以在每次划分时将尽可能多的顶点划分到适合的分区中,在实现负载均衡的同时降低了割边数量,从而极大减少图计算过程中的通信成本。本专利技术在增加边时,在滑动窗口中优先选取邻接边最多的顶点进行划分,既能够有效避免频繁的顶点迁移,又可以在每次划分时将尽可能多的邻接顶点划分到合适的分区中,从而极大减少了顶点的迁移次数,提高了划分效率,并实现了负载均衡和割边数量的最小化。附图说明图1为增加顶点的流程图。图2为增加边的流程图。图3为增加顶点时的窗口结构示意图。图4为增加边时的窗口结构示意图。图5为增加顶点下的滑动窗口模型示意图。图6为增加顶点实例图。图6(a)-(d)分别表示图5所示的A状态对应的顶点窗口中的信息、增加顶点前已经划分好的图结构数据的分区状态、采用流式图划分算法增加v8和v9后的划分结果,以及采用本专利技术所提出的算法增加v8和v9后的划分结果示意图。图7为增加边实例图。图7(a)-(d)分别表示增加边时的窗口信息、增加边之前已经划分好的图结构数据的分区状态、采用流式图划分算法增加(v1,v3)后的划分结果,以及采用本专利技术所提出的算法增加v1及其关联边后的划分结果示意图。具体实施方式下面结合附图以及具体实施方式对本专利技术作进一步详细说明:一种基于滑动窗口的大规模动态图划分方法,包括如下步骤:步骤1:增加顶点;其流程如图1所示,具体包括如下步骤:输入为待增加顶点的集合Svertex、当前K个分区Pi(i=1,2,…,K)的各个分区的顶点集合;步骤1.1:置指定|Wvertex|的上限为Lvertex;其中,Wvertex为将被划分的候选顶点集合,其顶点来自Svertex;步骤1.2:取N=min{|Svertex|,Lvertex-|Wvertex|},即|Svertex|和Lvertex-|Wvertex|的最小值,将Svertex中的前N个顶点增加到Wvertex中,并从Svertex中删除这些顶点;步骤1.3:如果则输出划分结果,并结束划分流程;否则转步骤1.4;步骤1.4:取v=argmax{du|u∈Wvertex,du是顶点u的度数即与u相邻接的顶点的个数},即取Wvertex中度数最大的顶点v,如果有多个度数相同且度数最大的顶点,则任取其中一个;步骤1.5:取V=Q=本文档来自技高网...

【技术保护点】
1.一种基于滑动窗口的大规模动态图划分方法,其特征在于:包括如下步骤:步骤1:增加顶点;具体包括如下步骤:输入为待增加顶点的集合Svertex、当前K个分区Pi(i=1,2,…,K)的各个分区的顶点集合;步骤1.1:置

【技术特征摘要】
1.一种基于滑动窗口的大规模动态图划分方法,其特征在于:包括如下步骤:步骤1:增加顶点;具体包括如下步骤:输入为待增加顶点的集合Svertex、当前K个分区Pi(i=1,2,…,K)的各个分区的顶点集合;步骤1.1:置指定|Wvertex|的上限为Lvertex;其中,Wvertex为将被划分的候选顶点集合,其顶点来自Svertex;步骤1.2:取N=min{|Svertex|,Lvertex-|Wvertex|},即|Svertex|和Lvertex-|Wvertex|的最小值,将Svertex中的前N个顶点增加到Wvertex中,并从Svertex中删除这些顶点;步骤1.3:如果则输出划分结果,并结束划分流程;否则转步骤1.4;步骤1.4:取v=argmax{du|u∈Wvertex,du是顶点u的度数即与u相邻接的顶点的个数},即取Wvertex中度数最大的顶点v,如果有多个度数相同且度数最大的顶点,则任取其中一个;步骤1.5:取V=Q=R={v};V为被选中划分到某分区的顶点集合,Q为顶点队列;R为与V中的顶点相邻的所有顶点的集合;步骤1.6:若则转步骤1.8;否则从取Q中取出第1个顶点u,并从Q中删除该顶点;步骤1.7:取R=RU{w|(u,w)是图的一条边},然后转步骤1.6;步骤1.8:取步骤1.9:对每个分区Pi(i=1,2,…,K),计算其中,Ci为将顶点或边划分到第i个分区的代价;是拥有最多顶点的分区的顶点个数,α为计算Ci时分区负载和割边数量的权重系数,0<α<1;用于衡量分区负载情况,用户衡量割边数量;步骤1.10:取m=argmin{Ci|i=1,2,…,K},即Cm是所有{Ci|i=1,2,…,K}中的最小值;步骤1.1...

【专利技术属性】
技术研发人员:崔焕庆荣炫宇贾瑞生魏永山张峰徐强
申请(专利权)人:山东科技大学
类型:发明
国别省市:山东,37

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

1