CN106445685A - 一种高效的分布式大规模动态图k核维护方法 - Google Patents
一种高效的分布式大规模动态图k核维护方法 Download PDFInfo
- Publication number
- CN106445685A CN106445685A CN201610837582.8A CN201610837582A CN106445685A CN 106445685 A CN106445685 A CN 106445685A CN 201610837582 A CN201610837582 A CN 201610837582A CN 106445685 A CN106445685 A CN 106445685A
- Authority
- CN
- China
- Prior art keywords
- summit
- check
- root
- core
- task queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/206—Drawing of charts or graphs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种高效的分布式大规模动态图k核维护方法,属于图形信息检索领域。该发明方法包括静态时k核维护子方法、插入边时k核维护子方法和删除边时k核维护子方法,静态时k核维护子方法充分利用每个顶点的邻居顶点信息,每个顶点通过访问这些邻居顶点的信息即可快速维护自己的核数;同时,插入边时k核维护子方法和删除边时k核维护子方法在计算过程中从插入或者删除了边的顶点开始进行遍历,快速找到可能发生更新的最小顶点任务队列集合,并对顶点任务队列中的每个顶点执行相同的操作。本发明方法能够实时更新动态图数据变化,且便于扩展进行分布式计算,可以处理单机难以计算的大规模图数据。
Description
技术领域
本发明属于图形信息检索领域,更具体地,涉及一种高效的分布式大规模动态图k核维护方法。
背景技术
随着互联网的飞速发展,人类的社会活动越来越网络化。人与人、人与实体之间关系被抽象成图,其中顶点表示人或者实体,边表示关系。在我们生活中充满了各种各样的图结构,微博、微信等社交网络,航班、火车、地铁等交通网络图,电商购物平台中商家商品和用户构成的买卖关系网络图,科研合作和论文引用网络图等等。这些网络图规模越来越大,数据越来越复杂,分析的难度也逐渐加大。因此直接对整个网络结构进行分析的难度很大,通常的做法是提取网络中的重要结构进行分析。其中最主要的一个工作是检测图中相互关系十分紧密的顶点所构成的紧密子图。而K核是一个强有力的标准来衡量复杂网络中一组顶点之间的紧密性。网络中节点度至少为k的极大子图构成图的k核。当一个节点属于K核,但不属于K+1核时,它的核数为k。K核分解的过程就是求出图中每个节点的核数。K核值越大的节点越靠近图的中心,在网络中的所处的地位越重要比传统研究中考虑的度数大的节点对于图的拓扑性质以及网络中信息的传播所起的作用要大。除了分析子图的紧密性,K核分解还被用于大规模网络的可视化、识别网络中最有影响力的传播者、社区发现等等。
在许多现实生活的应用中,例如社交网络和互联网拓扑结构,都是会随着时间的变化发生变化。在这样的动态网络中,许多应用需要实时的维护每个节点的核数。例如在一个基于k核的网络可视化中,图结构随着用户的增减而变化,可视化算法便需要实时更新每个顶点的核数来动态的显示图结构。然而,在一个动态网络中实时更新k核是十分困难的。因为插入或者删除一条边可能会让该条边的端点核数增加或者减少1,但是这个端点的核数更新可能会传播至其邻居顶点,邻居顶点再传播至邻居顶点,以至于最后甚至传遍整个网络。
现有的计算k核的算法大多集中在静态图上,计算图中所有顶点的核数。已有的关于动态图k核更新的方法,要么不够高效,复杂度过高,计算开销大,要么基于单机的计算,难于扩展至分布式方法,无法适用于大规模图数据。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种高效的分布式大规模动态图k核维护方法及系统,其目的在于采用迭代的计算框架,采用分布式思维,以动态图中每个顶点为最小单位,结合每个顶点的邻居顶点信息快速更新其真实核数,由此解决现有技术解决更新动态图k核过于复杂,开销过高,无法扩展分布式计算的问题。
为实现上述目的,按照本发明的一个方面,提供了一种高效的分布式大规模动态图k核维护方法,该方法包括静态k核维护子方法、插入边时k核维护子方法和删除边时k核维护子方法:
其中静态时k核维护子方法包括以下步骤:
(11)将图中所有顶点的当前核数初始化为自身的度数,并将当前核数信息传递给其邻居顶点,再将所有顶点加入任务队列;
(12)若队列为空,则结束流程;否则从任务队列中移除一个顶点,并求出此顶点的估算核数;
(13)若此顶点估算核数小于当前核数,则该顶点的最终核数为估算核数,再把最终核数传递给该顶点的邻居顶点,并将该顶点再次加入任务队列,并返回步骤(12);否则直接返回步骤(12)。
进一步地,所述步骤(12)中求各个顶点的估算核数值具体包括以下子步骤:
(121)当前顶点核数记为core_v,初始化数组count大小为core_v,数组内每个元素值为0;
(122)若当前顶点v还有未被访问的邻居顶点u,则选取core_u和core_v中较小的一个记为j,并且使数组count[j]增加1,之后返回到步骤(122);否则进入步骤(123);
(123)初始化为i=core_v;若i>2,则count[i-1]=count[i-1]+count[i],之后i=i-1,返回步骤(123);否则进入步骤(124);
(124)赋值i=core_v;
(125)若i>1,count[i]<i,则i=i-1,返回步骤(125);否则当前顶点的估算核数值即为i,结束流程。
其中插入边时k核维护子方法包括以下步骤:
(31)将图中每个顶点的当前核数初始化为自身的度数,初始化每个顶点的访问标志位visited为0,移除标志位removed为0,计算每个顶点的最大核度数(MCD)和纯核度数(PCD):
MCD(v)=|{u∈neighbor(v)|K(u)≥K(v)}|,
PCD(v)=|{u∈neighbor(v)|K(u)=K(v)∧MCD(u)>K(v)orK(u)>K(v)}|,
其中,顶点u是顶点v的邻居顶点,K(u)表示顶点u的核数,K(v)表示顶点v的核数;
(32)对于插入的边<U,V>,选取核数较小的顶点作为根顶点root,根顶点root的核数为K;
(33)初始化根顶点root,使根顶点当前核数cd(root)等于PCD(root),visited[root]=1,并将根顶点root加入任务队列;
(34)若任务队列为空,则将所有满足visited[v]=1,removed[v]=0条件的顶点v的最终核数值等于K+1,结束流程;否则进入步骤(35);
(35)从任务队列中移除的一个顶点为v,若顶点v的当前核数cd(v)>K,则进入步骤(36),否则进入步骤(38);
(36)若v还有未被访问过的邻居顶点u,则进入步骤(37);否则结束流程;
(37)若邻居顶点u满足其最终核数k(u)=K,并且u的最大核度数MCD(u)>K,并且visited[u]=0,则将顶点u加入任务队列,并且使visited[u]=1,cd(u)=cd(u)+PCD(u),之后返回步骤(36);否则直接返回步骤(36)
(38)判断顶点removed[v]=0是否成立,是则使removed[v]=1,进入步骤(39),否则结束流程;
(39)若顶点v还有未被访问过的邻居顶点u,则进入步骤(40);否则结束流程;
(40)若顶点u的最终核数K(u)等于K,则使u的当前核数值cd(u)=cd(u)-1,进入步骤(401);否则返回到步骤(39);
(401)判断cd(u)=K,并且removed[u]=0是否成立,若成立则将顶点u作为新的顶点v,返回步骤(38);否则返回步骤(39)。
其中删除边时k核维护子方法包括以下步骤:
(41)将图中所有顶点的当前核数初始化为0,初始化每个顶点的访问标志位visited为0,解散标志位dismissed为0,计算每个顶点的最大核度数(MCD)和纯核度数(PCD);
(42)对于删除的边<U,V>,选取U和V中核数较小的顶点作为根顶点root,根顶点root的核数为K;
(43)当删除边的顶点U和顶点V的核数相等时,赋值visited[U]=1,cd[U]=MCD[U],若cd[U]<K,则将顶点U加入任务队列,之后进入步骤(44);否则直接进入步骤(44);
(44)更新visited[V]=1,cd[V]=MCD[V];若cd[U]<K,并且dismissed[v]=0则将顶点V加入任务队列,进入步骤(46);否则直接进入步骤(46);
(45)当删除边顶点U和顶点V的核数不相等时,更新visited[root]=1,cd[root]=MCD[root],将顶点root加入任务队列,若cd[root]<K,则进入步骤(46);否则直接进入步骤(46);
(46)若任务队列为空,则结束流程;否则设从任务队列开始进行递归移除操作的当前顶点为u,解散标志位dismissed[u]等于1,最终核数值K(u)=K(u)-1,之后进入步骤(47);
(47)若顶点u还有未遍历的邻居顶点,则进入步骤(48);否则返回步骤(46);
(48)若邻居顶点w的最终核数K(w)=K,则进入步骤(49);否则返回步骤(46);
(49)若访问标志位visited[w]=0,则当前核数cd(w)=cd(w)+PCD(w),并且visited[w]=1,之后进入步骤(50);否则直接进入步骤(50);
(50)更新w的当前核数cd(w)=cd(w)-1;
(501)若cd(w)<K并且dismissed[w]=0,则将w加入任务队列,回到步骤(46);否则直接回到步骤(46)。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:
(1)本发明考虑图数据动态变化的过程,结合k核计算的特点,对于每次插入或者删除边的情况,能够快速找到核数发生更新的顶点;
(2)本发明采用迭代的计算框架,通过任务队列的形式实现顶点维护自己核数的操作,充分考虑顶点的邻居信息,并且每个顶点只用访问这些邻居信息,便于扩展至进行分布式计算,可以处理单机难以计算的大规模图数据。
附图说明
图1是k核分解计算的流程图;
图2是估算核数值的流程图;
图3为在图中插入边时k核更新的流程图;
图4为插入边时判断一个顶点是否需要更新核数的流程图;
图5为在图中删除边时k核更新的流程图;
图6为删除边时对任务队列中的点进行递归移除的流程图;
图7为在图中插入边后找到的k核需要更新的顶点集合;
图8为在图中删除边后找到的k核需要更新的顶点集合。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1为静态时k核维护的流程图,包括以下步骤:
(11)将图中所有顶点的当前核数初始化为自身的度数,并将当前核数信息传递给其邻居顶点,再将所有顶点加入任务队列;
(12)若队列为空,则结束流程;否则从任务队列中移除一个顶点,并求出此顶点的估算核数;
(13)若此顶点估算核数小于当前核数,则该顶点的最终核数为估算核数,再把最终核数传递给该顶点的邻居顶点,并将该顶点再次加入任务队列,并返回步骤(12);否则直接返回步骤(12)。
如图2是估算核数值的流程图,包括以下步骤:
(121)当前顶点核数记为core_v,初始化数组count大小为core_v,数组内每个元素值为0;
(122)若当前顶点v还有未被访问的邻居顶点u,则选取core_u和core_v中较小的一个记为j,并且使数组count[j]增加1,之后返回到步骤(122);否则进入步骤(123);
(123)初始化为i=core_v;若i>2,则count[i-1]=count[i-1]+count[i],之后i=i-1,返回步骤(123);否则进入步骤(124);
(124)赋值i=core_v;
(125)若i>1,count[i]<i,则i=i-1,返回步骤(125);否则当前顶点的估算核数值即为i,结束流程。
如图3和图4为在图中插入边时k核更新的流程图,包括以下步骤:
(31)将图中每个顶点的当前核数初始化为自身的度数,初始化每个顶点的访问标志位visited为0,移除标志位removed为0,计算每个顶点的最大核度数(MCD)和纯核度数(PCD):
MCD(v)=|{u∈neighbor(v)|K(u)≥K(v)}|,
PCD(v)=|{u∈neighbor(v)|K(u)=K(v)^MCD(u)>K(v)orK(u)>K(v)}|,
其中,顶点u是顶点v的邻居顶点,K(u)表示顶点u的核数,K(v)表示顶点v的核数;
(32)对于插入的边<U,V>,选取核数较小的顶点作为根顶点root,根顶点root的核数为K;
(33)初始化根顶点root,使根顶点当前核数cd(root)等于PCD(root),visited[root]=1,并将根顶点root加入任务队列;
(34)若任务队列为空,则将所有满足visited[v]=1,removed[v]=0条件的顶点v的最终核数值等于K+1,结束流程;否则进入步骤(35);
(35)从任务队列中移除的一个顶点为v,若顶点v的当前核数cd(v)>K,则进入步骤(36),否则进入步骤(38);
(36)若v还有未被访问过的邻居顶点u,则进入步骤(37);否则结束流程;
(37)若邻居顶点u满足其最终核数k(u)=K,并且u的最大核度数MCD(u)>K,并且visited[u]=0,则将顶点u加入任务队列,并且使visited[u]=1,cd(u)=cd(u)+PCD(u),之后返回步骤(36);否则直接返回步骤(36)
(38)判断顶点removed[v]=0是否成立,是则使removed[v]=1,进入步骤(39),否则结束流程;
(39)若顶点v还有未被访问过的邻居顶点u,则进入步骤(40);否则结束流程;
(40)若顶点u的最终核数K(u)等于K,则使u的当前核数值cd(u)=cd(u)-1,进入步骤(401);否则返回到步骤(39);
(401)判断cd(u)=K,并且removed[u]=0是否成立,若成立则将顶点u作为新的顶点v,返回步骤(38);否则返回步骤(39)。
如图5和图6为在图中删除边时k核更新的流程图,包括以下步骤:
(41)将图中所有顶点的当前核数初始化为0,初始化每个顶点的访问标志位visited为0,解散标志位dismissed为0,计算每个顶点的最大核度数(MCD)和纯核度数(PCD);
(42)对于删除的边<U,V>,选取U和V中核数较小的顶点作为根顶点root,根顶点root的核数为K;
(43)当删除边的顶点U和顶点V的核数相等时,赋值visited[U]=1,cd[U]=MCD[U],若cd[U]<K,则将顶点U加入任务队列,之后进入步骤(44);否则直接进入步骤(44);
(44)更新visited[V]=1,cd[V]=MCD[V];若cd[U]<K,并且dismissed[v]=0则将顶点V加入任务队列,进入步骤(46);否则直接进入步骤(46);
(45)当删除边顶点U和顶点V的核数不相等时,更新visited[root]=1,cd[root]=MCD[root],将顶点root加入任务队列,若cd[root]<K,则进入步骤(46);否则直接进入步骤(46);
(46)若任务队列为空,则结束流程;否则设从任务队列开始进行递归移除操作的当前顶点为u,解散标志位dismissed[u]等于1,最终核数值K(u)=K(u)-1,之后进入步骤(47);
(47)若顶点u还有未遍历的邻居顶点,则进入步骤(48);否则返回步骤(46);
(48)若邻居顶点w的最终核数K(w)=K,则进入步骤(49);否则返回步骤(46);
(49)若访问标志位visited[w]=0,则当前核数cd(w)=cd(w)+PCD(w),并且visited[w]=1,之后进入步骤(50);否则直接进入步骤(50);
(50)更新w的当前核数cd(w)=cd(w)-1;
(501)若cd(w)<K并且dismissed[w]=0,则将w加入任务队列,回到步骤(46);否则直接回到步骤(46)。
如图7-8所示,以具体实例对本发明一种高效的分布式大规模动态图k核维护方法进行进一步说明:
计算顶点核数:
(1)图中共有18个顶点,编号为1-18,所有顶点核数初始化为它的度数,则顶点核数初始值为{2,4,6,4,5,5,6,3,2,3,3,2,4,5,4,3,4,3},每个顶点将核数值传递给邻居;
(2)顶点根据从邻居获取的核数,估算自己的核数,得到新的核数估计值为{2,3,4,4,4,4,4,3,3,2,2,2,2,3,3,3,3,3},其中顶点2,5,6,7,8,10,11,13,14,15,17的核数估计值比当前核数值小,将新的核数值传递给邻居,并加入任务队列;
(3)从任务队列中依次取出顶点,再一次进行核数估计,这一次得到顶点2,5,6,7,8,10,11,13,14,15,17的核数估计值为{2,4,4,4,2,2,2,2,3,3,3},所有顶点的核数估计值都等于当前核数值,没有顶点发生更新,任务队列为空,算法结束,所有顶点核数依次为{2,2,4,4,4,4,4,2,2,2,2,2,2,3,3,3,3,2}。
插入边<v9,v10>:
(1)初始化所有顶点的核数和状态位,每个顶点的标志位visited为0,removed为0,计算每个顶点的MCD值和PCD值,得到MCD为{2,4,4,4,4,4,4,3,3,4,3,2,4,3,3,3,3,3},PCD值为{2,3,0,0,0,0,0,3,3,4,2,2,3,0,0,0,0,3},cd值初始化为0;
(2)对于插入的边<v9,v10>,其中v9核数较小,作为root,K的值等于v9的核数2,visited[v9]置1,cd[v9]=PCD[v9]=3把根顶点root加入队列;
(3)任务队列不为空,从队列中取出队首顶点v9,cd[v9]=3,大于K的值2,开始访问v9的邻居;
(4)对于v9的邻居v5和v6,K(v5)=4,K(v6)=4,MCD(v5)=0,MCD(v6)=0,都不大于K,不执行任何操作;取下一个邻居v10,K(v10)=2,MCD(v10)=4>K,并且v10没有被访问过,将v10加入任务队列,访问标志位置1,cd[v10]=cd[v10]+PCD[v10]=4,v9的邻居访问完;
(5)从任务队列中取出下一个顶点v10,遍历v10的邻居,其中v9被访问过,v8,v11,v18的核值等于2,MCD值大于2,且没有被访问过,将访问标志位置1,更新cd[v8]=3,cd[v11]=2,cd[v18]=3,并加入任务队列,当前任务队列为{v8,v11,v18};
(6)从任务队列中取出下一顶点v8,cd[v2]=3大于K,遍历v8的邻居,对于v2,k[v2]=2,MCD[v2]=4大于K,并且v2没有被访问过,将v2访问位置1,加入任务队列,更新cd[v2]=3;对于v7,k[v7]=4,不加入任务队列;对于v10,v10被访问过,不进行其他操作;当前任务队列为{v11,v18,v2};
(7)从任务队列中取出v11,cd[v11]=2不大于K,removed[v11]不为1,执行5.3,removed[v11]=1,cd[v10]=3,cd[v12]=-1,cd[v13]=-1;
(8)从任务队列中取出v18,cd[v18]=3大于K,对v18的邻居,v10访问过,而cd[v14]=3,cd[v17]=3不加入任务队列;
(9)从任务队列中取出v2,cd[v2]=3大于K,对于v2的邻居v1,v3,v7,v8不满足K(w)=K且MCD(w)>K,都不加入任务队列;
(10)任务队列为空,最后顶点v2,v8,v9,v10,v18满足访问标志位为1且移除标志位为0,核数发生更新,由2更新至3,算法结束。
删除边<v9,v10>:
(1)初始化所有顶点的核数和状态位,核数依次为{2,3,4,4,4,4,4,3,3,3,2,2,2,3,3,3,3,3},每个顶点的标志位visited为0,dismissed为0,计算每个顶点的MCD值和PCD值,得到MCD为{2,3,4,4,4,4,4,3,2,2,3,2,4,4,3,3,4,3},PCD值为{2,2,0,0,0,0,0,1,2,0,2,2,3,1,2,2,1,2},cd值初始化为0对于删除的边<v9,v10>,v9v10核数相等,v9作为root,K=3;
(2)K(v9)=K(v10)=3,先从v9开始更新,置visited[v9]=1,cd[v9]=MCD[v9]=2,小于K,则从v9开始执行递归移除操作,K(v9)自减1为2,dismissed标志位置1,遍历v9的邻居{v5,v6},v5,v6的核数都不等于3,不进行其他操作;
(3)再对v10进行更新,visited[v10]=1,cd[v10]=MCD[v10]=2,v10满足dismissed[v10]为0并且cd[v10]<K,将v10加入任务队列;
(4)置dismissed[v10]=1,K(v10)自减1为2,遍历v10的邻居{v8,v11,v18},首先v8满足K(v8)=3等于K且visited[v8]=0,则cd[v8]=cd[v8]+MCD[v8]为3,visited[v8]置1,cd[v8]自减1为2,cd[v8]满足小于K且dismissed[v8]=0,则,将v8加入任务队列;
(5)置dismissed[v8]=1,K(v8)自减1为2,对v8的邻居{v2,v7,v10},v2满足K(v2)=3等于K,且visited[v2]=0,更新cd[v2]为3,置visited[v2]为1,cd[v2]自减1为2,满足小于K且dismissed[v2]=0,则将v2加入任务队列,遍历v2的邻居;
(6)置dismissed[v2]=1,K(v2)自减1为2,对v2的邻居{v1,v3,v7,v8},核数都不等于K,v2邻居访问完;
(7)继续访问v8的邻居v7核数不等于K,v10访问过,v8邻居访问完;
(8)继续访问v10的邻居v11,K(v11)=2不等于K,无操作;对v10的下一个邻居v18满足K(v18)=3等于K且visited[v18]=0,则更新cd[v18]=3,置visited[v18]为1,再更新cd[v18]=2,cd[v18]满足小于K且dismissed[v18]=0,则将v18加入任务队列;
(9)置dismissed[v18]=1,更新K(v18)为2,遍历v18的邻居,对于v14满足K(v14)=3等于K,且visited[v14]=0,更新cd[v14]为3,不小于K,无其他操作;下一个邻居v17,满足K(v17)=3等于K且visited[v14]=0,更新cd[v17]为3,不小于K,无其他操作,v18的邻居访问完成;
(10)任务队列为空,算法结束,顶点v2,v8,v9,v20,v18的核数发生更新,由3减少为2。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种高效的分布式大规模动态图k核维护方法,其特征在于,当图没有发生变化时采用静态k时核维护子方法;
静态时k核维护子方法包括以下步骤:
(11)将图中所有顶点的当前核数初始化为自身的度数,并将当前核数信息传递给其邻居顶点,再将所有顶点加入任务队列;
(12)若队列为空,则结束流程;否则从任务队列中移除一个顶点,并求出此顶点的估算核数;
(13)若此顶点估算核数小于当前核数,则该顶点的最终核数为估算核数,再把最终核数传递给该顶点的邻居顶点,并将该顶点再次加入任务队列,并返回步骤(12);否则直接返回步骤(12)。
2.根据权利要求1所述的一种高效的分布式大规模动态图k核维护方法,其特征在于,所述步骤(12)中求各个顶点的估算核数值具体包括以下子步骤:
(121)当前顶点核数记为core_v,初始化数组count大小为core_v,数组内每个元素值为0;
(122)若当前顶点v还有未被访问的邻居顶点u,则选取core_u和core_v中较小的一个记为j,并且使数组count[j]增加1,之后返回到步骤(122);否则进入步骤(123);
(123)初始化为i=core_v;若i>2,则count[i-1]=count[i-1]+count[i],之后i=i-1,返回步骤(123);否则进入步骤(124);
(124)赋值i=core_v;
(125)若i>1,count[i]<i,则i=i-1,返回步骤(125);否则当前顶点的估算核数值即为i,结束流程。
3.一种高效的分布式大规模动态图k核维护方法,其特征在于,当图插入边时采用插入边时k核维护子方法;
插入边时k核维护子方法包括以下步骤:
(31)将图中每个顶点的当前核数初始化为自身的度数,初始化每个顶点的访问标志位visited为0,移除标志位removed为0,计算每个顶点的最大核度数(MCD)和纯核度数(PCD):
MCD(v)=|{u∈neighbor(v)|K(u)≥K(v)}|,
PCD(v)=|{u∈neighbor(v)|K(u)=K(v)^MCD(u)>K(v)orK(u)>K(v)}|,
其中,顶点u是顶点v的邻居顶点,K(u)表示顶点u的核数,K(v)表示顶点v的核数;
(32)对于插入的边<U,V>,选取核数较小的顶点作为根顶点root,根顶点root的核数为K;
(33)初始化根顶点root,使根顶点当前核数cd(root)等于PCD(root),visited[root]=1,并将根顶点root加入任务队列;
(34)若任务队列为空,则将所有满足visited[v]=1,removed[v]=0条件的顶点v的最终核数值等于K+1,结束流程;否则进入步骤(35);
(35)从任务队列中移除的一个顶点为v,若顶点v的当前核数cd(v)>K,则进入步骤(36),否则进入步骤(38);
(36)若v还有未被访问过的邻居顶点u,则进入步骤(37);否则结束流程;
(37)若邻居顶点u满足其最终核数k(u)=K,并且u的最大核度数MCD(u)>K,并且visited[u]=0,则将顶点u加入任务队列,并且使visited[u]=1,cd(u)=cd(u)+PCD(u),之后返回步骤(36);否则直接返回步骤(36)
(38)判断顶点removed[v]=0是否成立,是则使removed[v]=1,进入步骤(39),否则结束流程;
(39)若顶点v还有未被访问过的邻居顶点u,则进入步骤(40);否则结束流程;
(40)若顶点u的最终核数K(u)等于K,则使u的当前核数值cd(u)=cd(u)-1,进入步骤(401);否则返回到步骤(39);
(401)判断cd(u)=K,并且removed[u]=0是否成立,若成立则将顶点u作为新的顶点v,返回步骤(38);否则返回步骤(39)。
4.一种高效的分布式大规模动态图k核维护方法,其特征在于,当图删除边时采用删除边时k核维护子方法;
其中删除边时k核计算子方法包括以下步骤:
(41)将图中所有顶点的当前核数初始化为0,初始化每个顶点的访问标志位visited为0,解散标志位dismissed为0,计算每个顶点的最大核度数(MCD)和纯核度数(PCD);
(42)对于删除的边<U,V>,选取U和V中核数较小的顶点作为根顶点root,根顶点root的核数为K;
(43)当删除边的顶点U和顶点V的核数相等时,赋值visited[U]=1,cd[U]=MCD[U],若cd[U]<K,则将顶点U加入任务队列,之后进入步骤(44);否则直接进入步骤(44);
(44)更新visited[V]=1,cd[V]=MCD[V];若cd[U]<K,并且dismissed[v]=0则将顶点V加入任务队列,进入步骤(46);否则直接进入步骤(46);
(45)当删除边顶点U和顶点V的核数不相等时,更新visited[root]=1,cd[root]=MCD[root]将顶点root加入任务队列,若cd[root]<K,则进入步骤(46);否则直接进入步骤(46);
(46)若任务队列为空,则结束流程;否则设从任务队列开始进行递归移除操作的当前顶点为u,解散标志位dismissed[u]等于1,最终核数值K(u)=K(u)-1,之后进入步骤(47);
(47)若顶点u还有未遍历的邻居顶点,则进入步骤(48);否则返回步骤(46);
(48)若邻居顶点w的最终核数K(w)=K,则进入步骤(49);否则返回步骤(46);
(49)若访问标志位visited[w]=0,则当前核数cd(w)=cd(w)+PCD(w),并且visited[w]=1,之后进入步骤(50);否则直接进入步骤(50);
(50)更新w的当前核数cd(w)=cd(w)-1;
(501)若cd(w)<K并且dismissed[w]=0,则将w加入任务队列,回到步骤(46);否则直接回到步骤(46)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610837582.8A CN106445685B (zh) | 2016-09-21 | 2016-09-21 | 一种高效的分布式大规模动态图k核维护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610837582.8A CN106445685B (zh) | 2016-09-21 | 2016-09-21 | 一种高效的分布式大规模动态图k核维护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106445685A true CN106445685A (zh) | 2017-02-22 |
CN106445685B CN106445685B (zh) | 2019-05-14 |
Family
ID=58166513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610837582.8A Active CN106445685B (zh) | 2016-09-21 | 2016-09-21 | 一种高效的分布式大规模动态图k核维护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106445685B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110222055A (zh) * | 2019-05-23 | 2019-09-10 | 华中科技大学 | 一种动态图下多边更新的单轮核值维护方法 |
CN111291232A (zh) * | 2020-03-06 | 2020-06-16 | 北京理工大学 | 一种基于h-跳距离的图核分解方法 |
CN112817963A (zh) * | 2019-10-30 | 2021-05-18 | 华东师范大学 | 一种多维网络上的社群核分解方法及系统 |
CN113259302A (zh) * | 2020-02-12 | 2021-08-13 | 腾讯云计算(长沙)有限责任公司 | 网络攻击数据的关系分解方法、装置和计算机设备 |
CN113590887A (zh) * | 2021-07-19 | 2021-11-02 | 之江实验室 | 基于Quegel分布式图计算系统的K-truss分解方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140354649A1 (en) * | 2013-05-29 | 2014-12-04 | International Business Machines Corporation | Distributed k-core view materialization and maintenance for graphs |
CN104462260A (zh) * | 2014-11-21 | 2015-03-25 | 深圳大学 | 一种基于k-核的社区搜索算法 |
CN105337774A (zh) * | 2015-11-19 | 2016-02-17 | 浙江工商大学 | 一种基于服务组合骨干网加权k核分析的服务推荐方法 |
CN105471637A (zh) * | 2015-11-20 | 2016-04-06 | 中国矿业大学 | 一种复杂网络节点重要性评估方法及系统 |
-
2016
- 2016-09-21 CN CN201610837582.8A patent/CN106445685B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140354649A1 (en) * | 2013-05-29 | 2014-12-04 | International Business Machines Corporation | Distributed k-core view materialization and maintenance for graphs |
CN104462260A (zh) * | 2014-11-21 | 2015-03-25 | 深圳大学 | 一种基于k-核的社区搜索算法 |
CN105337774A (zh) * | 2015-11-19 | 2016-02-17 | 浙江工商大学 | 一种基于服务组合骨干网加权k核分析的服务推荐方法 |
CN105471637A (zh) * | 2015-11-20 | 2016-04-06 | 中国矿业大学 | 一种复杂网络节点重要性评估方法及系统 |
Non-Patent Citations (1)
Title |
---|
RONG-HUA LI.: "Efficient Core Maintenance in Large Dynamic Graphs", 《IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110222055A (zh) * | 2019-05-23 | 2019-09-10 | 华中科技大学 | 一种动态图下多边更新的单轮核值维护方法 |
CN110222055B (zh) * | 2019-05-23 | 2021-08-20 | 华中科技大学 | 一种动态图下多边更新的单轮核值维护方法 |
CN112817963A (zh) * | 2019-10-30 | 2021-05-18 | 华东师范大学 | 一种多维网络上的社群核分解方法及系统 |
CN113259302A (zh) * | 2020-02-12 | 2021-08-13 | 腾讯云计算(长沙)有限责任公司 | 网络攻击数据的关系分解方法、装置和计算机设备 |
CN113259302B (zh) * | 2020-02-12 | 2023-06-27 | 腾讯云计算(长沙)有限责任公司 | 网络攻击数据的关系分解方法、装置和计算机设备 |
CN111291232A (zh) * | 2020-03-06 | 2020-06-16 | 北京理工大学 | 一种基于h-跳距离的图核分解方法 |
CN111291232B (zh) * | 2020-03-06 | 2023-09-26 | 北京理工大学 | 一种基于h-跳距离的图核分解方法 |
CN113590887A (zh) * | 2021-07-19 | 2021-11-02 | 之江实验室 | 基于Quegel分布式图计算系统的K-truss分解方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106445685B (zh) | 2019-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106445685A (zh) | 一种高效的分布式大规模动态图k核维护方法 | |
Chen et al. | Privacy preserving point-of-interest recommendation using decentralized matrix factorization | |
CN104063507B (zh) | 一种图计算方法及系统 | |
Maji | Influential spreaders identification in complex networks with potential edge weight based k-shell degree neighborhood method | |
US9342624B1 (en) | Determining influence across social networks | |
Steck et al. | Bayesian belief networks for data mining | |
CN111523831B (zh) | 风险团伙的识别方法、装置、存储介质和计算机设备 | |
CN109284626A (zh) | 面向差分隐私保护的随机森林算法 | |
Cai et al. | An improved random walk based clustering algorithm for community detection in complex networks | |
CN102135983A (zh) | 基于网络用户行为的群体划分方法和装置 | |
CN108446297A (zh) | 一种推荐方法及装置,电子设备 | |
CN106776863A (zh) | 文本相关度的确定方法、查询结果的推送方法及装置 | |
CN110070410A (zh) | 一种基于大数据的人口社交分析方法及系统 | |
EP2913760A1 (en) | Efficient link management for graph clustering | |
CN111475736A (zh) | 社区挖掘的方法、装置和服务器 | |
WO2016106944A1 (zh) | MapReduce平台上的虚拟人建立方法 | |
Malliaros et al. | Core Decomposition in Graphs: Concepts, Algorithms and Applications. | |
CN117473188B (zh) | 一种显示数据的渲染方法、装置、电子设备及存储介质 | |
CN104598452B (zh) | 用户性别分析方法和装置 | |
CN106156317B (zh) | 一种基于属性划分的数据安全存储方法 | |
CN113342331A (zh) | 一种面向生态的软件服务系统演化分析方法 | |
CN110941638B (zh) | 应用分类规则库构建方法、应用分类方法及装置 | |
CN108805755B (zh) | 一种旅游套餐生成方法及装置 | |
CN106383738A (zh) | 任务处理方法和分布式计算框架 | |
CN112579831B (zh) | 基于SimRank全局矩阵平滑收敛的网络社区发现方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |