【技术实现步骤摘要】
一种单机核外属性图计算方法
本专利技术属于计算机科学
,尤其涉及一种单机核外属性图计算方法。
技术介绍
随着现实生活中图数据(如:社交网络、用户-物品网络、路网、交易网络等等)的快速增长,用户需要从这些图数据中挖掘具有潜在价值的信息的高效计算系统。由于现实场景下的图往往包含上十亿级的顶点和边,近年来,大规模图计算已成为研究领域中的热点问题。大规模图计算系统主要可分为两类,即分布式系统和单机系统。分布式系统通常是处理大规模数据的自然的选择,目前已有许多分布式图计算系统的相关研究。由于分布式系统需要将图分布在集群的若干台机器上,故分布式系统需要把大规模图切分为若干子图,即“分图”(partitioning),并将这些子图分别分布到不同机器上。图的分散分布使得分布式系统执行图算法任务时不可避免地在机器间进行大量消息交换与合并。雪上加霜的是,现实世界中许多图的偏斜度分布(skeweddegreedistribution)、高密度(highdensity)和大直径(largediameter)等特征导致分布式系统产生诸如负载不平衡(loadimbalance),同步开销(synchronizationoverhead)和容错开销(faulttoleranceoverhead)等问题。单机系统则能够有效避免机器间通信带来的问题。单机图计算系统又可细分为单机核内(in-memory)图计算系统和单机核外(out-of-core)图计算系统。单机核内图计算系统将图数据完全存放在内存中,其能够处理的图数据规模受内存大小的 ...
【技术保护点】
1.一种单机核外属性图计算方法,其特征在于,包括以下步骤:/n步骤1:构建属性图,所述属性图由多个顶点、多条边、顶点对应的多个属性,以及边对应的多个属性构成;/n步骤2:将属性图的多个顶点通过外层不对称网格分图策略算法进行分簇,得到顶点簇以及每对顶点簇对应的边集合;/n步骤3:将步骤2中通过外层不对称网格分图策略算法得到的P
【技术特征摘要】
1.一种单机核外属性图计算方法,其特征在于,包括以下步骤:
步骤1:构建属性图,所述属性图由多个顶点、多条边、顶点对应的多个属性,以及边对应的多个属性构成;
步骤2:将属性图的多个顶点通过外层不对称网格分图策略算法进行分簇,得到顶点簇以及每对顶点簇对应的边集合;
步骤3:将步骤2中通过外层不对称网格分图策略算法得到的Ps×Pt个边集合Block再次细化分簇,对每个Block通过内层不对称网格分图策略算法得到粒度更小的顶点簇以及每对细粒度顶点簇对应的细粒度边集合;
步骤4:对每个经过步骤3处理的Block(x,y)所得到的细粒度边集合Block(xa,yb)按源顶点簇优先的顺序重组,会得到一个细粒度边集合有序的一维数组Block’(x,y);
步骤5:对所有一维数组Block’(x,y)(x∈[1,Ps],y∈[1,Pt])按目的顶点簇优先的顺序重组,得到一个一维数组Block’(x,y)间有序的属性图二维数组Grid;
步骤6:通过步骤5得到的属性图二维数组Grid构建出1个拓扑数组Column(E)和q个边的属性的数组Column(AE(b)),b∈[1,q];
步骤7:对顶点的属性数据AV构建出m个顶点的属性一维数组Column(AV(a)),a∈[1,m];
步骤8:根据用户给定的属性条件限制,依次顺序遍历需要的在步骤7得到的顶点属性数组,在内存中得到一个顶点标记数组,再依次顺序遍历需要的在步骤6得到的边属性数组并结合顶点标记数组,最终得到在内存中的顶点标记数组和边标记数组;
步骤9:根据用户给定的计算任务,顺序读步骤6得到的拓扑数组,对读入的每条边通过步骤8得到的顶点标记数组和边标记数组判断该边是否需要进行计算,若需要则按用户定义的计算任务处理;遍历完拓扑数组中的每条边后,根据用户定义的计算任务判断是否满足计算任务结束条件,是则结束,用户发起新的计算任务时直接进入步骤8,否则重复步骤9。
2.根据权利要求1所述的单机核外属性图计算方法,其特征在于,
步骤1中所述的属性图,可概括为顶点和边都具有属性的拓扑图,具体定义为:
G=(V,E,AV,AE)
V={vi|i∈[1,|V|]}
其中,V表示属性图中顶点的集合,vi表示属性图中第i个顶点;
E={ei,j=<vi,vj>|vi∈V,vj∈V}表示属性图中边的集合,ei,j=<vi,vj>表示属性图中第i个顶点到第j个顶点的有向连边,i∈[1,|V|],j∈[1,|V|];任意无向边ei,j′=(vi,vj)在E中将被表示为ei,j=<vi,vj>和eji=<vj,vi>两条对向的有向边;
AV表示属性图中顶点的一组属性值的集合,m表示顶点的属性的数量,AV={AV(a,i)|a∈[1,m],i∈[1,|V|]},AV(a,i)表示第i个顶点的第a个属性值,AV(a)表示顶点的第a个属性值;对于任意顶点v∈V,v有且仅有m个顶点属性及对应的m个属性值;
AE表示属性图中连边的一组属性值的集合,q表示边的属性的数量,AE={AE(b,i,j)|ei,j∈E,i∈[1,|V|],j∈[1,|V|],b∈[1,q]},AE(b,i,j)表示连边ei,j的第b个属性值,AE(b)表示边的第b个属性值;对于任意边e∈E,e有且仅有q个边属性及对应的q个属性值;
|V|为集合V的势,表示属性图顶点的数量;
|E|为集合E的势,表示属性图连边的数量。
3.根据权利要求1所述的单机核外属性图计算方法,其特征在于,
步骤2所述顶点簇集合包括:源顶点簇集合、目的顶点簇集合;
所述源顶点簇的集合定义为VS,所述源顶点簇集合内的源顶点簇的数目为Ps,VS(x)表示源顶点簇集合内的第x个源顶点簇,x∈[1,Ps];
所述目的顶点簇的集合定义为VT,所述目的顶点簇集合内的目的顶点簇的数目为Pt,VT(y)表示目的顶点簇集合内的第y个目的顶点簇,y∈[1,Pt];
Ps和Pt均为正整数,Ps≥Pt;
步骤2所述源顶点簇定义为:
VS(x)={vi|i∈(|V|×(x-1)/Ps,|V|×x/Ps],x∈[1,Ps]},
步骤2所述目的顶点簇定义为:
VT(y)={vi|i∈(|V|×(y-1)/Pt,|V|×y/Pt],y∈[1,Pt]},
对于属性图中第i个顶点即vi∈V(i∈[1,|V|]):
vi所在的源顶点簇VS为第i/(|V|/Ps)个,即VS(i/(|V|/Ps));
vi所在的目的顶点簇为第i/(|V|/Pt)个,即VT(i/(|V|/Pt));
根据外层不对称网格分图策略分图后,步骤1所定义的图的边集E将被划分出Ps×Pt个边的子集,定义为Block(x,y),Block(x,y)表示源顶点簇VS(x)和目的顶点簇VT(y)对应的边集合,其符号定义为:
Block(x,y)={ei,j|vi∈VS(x),vj∈VT(y)},x∈[1,Ps],y∈[1,Pt]
|Block(x,y)|为集合Block(x,y)的势,表示顶点簇VS(x)和VT(y)对应的边集合Block(x,y)中连边的数量。
4.根据权利要求1所述的单机核外属性图计算方法,其特征在于,
步骤3所述内层不对称网格分图策略算法的应用对象是步骤2得到的每对顶点簇对应的边集合中超过一定大小记为Csize的边集合,即满足|Block(x,y)|>Csize的Block(x,y);
步骤3所述的对边集合再次细化分簇具体为:
对每个|Block(x,y)|>Csize的边集合Block(x,y),通过内层不对称网格分图策略算法将得到Ps’个细粒度源顶点簇VS(xa,Block(x,y))(x∈[1,Ps],a∈[1,Ps’],Pt’个细粒度目的顶点簇VT(yb,Block(x,y))(y∈[1,Pt],b∈[1,Pt’],以及每对细粒度顶点簇对应的细粒度边集合Block(xa,yb);
步骤3所述细粒度源顶点簇定义为:
(结果为小数时向上取整),x∈[1,Ps],a∈[1,Ps’],N=|V|,VS(xa,Block(x,y))表示VS(x)针对Block(x,y)划分的第a个细粒度源顶点簇;
步骤3所述细粒度目的顶点簇定义为:
(结果为小数时向上取整),y∈[1,Pt],b∈[1...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。