CN111291232A - 一种基于h-跳距离的图核分解方法 - Google Patents

一种基于h-跳距离的图核分解方法 Download PDF

Info

Publication number
CN111291232A
CN111291232A CN202010152887.1A CN202010152887A CN111291232A CN 111291232 A CN111291232 A CN 111291232A CN 202010152887 A CN202010152887 A CN 202010152887A CN 111291232 A CN111291232 A CN 111291232A
Authority
CN
China
Prior art keywords
node
nodes
hop
graph
hop neighbors
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
Application number
CN202010152887.1A
Other languages
English (en)
Other versions
CN111291232B (zh
Inventor
李荣华
代强强
王国仁
金福生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN202010152887.1A priority Critical patent/CN111291232B/zh
Publication of CN111291232A publication Critical patent/CN111291232A/zh
Application granted granted Critical
Publication of CN111291232B publication Critical patent/CN111291232B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于h‑跳距离的图核分解方法,包括获取待分解的大数据原图G,计算原图G中每个节点的h‑跳邻居数据;遍历整个原图G中找到h‑跳邻居最小的值并将此值赋值为k,将所有h‑跳邻居数为k的节点放入一个队列中Q中;依次从Q中选择节点v,并将其从G中和Q中删除;当删除一个节点v后,更新在节点v的h‑跳邻居
Figure DDA0002403051130000011
中所有节点的h‑跳邻居数;迭代删除h‑跳邻居最少的节点,直到所有节点删除完。与现有技术相比,该方法不需要重复计算节点的h‑跳邻居,计算效率更高,而且算法设计简单容易实现。

Description

一种基于h-跳距离的图核分解方法
技术领域
本发明涉及大数据挖掘相关应用场景的技术领域,例如社交网络分析,web网络挖掘等,特别涉及一种基于h-跳距离的图核分解方法。
背景技术
目前,近年来,随着信息技术的发展,各种大数据普遍存在实际应用中,例如:社交网络,Web网络,生物网络等等。从这些网络中提取出隐含的稠密子结构是网络分析中的一个基本问题,例如:从社交网络中挖掘出社交圈子,在Web网络中发现关键重要的网站,以及在生物网络找出蛋白络合物等等。目前人们在图网络挖掘的领域中提出了许多模型来提取网络中的稠密子图,其中比较经典的模型为k-核模型,k-核表示图中的极大连通子图,并且子图中任意节点在该子图中的度都不小于k。人们对此模型提出了各种算法包括内存算法和外存算法,其中内存算法的时间复杂为O(m+n),其中m和n分别表示图中边和节点的数目。
由于k-核算法在某些情况下无法找出图所隐含的关系,针对这种情况,Bonchi提出的基于一种h-跳距离的核分解模型来处理图数据,此模型称之为(k,h)-Core模型。此模型表示图G中的极大连通子图Ck,并且Ck中任意节点在Ck中h距离之内的节点个数不小于k。其中距离表两个节点最短路径的长度。
以图1为例,假设h=2,在图中找出所有的(k,2)-Core,其结果为:{v1,v2,v3}为(4,2)-Core,{v4,v5,v6,v7}为(5,2)-Core,{v8,v9,v10,v11,v12,v13,v14}为(6,2)-Core。但是传统的k-核模型是无法找到图1中的稠密子图的,整个图1是一个传统的2-核。因此,基于此模型可以准确地找出图1中用k-核模型所不能挖掘的稠密子图。
(k,h)-Core模型是一种比传统k-核模型更具一般性的模型,当h=1的时候,(k,1)-Core就是传统的k-核,所以在数据挖掘或者数据分析中,(k,h)-Core模型要比k-核模型应用更加广泛,更具一般性,为了更好的用此模型来进行数据分析,提出一种求(k,h)-Core的高效算法是非常重要的,但是Bonchi等人提出算法却没那么高效,且过于复杂,实现起来非常不方便。
为了找出图中所有的(k,h)-Core,Bonchi提出了一个基本的算法和两个优化算法。基本算法的主要思想是一种基于“剥离”方法,具体细节为,在给定一个图G和一个正整数h的条件下,算法首先从图G中找出h-跳邻居最少的节点v(在图G中与节点v距离小于等于h的节点集合称之为v的h-跳邻居)并将其放入队列Q中,假设最小的h-跳邻居数为kmin;其次,算法遍历Q依次从队列中删除节点,并将其(k,h)-Core赋值为kmin,然后遍历v的每个h-跳邻居u,并且重新计算在删除v之后u在图中的h-跳邻居,如果u的h-跳邻居个数不大于kmin则将u放入队列Q中;算法依次迭代执行,直到删除所有的节点。下面本发明给出一个例子简单介绍下算法的过程。
例子1:如图1所示,在h=2的条件下,求出图1中所有的(k,2)-Core。首先,计算图1中每个节点2-hop邻居的个数,节点v1的2-hop邻居数最少为4,所以Q={v1};然后算法从Q中选择v1删除,并重新计算节点{v2,v3,v4,v6}的2-hop邻居,其中{v2,v3}的2-hop邻居数小于4为3,所以{v2,v3}需要加入到队列Q中,算法迭代从Q中取出节点删除直到Q为空集,因此在第一迭代过后{v1,v2,v3}属于(4,2)-Core;类似的,算法进入下次迭代,从剩余节点中选择2-hop邻居数最少的节点v5加入到Q中,然后从Q中选择节点v5从图中删除,并重新计算{v4,v6,v7,v8,v9}的2-hop邻居,发现{v4,v6}的2-hop邻居数小于5,则{v4,v6}加入到队列Q,当Q中的所有节点删除后,{v4,v5,v6,v7}属于(5,2)-Core;最后,剩下的节点v8到v14属于(6,2)-Core。
基本算法需要不断地重新计算节点的h-跳邻居,为了减少重新计算的代价,Bonchi提出了两种优化策略,第一种是基于节点(k,h)-Core的下界来减少重新计算的h-LB算法,也就是说,算法首先估计出每个节点(k,h)-Core的下界,然后利用基本算法求解每个节点的(k,h)-Core,其与基本算法唯一不同之处在于,当删除某个节点v,h-LB算法仅重新计算v的h-跳邻居中下界不大于v的(k,h)-Core的节点,也就是说,对于v的h-跳邻居中下界比v的(k,h)-Core大的节点,一定不会在此次迭代中被删除,所以这些节点就没必要重新计算h-跳邻居了。
第二种优化算法叫做h-LB+UB算法,此算法在h-LB算法的基础上,又计算了每个节点(k,h)-Core的上界,然后根据每个节点的上界将整个图分成若干个嵌套的子图,假设V[i]表示节点的上界大于等于i的集合,h-LB+UB算法最后在由V[i]组成的诱导子图中利用h-LB算法计算(i,h)-Core。
Bonchi提出的(k,h)-Core算法的主要缺陷如下:
(1)算法需要多次重复计算节点的h-跳邻居;
(2)为了提升计算效率,优化算法利用h-跳邻居的上界和下界方法来减少重复计算,但是此算法极其依赖节点上界和下界的与准确值之间的误差,如果上界和下界与准确的(k,h)-Core相差太远,算法的性能将大打折扣。
(3)而且优化算法需要对图进行划分成多个子图进行计算,子图的大小对算法的性能有极大的影响,因此,此算法的计算效率也不是很稳定;
(4)即便优化算法在一定程度上能够提高算法的性能,但是本质上没有减少算法的时间复杂度和空间复杂度,因此也不具备一般性。
发明内容
鉴于上述问题,本发明提供一种至少解决上述部分技术问题的基于h-跳距离的图核分解方法,该方法无需重复计算节点的h-跳邻居,计算效率更高。
本发明实施例提供一种基于h-跳距离的图核分解方法,包括以下步骤:
S1、获取待分解的大数据原图G,计算原图G中每个节点的h-跳邻居数据;
S2、遍历整个原图G中找到h-跳邻居最小的值并将此值赋值为k,将所有h-跳邻居数为k的节点放入一个队列中Q中;依次从Q中选择节点v,并将其从G中和Q中删除;
S3、当删除一个节点v后,更新在节点v的h-跳邻居
Figure BDA0002403051110000041
中所有节点的h-跳邻居数;
S4、迭代执行S2~S3删除h-跳邻居最少的节点,直到所有节点删除完。
在一个实施例中,所述步骤S3,包括:
第一步,节点v和由
Figure BDA0002403051110000042
组成的诱导子图S,用两个二维数组Rold和Rnew表示
Figure BDA0002403051110000043
中所有节点的在S中的h-跳邻居;
第二步,对
Figure BDA0002403051110000044
中每个节点u,初始化Rold[u]={u};u表示节点v的邻居节点;
第三步,遍历子图S中所有的边(u,w)并执行第四步;
第四步,将节点u和w的分别对应的Rold[u]、Rold[w]取并集,并将结果分别保存于Rnew[u]与Rnew[w]中;
第五步,执行完第三步和第四步之后交换Rnew与Rold
第六步,执行第三步到第五步共h次;
第七步,遍历
Figure BDA0002403051110000045
所有节点u,并执行第八步;
第八步,节点u在G中减少的h-跳邻居数为
Figure BDA0002403051110000046
中且不存于Rnew[u]中的节点个数加1,其中s表示u于v在G中的距离。
本发明实施例提供的一种基于h-跳距离的图核分解方法:
该方法包括:获取待分解的大数据原图G,计算原图G中每个节点的h-跳邻居数据;遍历整个原图G中找到h-跳邻居最小的值并将此值赋值为k,将所有h-跳邻居数为k的节点放入一个队列中Q中;依次从Q中选择节点v,并将其从G中和Q中删除;当删除一个节点v后,更新在节点v的h-跳邻居
Figure BDA0002403051110000047
中所有节点的h-跳邻居数;迭代删除h-跳邻居最少的节点,直到所有节点删除完。与现有技术相比,该方法不需要重复计算节点的h-跳邻居,计算效率更高,而且算法设计简单容易实现。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为现有技术的大数据结构示意图;
图2为本发明实施例提供的基于h-跳距离的图核分解方法的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参照图2所示,本发明实施例提供一种基于h-跳距离的图核分解方法,包括:
S1、获取待分解的大数据原图G,计算原图G中每个节点的h-跳邻居数据;
S2、遍历整个原图G中找到h-跳邻居最小的值并将此值赋值为k,将所有h-跳邻居数为k的节点放入一个队列中Q中;依次从Q中选择节点v,并将其从G中和Q中删除;
S3、当删除一个节点v后,更新在节点v的h-跳邻居
Figure BDA0002403051110000051
中所有节点的h-跳邻居数;
S4、迭代执行S2~S3删除h-跳邻居最少的节点,直到所有节点删除完。
本实施例中,首先求出每个节点的h-跳邻居,然后迭代删除h-跳邻居最少的节点,直到所有节点都删除完。该方法不需要重复计算节点的h-跳邻居,计算效率更高,而且算法设计简单容易实现。
下面通过几个方面来详细说明下本发明的技术方案:
1、问题的定义
在介绍本发明之前,本发明首先阐述下问题的基本定义,以便更容易地理解此发明的内容。在社交网络分析中,可以将社交网络抽象为一个无向无权图,其中图中的节点和边可以分别表示为社交网络中具体的人和人之间的关系,可用G=(V,E)表示,其中V和E分别表示图中节点(社交网络中的人)和边(社交网络中人之间的关系)的集合,还有其他的合作网络,web网络,生物网络等等都可以用图表示。为了方便描述算法的思想,本发明接下来的符号都是对真实网络抽象为G=(V,E)的图中定义的。对于V中任意节点v,其邻居定义如下Nv(G)={u|(v,u)∈E},节点v的度为邻居的个数,也就是dv(G)=|Nv(G)|。本发明定义
Figure BDA0002403051110000061
为v在图G中的h-跳邻居,其中disG(u,v)表示节点v与u之间最短路径的长度,并且用
Figure BDA0002403051110000062
表示节点v在G的h-跳邻居数。如果
Figure BDA0002403051110000068
Figure BDA0002403051110000067
本发明称G(S)=(S,E(s))为图G的诱导子图,且(k,h)-Core正式的定义如下:
定义1:((k,h)-Core)给定无向图无权G和两个参数k和h,(k,h)-Core是图G中的一个极大子图
Figure BDA0002403051110000063
并且子图
Figure BDA0002403051110000064
中任意节点v的h-跳度要满足
Figure BDA0002403051110000065
需要注意的是定义1,节点的h-跳度是在子图诱导子图
Figure BDA0002403051110000066
中的度,而不是整个图G中的度,而且当k=1的时候,很容易得出此定义就是传统的k-核定义。通过定义1发现(k,h)-Core具有与k-核一样的属性,即:(1)对于图G中任意节点v的(k,h)-Core值是唯一的,本发明称coreh(v)为(k,h)-Core包含节点v最大的k值;(2)假设kmax为最大的(k,h)-Core值,则对于任意0≤k<kmax满足
Figure BDA0002403051110000071
基于h-跳距离的核分解的任务是,在给定h的条件下,求出每个节点的核值,本发明对问题正式的定义如下:
问题的定义:给定一个图G和一个正整数h的条件下,准确计算出G中每个节点的(k,h)-Core值。
2、动态更新思路
基于“剥离”最小h-跳度的算法,需要不断的更新被删除节点h-跳邻居的h-跳度,由于每个h-跳邻居所减少的h-跳度是不确定的,所以传统的方法只能够重新计算h-跳度,但是本发明实例提出的基于h-跳距离的图核分解方法,可以一次性的更新被删除节点所有h-跳邻居的h-跳度。
下面将介绍相关的定理及观察,以支持本发明下文所提方法的正确性。
当一个节点v删除了,可以发现对于
Figure BDA0002403051110000072
中的任意节点u,其h-跳邻居是不会增加的,因为对于某对可达节点w1与w2(也就是w1与w2之间存在至少一条路径),删除某个节点wi不会增加w1和w2的可达路径,所以为了快速动态更新的节点u的h-跳邻居,最核心的问题是找出
Figure BDA0002403051110000073
中哪些节点可能会受影响,变为u的非h-跳邻居。下面通过一个观察发现来缩小需要更新的范围。
观察1:假设节点v从G中删除了,那么对于
Figure BDA0002403051110000074
中任意节点u,集合
Figure BDA0002403051110000075
中的节点仍然在u的h-跳邻居中。
证明:此结论很显然是成立的。因为对于集合
Figure BDA0002403051110000076
中任意节点w,disG(u,w)≤h并且disG(v,w)>h,因为w为u的h-跳邻居,且不是u的h-跳邻居,所以u与w之间不存在任何路径经过v,所以删除v对u与w之间的可达性没有任何影响,因此得证。
通过观察1发现,如果删除一个节点v,对于其h-跳邻居的某个节点u,则只需要关注既在
Figure BDA0002403051110000077
又在
Figure BDA0002403051110000078
的那些节点是否仍然是u的h-跳邻居就可以了,但是这个范围相对来说还是有点大,并且可以进一步压缩需要关注节点的集合大小。因此观察2如下。
观察2:假设节点v从G中删除了,对于
Figure BDA0002403051110000081
中任意节点u,v与u之间的距离为s=disG(v,u),则集合
Figure BDA0002403051110000082
中的节点仍然是u的h-跳邻居。
证明:基于观察1,很容易的发现
Figure BDA0002403051110000083
在观察1中已经证明了S仍然是u的h-跳邻居,下面将主要证明集合
Figure BDA0002403051110000084
中任意节点w仍然是u的h-跳邻居,因为disG(u,w)≤h,并且disG(v,w)+disG(v,u)>(h-s)+s=h,所以disG(u,w)<disG(v,w)+disG(v,u),u与w之间的距离,要小于u与w经过v的距离,因此u与w之间不存在经过v的最短路径,所以删除v之后,u与w之间的最短路径是不变的,因此得证。
根据观察2,当节点v删除之后,对于v的任意h-跳邻居u,则只需要关注
Figure BDA0002403051110000085
中的节点是否成为u的非h-跳邻居就足够了,其中s为u与v之间的距离。但是在v删除之后,想要一次性找出
Figure BDA0002403051110000086
中所有与u之间的距离小于h的节点也不是一件很容易的事。最简单的方法还是重新计算每个节点的h-跳邻居,这样相当耗时。
Figure BDA0002403051110000087
中的节点进行了深入的分析,
Figure BDA0002403051110000088
中的节点与u之间的所有最短路径都能够从
Figure BDA0002403051110000089
中找到,因此可以得到如下引理:
引理1:对于
Figure BDA00024030511100000810
中任意节点u,并且v与u之间的距离为s,如果v从G中删除,则对于
Figure BDA00024030511100000811
的任意节点w与u之间的最短路径一定包含在
Figure BDA00024030511100000812
的诱导子图中,也就是说,假设(w1,w2,…,w)为w与u之间的任意最短路径,则对于任意1<i<h,wi都在包含在
Figure BDA00024030511100000813
中。
证明:可通过使用反证法来证明此定理的正确性,假设存在某个节点wi
Figure BDA00024030511100000814
之外,则最短路径为disG(u,w)=disG(u,wi)+disG(wi,w),通过三角不等式可以得到disG(u,w)≥(disG(v,wi)-disG(v,w))+(disG(v,wi)+disG(v,u))>(h-(h-s))+(h-s)=h,因此如果存在某个wi
Figure BDA00024030511100000815
之外,则u与w通过wi的路径一定大于h,所以w与u之间的最短路径一定包含在
Figure BDA00024030511100000816
的诱导子图中。
通过引理1就可以安全的在
Figure BDA0002403051110000091
的诱导子图中进行操作,这样就能够减少大量的计算,提高算法的效率。
3、算法框架
给定一个无向无权图G,(k,h)-Core分解的目标是求出每个节点的(k,h)-Core值,此算法的总体框架还是基于“剥离”的方法,算法首先求出每个节点的h-跳邻居,然后迭代删除h-跳邻居最少的节点,直到所有节点都删除完。此算法的总体框架如下:
输入:图G和一个正整数h
输出:coreh(v)对于G中的所有节点v
第一步,算法计算图中每个节点的h-跳邻居数;
第二步,找出图G中最小的h-跳邻居数k;
第三步,把图G中所有h-跳邻居数为k的节点放入集合Q中;
第四步,从Q中选择节点v,将v从Q中和G中删除,并且将coreh(v)赋值为k;
第五步,动态更新在
Figure BDA0002403051110000092
中所有节点的h-跳邻居数;
第六步,如果
Figure BDA0002403051110000093
中存在节点u的h-跳邻居数小于等于k,则将u放入集合Q中;
第七步,如果集合Q不为空,重复第四步到第六步;
第八步,如果图G不为空,重复第二步到第七步;
需要注意的是,在第一步中求所有节点h-跳邻居,只需要以节点出发进行广度优先遍历h层就能找到所有的h-跳邻居。由于在第五步中,动态更新每个节点的h-跳邻居相对比较复杂,下面详细描述动态更新的细节:
输入:节点v和由
Figure BDA0002403051110000094
组成的诱导子图S
输出:
Figure BDA0002403051110000095
所有节点u,在v从G中删除后的h-跳邻居数
第一步,用两个二维数组Rold和Rnew表示
Figure BDA0002403051110000096
中所有节点的在S中的h-跳邻居;
第二步,对
Figure BDA0002403051110000101
中每个节点u,初始化Rold[u]={u};
第三步,遍历子图S中所有的边(u,w)并执行第四步;
第四步,将节点u与w的Rold[u]与Rold[w]取并集,并将结果分别保存于Rnew[u]与Rnew[w]中;
第五步,执行完第三步和第四步之后交换Rnew与Rold
第六步,执行第三步到第五步共h次;
第七步,遍历
Figure BDA0002403051110000102
所有节点u,并执行第八步;
第八步,节点u在G中减少的h-跳邻居数为
Figure BDA0002403051110000103
中且不存于Rnew[u]中的节点个数加1,其中s表示u与v在G中的距离。即:s=disG(v,u),
Figure BDA0002403051110000108
Figure BDA0002403051110000104
在动态更新过程中,第三步到第六步主要是求每个节点在S子图中的h-跳邻居,因为每个节点的h-跳邻居可以使用动态规划方程来求解,假设dp(v,i)表示与节点v在距离为i之内的邻居并且设Γv(G)=Nv(G)∪{v},则dp(u,i+1)=∪u∈Γv(G)dp(u,i),因此重复第三步到第五步h次就能得到S子图中每个节点在S中的h-跳邻居,需要注意的是在第五步,具体实现中,只需要交换Rnew与Rold的地址就可以在O(1)时间内交换两个数组。根据观察2,算法只需要找出节点u在
Figure BDA0002403051110000105
内非h-跳邻居数就是就得到了节点u的h-跳邻居更新的数量,动态更新的第八步就是求节点u在
Figure BDA0002403051110000106
中的非邻居。
由于在前面提出了两个观察,和一个引理,在动态更新部分的第二步到第六步是基于引理1设计的步骤,所以能够保证Rnew[u]包含了删除节点v之后,在
Figure BDA0002403051110000107
内的节点h-跳邻居;第七步到第八步,是根据观察2计算每个节点减少的h-跳邻居数,所以动态更新过程能够保证算法的正确执行。
算法的时间复杂度分析,假设D表示图G中最大h-跳邻居组成的诱导子图,E(D)表示此诱导子图的边。在算法总体框架的第一行所需的时间复杂度为O(|V|*|E(D)|),在动态更新节点h-跳邻居数量时,第三步到第六步时间复杂度为O(|D|*|E(D)|*h),第七步到第九步的时间复杂度为O(|D|*|D|),因此整个算法的时间复杂度为O(|V|(|D|^2+h*|D|*|E(D)|))。
下面通过一个具体的实施例对本发明的方法进行说明:
如在社交网络分析中,为找出网络中所隐含的社交圈子,基于本发明提出的方法的具体实施步骤如下。
首先可以将社交网络(此实例中G表示一个社交网络)中每个人看作为一个节点,人与人之间的关系可以看作为人之间相连的边,本方法首先计算每个人的h-跳邻居(即每个人在h跳内有联系的人的集合)在得到每个人的h-跳邻居之后,然后找出整个社交网络中h-跳邻居最小的值并将此值赋值为k,并将所有h-跳邻居数为k的人放到一个队列中Q中。然后此方法将Q中的人依次移除,假设v表示正被移除的人,则标记v的核值大小为k。
对于v被移除之后,本方法需要更新在v的h-跳邻居中所有人的h-跳邻居数,假设v的h-跳邻居为
Figure BDA0002403051110000111
且由
Figure BDA0002403051110000112
组成的子社区G(R)的边集为E(R)={e0,e1,e2,…,et}。本方法首先为子社区G(R)中每个ui申请两个集合用来存储其h-跳邻居,分别为Rold和Rnew;然后方法分别初始化每个ui的Rold和Rnew,如果ui与v的距离小于h(即ui与v的联系小于h跳)则Rold[ui]为{ui},反之则Rold[ui]为空集(因为当ui与v的距离为h的时候,
Figure BDA0002403051110000113
为空集,则ui的h-跳邻居数固定减少1);然后方法依次遍历子社区G(R)中的每条边,假设E(R)中的边ei=(ui,uj),对边上的两个端点ui和uj的Rold做并集运算并将结果放入到Rnew中,也就是说将ui和uj的Rold[ui]与Rold[uj]取并集运算,并将得到的结果分别放入Rnew[ui]和Rnew[uj]中;在完成子社区G(R)中所有的边遍历之后,然后交换每个ui的Rnew与Rold中的数据,然后再次遍历子社区G(R)中的边E(R),直到遍历h次为止。
假设Rnew为遍历子社区G(R)h次之后的最终结果(即Rnew中的结果比Rold新),随后遍历子社区G(R)中每个ui并且将集合Rnew[ui]与
Figure BDA0002403051110000114
做交集运算,所以
Figure BDA0002403051110000115
的大小减去所得到的交集大小就是ui在子社区G(R)中的非h-跳邻居数,其中s为ui到v的距离,在统计完ui在子社区G(R)中的非邻居个数cnt之后,因此得出ui的h-跳邻居数减少了cnt+1个。
在动态更新之后,统计子社区G(R)中的每个ui在更新后的h-跳邻居数,如果ui的h-跳邻居数小于等于k,则将ui放入队列Q中。
直到Q中所有的人移除之后,则完成了对h-跳邻居数最小值为k的时的迭代,如果此时社区G还不为空,则继续从社区中找h-跳邻居数最小的值,并继续将这些人放入到Q中依次移除,直到社区G为空,则本方法计算完成,完成了社交网络中社交圈子的发现。
本发明提出的动态更新的h-跳距离核分解方法,由于在h-跳邻居的计算中,是一种动态更新的方法,不需要多次重复计算,因此本发明实施例提出的方法具有如下效果:
(1)本发明实施例只需要提供必要的图数据和h参数就快速计算出结果。
(2)该方法无需多余的预处理,也不需要额外的计算步骤,且设计简单容易实现。
(3)本发明提高了基于h-跳距离的核分解算法的效率。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (2)

1.一种基于h-跳距离的图核分解方法,其特征在于,包括以下步骤:
S1、获取待分解的大数据原图G,计算原图G中每个节点的h-跳邻居数据;
S2、遍历整个原图G中找到h-跳邻居最小的值并将此值赋值为k,将所有h-跳邻居数为k的节点放入一个队列中Q中;依次从Q中选择节点v,并将其从G中和Q中删除;
S3、当删除一个节点v后,更新在节点v的h-跳邻居
Figure FDA0002403051100000011
中所有节点的h-跳邻居数;
S4、迭代执行S2~S3删除h-跳邻居最少的节点,直到所有节点删除完。
2.如权利要求1所述的一种基于h-跳距离的图核分解方法,其特征在于,所述步骤S3,包括:
第一步,节点v和由
Figure FDA0002403051100000012
组成的诱导子图S,用两个二维数组Rold和Rnew表示
Figure FDA0002403051100000013
中所有节点的在S中的h-跳邻居;
第二步,对
Figure FDA0002403051100000014
中每个节点u,初始化Rold[u]={u};u表示节点v的邻居节点;
第三步,遍历子图S中所有的边(u,w)并执行第四步;
第四步,将节点u和w的分别对应的Rold[u]、Rold[w]取并集,并将结果分别保存于Rnew[u]与Rnew[w]中;
第五步,执行完第三步和第四步之后交换Rnew与Rold
第六步,执行第三步到第五步共h次;
第七步,遍历
Figure FDA0002403051100000015
所有节点u,并执行第八步;
第八步,节点u在G中减少的h-跳邻居数为
Figure FDA0002403051100000016
中且不存于Rnew[u]中的节点个数加1,其中s表示u于v在G中的距离。
CN202010152887.1A 2020-03-06 2020-03-06 一种基于h-跳距离的图核分解方法 Active CN111291232B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010152887.1A CN111291232B (zh) 2020-03-06 2020-03-06 一种基于h-跳距离的图核分解方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010152887.1A CN111291232B (zh) 2020-03-06 2020-03-06 一种基于h-跳距离的图核分解方法

Publications (2)

Publication Number Publication Date
CN111291232A true CN111291232A (zh) 2020-06-16
CN111291232B CN111291232B (zh) 2023-09-26

Family

ID=71022289

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010152887.1A Active CN111291232B (zh) 2020-03-06 2020-03-06 一种基于h-跳距离的图核分解方法

Country Status (1)

Country Link
CN (1) CN111291232B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445685A (zh) * 2016-09-21 2017-02-22 华中科技大学 一种高效的分布式大规模动态图k核维护方法
CN107203619A (zh) * 2017-05-25 2017-09-26 电子科技大学 一种复杂网络下的核心子图提取算法
CN108388651A (zh) * 2018-02-28 2018-08-10 北京理工大学 一种基于图核和卷积神经网络的文本分类方法
US20190068171A1 (en) * 2017-08-28 2019-02-28 University Of Florida Research Foundation, Inc. Automatic composition of universal filters

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445685A (zh) * 2016-09-21 2017-02-22 华中科技大学 一种高效的分布式大规模动态图k核维护方法
CN107203619A (zh) * 2017-05-25 2017-09-26 电子科技大学 一种复杂网络下的核心子图提取算法
US20190068171A1 (en) * 2017-08-28 2019-02-28 University Of Florida Research Foundation, Inc. Automatic composition of universal filters
CN108388651A (zh) * 2018-02-28 2018-08-10 北京理工大学 一种基于图核和卷积神经网络的文本分类方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LONGXU SUN: "Fast Algorithms for Intimate-Core Group Search in Weighted Graphs", 《WEB INFORMATION SYSTEMS ENGINEERING》, pages 728 - 744 *
徐兰天;李荣华;王国仁;王彪;: "面向时序图的K-truss社区搜索算法研究", 计算机科学与探索, vol. 14, no. 09, pages 1482 - 1489 *

Also Published As

Publication number Publication date
CN111291232B (zh) 2023-09-26

Similar Documents

Publication Publication Date Title
Nishizeki et al. Planar graphs: Theory and algorithms
Tatti et al. Density-friendly graph decomposition
CN112902970B (zh) 一种巡检路径规划方法和巡检机器人
Czumaj et al. Graph sparsification for derandomizing massively parallel computation with low space
CN112464107B (zh) 一种基于多标签传播的社交网络重叠社区发现方法及装置
Vazirani A proof of the MV matching algorithm
CN109120431A (zh) 复杂网络中传播源选择的方法、装置及终端设备
Cen et al. Edge connectivity augmentation in near-linear time
CN108614932B (zh) 基于边图的线性流重叠社区发现方法、系统及存储介质
CN111709102B (zh) 一种基于层次聚类的供水管网分区方法
CN105824936A (zh) 一种基于概念格的信息提取方法
Bergmeister et al. Efficient and scalable graph generation through iterative local expansion
Dujmović et al. A fixed-parameter approach to two-layer planarization
CN108198084A (zh) 一种复杂网络重叠社区发现方法
CN111291232A (zh) 一种基于h-跳距离的图核分解方法
Barenboim et al. Fully dynamic graph algorithms inspired by distributed computing: Deterministic maximal matching and edge coloring in sublinear update-time
CN115086179B (zh) 一种社交网络中社区结构的检测方法
CN107169066A (zh) 一种基于kd树和多值决策图的时序图数据处理方法
Konstantinidis et al. Maximizing the strong triadic closure in split graphs and proper interval graphs
CN110956199A (zh) 一种基于采样子图网络的节点分类方法
Faour et al. Approximating bipartite minimum vertex cover in the CONGEST model
Ganian et al. Group activity selection with few agent types
Li Distributed treewidth computation
CN111382316B (zh) 一种基于位图近似的h-跳距离核分解方法
Elkin et al. Deterministic PRAM approximate shortest paths in polylogarithmic time and slightly super-linear work

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant