CN111382316A - 一种基于位图近似的h-跳距离核分解方法 - Google Patents

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

Info

Publication number
CN111382316A
CN111382316A CN202010151472.2A CN202010151472A CN111382316A CN 111382316 A CN111382316 A CN 111382316A CN 202010151472 A CN202010151472 A CN 202010151472A CN 111382316 A CN111382316 A CN 111382316A
Authority
CN
China
Prior art keywords
node
hop
nodes
new
old
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
CN202010151472.2A
Other languages
English (en)
Other versions
CN111382316B (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 CN202010151472.2A priority Critical patent/CN111382316B/zh
Publication of CN111382316A publication Critical patent/CN111382316A/zh
Application granted granted Critical
Publication of CN111382316B publication Critical patent/CN111382316B/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2216/00Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
    • G06F2216/03Data mining

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于位图近似的h‑跳距离核分解方法,可用于许多大数据处理相关的应用,例如社交网络分析,合作网络分析及web网络分析等。本发明提出了基于位图近似的h‑跳距离核分解方法,来提高大图处理的效率,该方法不仅使内存消耗还是时间消耗均得到了极大的改善,尤其是在时间效率上能够提升一到两个数量至多。该方法基于位图的存储技术来提高算法的时间和空间效率,而且精确算法在处理大图数据也相当困难的同时,本发明实施例在保证一定准确度的同时,大幅度提升算法的计算效率,以更高效率处理大数据。

Description

一种基于位图近似的h-跳距离核分解方法
技术领域
本发明涉及大数据挖掘相关应用场景的技术领域,特别涉及一种基于位图近似的h-跳距离核分解方法。
背景技术
目前,与大数据处理相关应用越来越多,如社交网络分析,合作网络分析,以及交通网络分析等等,都离不开与大数据分析与处理相关的模型,为了能够高效快速地挖掘出不同网络中所隐藏稠密子结构,人们通常将网络抽象为图,然后在图上找出对应的稠密子图。因此Bonchi提出了一种基于h-跳距离的核分解模型来处理图数据,此模型称之为(k,h)-Core模型。其表示图G中的极大连通子图Ck,并且Ck中任意节点在Ck中h距离之内的节点个数不小于k。其中距离表两个节点最短路径的长度。
(k,h)-Core模型是传统k-核模型的一种推广,如当h=1时,(k,1)-Core模型就是传统的核模型,而且(k,h)-Core模型具有与传统模型类似的性质,因此(k,h)-Core模型能够找出传统k-核模型无法探测出的稠密子结构。(k,h)-Core算法的时间复杂度不仅是多项式时间,而且算法能够根据不同的距离参数h来找出不同的稠密子结构,为人们对数据挖掘的不同需求提供了极大的方便。例如在社交网络中挖掘社区,当h=1时,社区中的用户只考虑直接相连的朋友作为“朋友”,然后通过“朋友”的个数的稠密度来挖掘社区结构。但是在现实的社交网络中,很多情况下用户的“朋友的朋友”经常也能够成为用户的“朋友”,因此算法只需将h设置为2,就能够保证找到这种2-跳的朋友,因此极大地方便了对社区中“朋友关系”的假设。还有许多其他应用,如合作网络中找合作关系,交通网络中找大流量的道路,及web网络中找关键的web网站等等。
(k,h)-Core模型提出了一个基本算法和两个优化算法。基本算法的主要思想是一种基于“剥离”方法,具体细节为,在给定一个图G和一个正整数h的条件下,算法首先从图G中找出h-跳邻居最少的节点v并将其放入队列Q中,假设v的h-跳邻居个数为kmin;其次,算法遍历Q依次从队列中删除节点v,并将其(k,h)-Core赋值为kmin,然后遍历v的每个h-跳邻居u,并且重新计算u在删除v之后的图中的h-跳邻居,如果u的h-跳邻居个数不大于kmin则将u放入队列Q中;算法依次迭代执行,直到删除所有的节点。
第一种优化算法是基于节点(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。
由于此看出(k,h)-Core分解的主体计算部分是多次重复更新每个节点的h-跳邻居,由于多次重复计算是相当耗时的,由此现有技术提出了一种来避免重复计算的动态更新方法,也就是在节点v删除后,为其h-跳邻居中的每个节点分配两个二维数组R来存储其更新后在v的h-跳邻居中的h-跳邻居,在更新过程中此技术以动态规划的技术来同步计算在v的h-跳邻居中的每个节点的h-跳邻居,并存放于R中,由此可以看出虽然此技术能够提高算法是运算效率,但是技术对空间的需求很大,其空间复杂度为O(m+|E(S)|2),其中m表示图中边的条数,|E(S)|表示图中最大的h-跳邻居(与节点的距离小于等于h的节点集合)组成的诱导子图边的条数,此空间消耗与最大的h-跳邻居组成的诱导子图的平方成正比,因此在处理大规模图数据的时候,需要很多额外的空间。
首先,上述两个现有技术都是精确的计算方法,在处理某些大图时,现有技术相当耗时,而且人们可能只需要估计其中的内在结构或者社区情况,所以现有技术无法满足现实中人们对数据处理的某些需求;其次,现有技术也具有较高的内存消耗,不利于大规模的数据处理。
上述在真实世界中图数据往往非常大,即使算法的时间复杂度是多项式的,对于大图来说也是很难处理,而且在某些情况人们只想估计出某些大图中的社区,因为真实世界中的社区非常复杂,很难对某个社交网络的社区做一个特定的区分,所以估计大概的社区就显得尤为重要了;另外现有技术中动态更新方法在处理大规模图数据的时候,需要很多额外的空间。
因此,针对图挖掘的效率及近似的社区结果,本发明提出了一种基于位图动态更新对h-跳距离核分解的近似方法。
发明内容
鉴于上述问题,本发明提供一种至少解决上述部分技术问题的基于位图近似的h-跳距离核分解方法,该方法在保证准确度的前提下,还提高了图挖掘效率。
本发明实施例提供一种基于位图近似的h-跳距离核分解方法,包括:以下步骤:
S1、从待分解的大数据原图G中随机抽样一个子图S;所述子图S中的节点为被抽样的节点;
S2、计算每个节点v在所述原图G中的h-跳邻居数及其h-跳邻居中被抽样的节点数,分别用
Figure BDA0002402583790000031
和Selv(G)表示;并将
Figure BDA0002402583790000032
和Selv(G)的比值存储于rate(v);
S3、当删除一个节点v后,为
Figure BDA0002402583790000033
中的每个节点重新编号,初始化每个节点的Rold和Rnew数组;其中,
Figure BDA0002402583790000041
表示v在图G中的h-跳邻居;disG(u,v)表示节点v与邻居节点u之间最短路径的长度,并且用
Figure BDA0002402583790000042
表示节点v在G的h-跳邻居数;
S4、根据预设规则和动态规划方程更新每个Rold和Rnew数组;每个节点
Figure BDA0002402583790000043
中被抽样的h-跳邻居均保存于Rnew数组中,遍历每个节点的Rnew数组,查找到每个节点被抽样的h-跳邻居的减少数;根据更新后的Selu(G)和rate(u),估计u在G中的h-跳邻居。
在一个实施例中,所述步骤S1,包括:
待分解的大数据原图G=(V,E)表示,其中V和E分别表示图中节点和边的集合;从V中随机选择预设比例节点集合,由此集合组成的诱导子图为子图S。
在一个实施例中,所述步骤S3中初始化每个节点的Rold和Rnew数组,包括:
如果
Figure BDA0002402583790000044
为被抽样的节点,则将其Rold和Rnew数组初始化为1<<i,否则将其初始化为0。
在一个实施例中,所述步骤S4中的预设规则,包括:
对于
Figure BDA0002402583790000045
中任意节点u,并且节点v与邻居节点u之间的距离为s,如果v从G中删除,则对于
Figure BDA0002402583790000046
的任意节点w与u之间的最短路径,包含在
Figure BDA0002402583790000047
的诱导子图中。
在一个实施例中,所述步骤S4包括:
S41、查找出大数据原图G中最小的h-跳邻居数k;
S42、将大数据原图G中所有h-跳邻居数为k的节点放入队列Q中;
S43、从Q中选择节点v,将v从Q中和G中删除,并且将coreh(v)赋值为k;
S44、基于位图的近似动态更新在
Figure BDA0002402583790000048
中所有节点的h-跳邻居数;
S45、如果
Figure BDA0002402583790000049
中存在节点u的h-跳邻居数小于等于k,则将u放入集合Q中;
S46、如果集合Q不为空,重复S43~S45;
S47、如果图G不为空,重复S41~S46。
在一个实施例中,所述步骤S44包括:
第一步,用P表示G(R)中被抽样节点的集合;
第二步,若G(R)节点个数为x,则将G(R)中每个节点的标签从0到x-1重新编号,并用ui(0≤i<x)表示;
第三步,用两个比特位数组Rold和Rnew来存储G(R)中每个节点的h-跳邻居;
第四步,对G(R)中每个节点ui,如果ui在P中则初始化Rold[i]=1<<i,否则Rold[i]=0;
第五步,遍历子图G(R)中所有的边(ui,uj)并执行第六步;
第六步,将节点ui和uj的分别对应的Rold[i]、Rold[J]按位或操作,并将结果分别保存于Rnew[i]与Rnew[j]中;
第七步,执行完第五步和第六步之后交换Rnew与Rold
第八步,执行第五步到第七步共h次并在最后一次迭代将结果存入Rnew中;
第九步,遍历G(R)中所有节点ui,并执行第十步到第十二步;
第十步,s=disG(ui,v),如果v在P中则定义变量cnt=0,否则cnt=1;
第十一步,遍历
Figure BDA0002402583790000051
的每个节点uj,如果Rnew[i]的第j位为0,则cnt加1;
第十二步,更新
Figure BDA0002402583790000052
Figure BDA0002402583790000053
则ui在删除v之后的h-跳邻居数为
Figure BDA0002402583790000054
本发明实施例提供的一种基于位图近似的h-跳距离核分解方法:
与现有技术相比,在现有算法对空间消耗非常大的条件下,本发明实施例提出的一种基于位图近似的h-跳距离核分解方法,基于位图的存储技术来提高算法的时间和空间效率,而且精确算法在处理大图数据也相当困难的同时,本发明实施例在保证一定准确度的同时,大幅度提升算法的计算效率,以更高效率处理大数据。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例提供的基于位图近似的h-跳距离核分解方法流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参照图1所示,本发明实施例提供一种基于位图近似的h-跳距离核分解方法,包括:
S1、从待分解的大数据原图G中随机抽样一个子图S;所述子图S中的节点为被抽样的节点;
S2、计算每个节点v在所述原图G中的h-跳邻居数及其h-跳邻居中被抽样的节点数,分别用
Figure BDA0002402583790000061
和Selv(G)表示;并将
Figure BDA0002402583790000062
和Selv(G)的比值存储于rate(v);
S3、当删除一个节点v后,为
Figure BDA0002402583790000063
中的每个节点重新编号,初始化每个节点的Rold和Rnew数组;其中,
Figure BDA0002402583790000064
表示v在图G中的h-跳邻居;disG(u,v)表示节点v与邻居节点u之间最短路径的长度,并且用
Figure BDA0002402583790000071
表示节点v在G的h-跳邻居数;
S4、根据预设规则和动态规划方程更新每个Rold和Rnew数组;每个节点
Figure BDA0002402583790000072
中被抽样的h-跳邻居均保存于Rnew数组中,遍历每个节点的Rnew数组,查找到每个节点被抽样的h-跳邻居的减少数;根据更新后的Selu(G)和rate(u),估计u在G中的h-跳邻居。
本实施例中,该方法可用于许多大数据处理相关的应用,例如社交网络分析,合作网络分析及web网络分析等。目前现有技术都是精确的计算算法,针对超大规模的图,精确算法无法快速挖掘图中的隐含的结构,而且现有技术在计算过程中会消耗很大的计算机内存,针对现有技术存在的缺陷,本发明提出了基于位图近似的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 BDA0002402583790000073
表示v在图G中的h-跳邻居,其中disG(u,v)表示节点v与u之间最短路径的长度,并且用
Figure BDA0002402583790000081
表示节点v在G的h-跳邻居数。如果
Figure BDA0002402583790000082
Figure BDA0002402583790000083
则称G(S)=(S,E(s))为图G的诱导子图。对(k,h)-Core的定义如下:
定义1:((k,h)-Core)给定无向图无权G和两个参数k和h,(k,h)-Core是图G中的一个极大子图
Figure BDA0002402583790000084
并且子图
Figure BDA0002402583790000085
中任意节点v的h-跳度要满足
Figure BDA0002402583790000086
基于h-跳距离的核分解的任务是,在给定h的条件下,对于图G中任意节点v,求出其coreh(v)值,下面将对问题正式的定义如下:
问题的定义:给定一个图G和一个正整数h的条件下,利用位图的动态更新方法,准确计算出G中每个节点的coreh(v)值。
Bonchi对(k,h)-Core子图做了详尽的分析,总结了(k,h)-Core所具有的特征,并且用实验验证了子图具有的特征,其最主要的特征如下:(1)对于任意一个图G每个节点v其coreh(v)值都是唯一的;(2)如果子图
Figure BDA0002402583790000087
表示所有coreh值大于等于k的节点组成的诱导子图,那么对于任意j如果j>k,则满足
Figure BDA0002402583790000088
由于(k,h)-Core子图存在以上两个特征,所以此问题可以基于传统核分解算法求解,也就是说,迭代删除h-跳度最小的节点,直到所有节点删除为止,本发明提出的算法也是基于此方法,但是在更新方面利用了高效的位图动态更新方法,极大提高了算法的性能。
由于算法的基本框架为现有技术,因此不再赘述算法框架的介绍,本发明着重介绍如何在动态更新时利用位图技术和近似技术改进此算法。
2、动态更新方法的理论支撑
在动态更新之前,本发明首先介绍相关的理论知识,以支撑本发明提出方法的正确性。
观察1:假设节点v从G中删除了,那么对于
Figure BDA0002402583790000089
中任意节点u,集合
Figure BDA00024025837900000810
中的节点仍然在u的h-跳邻居中。
观察2:假设节点v从G中删除了,对于
Figure BDA00024025837900000811
中任意节点u,v与u之间的距离为s=disG(v,u),则集合
Figure BDA0002402583790000091
中的节点仍然是u的h-跳邻居。
由观察1和观察2可知,如果节点v从图G中删除了,对于v的h-跳邻居中任意节点u,则只需要关注在
Figure BDA0002402583790000092
内的节点是否仍然是u的h-跳邻居就足够了,其中s表示u与v之间的距离。为了计算
Figure BDA0002402583790000093
中的节点是否是u的h-跳邻居,可以基于如下引理。
引理1:对于
Figure BDA0002402583790000094
中任意节点u,并且v与u之间的距离为s,如果v从G中删除,则对于
Figure BDA0002402583790000095
的任意节点w与u之间的最短路径一定包含在
Figure BDA0002402583790000096
的诱导子图中,也就是说,假设(w,w1,w2,…,u)为w与u之间的任意最短路径,且长度为h,则对于任意1≤i<h,wi都包含在
Figure BDA0002402583790000097
中。
由引理1可知,在计算
Figure BDA0002402583790000098
中的节点是否是u的h-跳邻居时,只需要在
Figure BDA0002402583790000099
的诱导子图中计算就足够保证计算结果的正确性,对
Figure BDA00024025837900000910
之外的节点完全没必要考虑,所以,算法才保证了计算的高效性。本发明将详细介绍如果利用位图计算在
Figure BDA00024025837900000911
组成的诱导子图中存储每个节点的h-跳邻居。
3、基于位图的动态更新技术
如果一个节点v从图中删除了,对于其h-跳邻居节点u,若要更新u的h-跳邻居,就需要知道
Figure BDA00024025837900000912
中的节点是否还是u的h-跳邻居,其中s表示u与v之间的距离。并且发现在
Figure BDA00024025837900000913
中的节点与u只存在两种关系,要么是u的h-跳邻居,要么不是,并且不存在其他任何情况,所以在这种条件下,则完全可以使用一个比特位来表示
Figure BDA00024025837900000914
中某个节点w是否是u的h-跳邻居,即1表示是,0表示不是。因此,基于位图的存储结构如下:
首先当删除节点v的时候,动态更新的所有计算可以认为是在
Figure BDA00024025837900000915
组成的诱导子图S(不包含节点v)中完成的,而且在比特位操作之前,需要重新对S中所有的节点从0到|S|-1进行编号,重新编号之后,本发明用i表示节点ui的重新编号,然后为每个节点i申请一个比特位空间R,用来存储S中的哪些节点是其h-跳邻居,因此比特位空间的位置可以与编号一一对应起来,例如比特位空间第j个位置可以表示节点j是否是节点i的h-跳邻居,假设节点i的比特位空间是由0110010组成的,那么很容易的知道节点u1,u4,u5是ui是h-跳邻居。因为只需要知道
Figure BDA0002402583790000101
中的节点是否是u的h-跳邻居,因此,对于
Figure BDA0002402583790000102
的所有节点u,其最大的比特位空间为
Figure BDA0002402583790000103
又因为一个整数可以表示多个比特位空间,如果计算机最大的整型类型所占用的比特位空间为B,则S中每个节点只需要
Figure BDA0002402583790000104
个整数表示就足够了。
4、基于位图动态更新的近似技术
此近似方法主要的主要思想是在较小的子图中估计原始图中每个节点的h-跳邻居。初始化阶段的过程如下:算法从原图中随机抽样一个子图S(子图S的抽样方法可以为,从V中随机选择一定比例节点集合,由此集合组成的诱导子图为子图S),称S中的节点为被抽样的节点;然后计算每个节点v在原图中的h-跳邻居数及其h-跳邻居中被抽样的节点数,本发明实施例分别用
Figure BDA0002402583790000105
和Selv(G)表示,并将
Figure BDA0002402583790000106
和Selv(G)的比值并存储于rate(v)中。此初始化阶段的目的主要是记录每个节点h-跳邻居中被抽样的节点比例,然后根据被抽样节点数目去估计每个节点在更新后的h-跳邻居数。因此在动态更新过程中,此算法主要是更新每个节点h-跳邻居中被抽样节点的减少数目,下面将介绍基于位图近似的动态更新技术。
当删除一个节点v之后,本发明只需要更新节点
Figure BDA0002402583790000107
Figure BDA0002402583790000108
中被抽样的h-跳邻居的减少数就足够了,其中s表示v与u的距离,然后依据Selu(G)中的数目去估算u在G中的h-跳邻居。当删除v之后,基于位图近似的动态更新过程如下:首先算法,为
Figure BDA0002402583790000109
中的每个节点重新编号,随后算法初始化每个节点的Rold和Rnew数组,需要注意的是如果
Figure BDA00024025837900001010
是被抽样的节点,则将其Rold和Rnew数组初始化为1<<i,否则将其初始化为0;然后方法利用引理1和动态规划方程去动态更新每个Rold和Rnew数组,最后每个节点
Figure BDA00024025837900001011
中被抽样的h-跳邻居的都保存于Rnew中,算法只需要遍历每个节点的Rnew就可以找出每个节点被抽样的h-跳邻居的减少数了;最后算法只需要根据更新后的Selu(G)和rate(u)去估计u在G中的h-跳邻居就可以了。因此,该方法极大减少动态更新过程中的计算,提高了算法的计算效率。
5、基于位图近似算法的基本框架
输入:无权无向图G,正整数h,以及抽样率r(r为0到1之间的任意小数)
输出:coreh(v)对于G中的所有节点v
第(1)步,根据抽样率r随机抽样子图S;
第(2)步,对每个节点v,计算
Figure BDA0002402583790000111
Figure BDA0002402583790000112
中被抽样的节点数Selv(G);
第(3)步,计算
Figure BDA0002402583790000113
和Selv(G)的比值,用rate(v)表示;
第(4)步,找出图G中最小的h-跳邻居数k;
第(5)步,把图G中所有h-跳邻居数为k的节点放入队列Q中;
第(6)步,从Q中选择节点v,将v从Q中和G中删除,并且将coreh(v)赋值为k;
第(7)步,基于位图的近似方法动态更新在
Figure BDA0002402583790000114
中所有节点的h-跳邻居数;
第(8)步,如果
Figure BDA0002402583790000115
中存在节点u的h-跳邻居数小于等于k,则将u放入集合Q中;
第(9)步,如果集合Q不为空,重复第(6)步到第(8)步;
第(10)步,如果图G不为空,重复第(4)步到第(9)步;
需要注意的是,在上述第(1)步中求所有节点的h-跳邻居,只需要以节点出发进行广度优先遍历h层就能找到所有的h-跳邻居。
在第(7)步中,将详细描述基于位图的近似动态更新的细节:
输入:被抽样的节点集合S,节点v和由
Figure BDA0002402583790000116
组成的诱导子图G(R);
输出:v的每个h-跳邻居u,在v从G中删除后的h-跳邻居数;
第一步,用P表示G(R)中被抽样节点的集合;
第二步,若G(R)节点个数为x,则将G(R)中每个节点的标签从0到x-1重新编号,并用ui(0≤i<x)表示;
第三步,用两个比特位数组Rold和Rnew来存储G(R)中每个节点的h-跳邻居;
第四步,对G(R)中每个节点ui,如果ui在P中则初始化Rold[i]=1<<i(由于计算机最大可以存储64位的整数,因此也可以用Rold[i][i/64]=1<<i%64表示Rold[i]),否则Rold[i]=0;
第五步,遍历子图G(R)中所有的边(ui,uj)并执行第六步;
第六步,将节点ui和uj的分别对应的Rold[i]、Rold[J]按位或操作,并将结果分别保存于Rnew[i]与Rnew[j]中;
第七步,执行完第五步和第六步之后交换Rnew与Rold
第八步,执行第五步到第七步共h次并在最后一次迭代将结果存入Rnew中;
第九步,遍历G(R)中所有节点ui,并执行第十步到第十二步;
第十步,s=disG(ui,v),s表示ui与v之间在G中的距离;如果v在P中则定义变量cnt=0,否则cnt=1;
第十一步,遍历
Figure BDA0002402583790000121
的每个节点uj,如果Rnew[i]的第j位为0,则cnt加1;
第十二步,更新
Figure BDA0002402583790000122
Figure BDA0002402583790000123
即:将
Figure BDA0002402583790000124
的结果保存于
Figure BDA0002402583790000125
中;则ui在删除v之后的h-跳邻居数为
Figure BDA0002402583790000126
在动态更新过程中,首先需要为G(S)中每个节点申请一定的比特位空间,用来标记其h-跳邻居。算法在第五步到第八步是利用动态规划的方法来计算S中所有节点的h-跳邻居的,其主要为
Figure BDA0002402583790000127
其中dp(u,i)表示与节点u的距离小于等于i的节点集合(此集合是用比特位标记的)并且Γv(G)=Nv(G)∪{v},需要注意的是在第七步,在数组交换中,只需要交换Rnew与Rold的地址就可以在O(1)时间内交换两个数组。根据观察2,若要找u减少的h-跳邻居数,只需要观察
Figure BDA0002402583790000128
内的节点不是u的h-跳邻居的个数就足够了,动态更新的第十一步就是求节点u在
Figure BDA0002402583790000131
中被抽样的非邻居数。
由于在前面提出了两个观察,和一个引理,在动态更新部分的第四步到第九步是基于引理1设计的步骤,所以能够保证Rnew包含了在删除节点v之后每个节点在
Figure BDA0002402583790000132
中被抽样的h-跳邻居;第十步到第十二步是根据观察2计算每个节点减少的h-跳邻居数,所以动态更新过程能够保证方法的正确执行。
算法的时间复杂度分析,假设D表示图G中最大h-跳邻居组成的诱导子图,E(D)表示此诱导子图的边,假设在计算机中最大的整型常量在计算机中占用的比特位大小为B。在算法总体框架的第一行所需的时间复杂度为O(|V|*|E(D)|*r),在动态更新节点h-跳邻居数量时,第三步到第六步时间复杂度为O(|D|*|E(D)|*h*r/B),第七步到第九步的时间复杂度为O(|D|*|D|),因此整个算法的时间复杂度为O(|V|(|D|^2+r*h*|D|*|E(D)|/B))。
下面通过一个具体的实施例对本发明的方法进行说明:
如在社交网络分析中,为快速估计出网络中所隐含的社交圈子,基于本发明提出的方法的具体实施步骤如下。
首先可以将社交网络(此实例中G表示一个社交网络)中每个人看作为一个节点,人与人之间的关系可以看作为人之间相连的边。本方法首先根据提供的抽样率r从原社交网络G中随机抽样一个子社交网络G(S),同时计算每个人在G中的h-跳邻居
Figure BDA0002402583790000133
(即每个人在h跳内有联系的人的集合)以及将此人
Figure BDA0002402583790000134
中被抽样的人数放入到变量Selv(G)中;在得出
Figure BDA0002402583790000135
和Selv(G)之后,可以得到每个人的h-跳邻居中被抽样的比例rate(v);然后找出整个社交网络G中h-跳邻居最小的值并将此值赋值为k,并将所有h-跳邻居数为k的人放到一个队列中Q中;然后此方法将Q中的人依次移除,假设v表示正被移除的人,则标记v的核值大小为k。
对于v被移除之后,本方法需要更新在v的h-跳邻居中所有人的h-跳邻居数,假设v的h-跳邻居为
Figure BDA0002402583790000136
且由
Figure BDA0002402583790000137
组成的子社区G(R)的边集为E(R)={e0,e1,e2,…,et}。本方法首先找出G(R)中被抽样的集合P,并分别用Rold[i]和Rnew[i]两个集合分别表示G(R)中每个ui的两个比特位空间(用于存储ui在G(R)中的h-跳邻居),需要注意的是,此比特位空间是一个整型数组表示的(例如在c++语言中long long int类型可表示64个比特位,因此一个整型可以表示大小为64的比特位空间,整个比特位空间可以用|R|/64+1个整数表示);每个ui的比特位空间的初始值赋值满足如下规则:如果ui与v的距离小于h并且ui存在于P中则Rold[i]的第i个比特位为1,反之则将Rold[i]的第个比特位为0。然后遍历E(R)中每条边ei=(i,j),对边上的两个端点i和j的比特位空间Rold做或运算放入到Rnew中,如Rnew[i]=Rold[i]|Rold[j];Rnew[j]=Rold[i]|Rold[j],在遍历完E(R)中所有的边之后,交换每个节点Rnew与Rold中的数据,然后进行下一次遍历E(R),直到遍历h次为止。
假设Rnew为遍历E(S)h次之后的最终结果(即Rnew中的结果比Rold新),随后遍历
Figure BDA0002402583790000141
中每个ui并统计ui被抽样的h-跳邻居在
Figure BDA0002402583790000142
中减少的数目,其中s为ui在G中到v的距离;本方法用变量cnt统计数量,如果v存在于P中则cnt初始化为1,否则为0;然后遍历
Figure BDA0002402583790000143
中每个被抽样的节点uj,如果Rnew[i]的第j个位置为0,那么uj为ui的非h-跳邻居,则cnt中的数量加一。最后更新
Figure BDA0002402583790000144
Figure BDA0002402583790000145
并且用公式
Figure BDA0002402583790000146
估计ui在G中的h-跳邻居数。
动态更新之后,统计G(R)中每个ui在更新后的h-跳邻居数,如果ui的h-跳邻居数小于等于k,则将ui放入队列Q中。
本方法一直从Q移除节点并执行同样的动态更新操作,直到Q为空集为止,则完成了对h-跳邻居数最小值为k的时的迭代,如果此时社区G还不为空,则继续从原社区G中找h-跳邻居数最小的值,并继续删除这些节点,直到社区G为空,本方法计算终止,完成了社交网络中社交圈子的估计。
本发明提出了一种基于位图近似的h-跳距离核分解算法,此近似方法能够保证高准确率的同时,也能够保证算法要比精确算法的时间性能提高一到两个数量级,为大规模图数据分析提供了巨大的应用价值。而且在设计过程中采用位图的存储技术,由于位图不仅在存储上占用更少的空间,而且空间的减少也导致需要遍历空间的减少,所以位图技术不管是在精确计算过程中还是在近似计算中都能有效提高算法的性能。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (6)

1.一种基于位图近似的h-跳距离核分解方法,其特征在于,包括以下步骤:
S1、从待分解的大数据原图G中随机抽样一个子图S;所述子图S中的节点为被抽样的节点;
S2、计算每个节点v在所述原图G中的h-跳邻居数及其h-跳邻居中被抽样的节点数,分别用
Figure FDA0002402583780000011
和Selv(G)表示;并将
Figure FDA0002402583780000012
和Selv(G)的比值存储于rate(v);
S3、当删除一个节点v后,为
Figure FDA0002402583780000013
中的每个节点重新编号,初始化每个节点的Rold和Rnew数组;其中,
Figure FDA0002402583780000014
表示v在图G中的h-跳邻居;disG(u,v)表示节点v与邻居节点u之间最短路径的长度,并且用
Figure FDA0002402583780000015
表示节点v在G的h-跳邻居数;
S4、根据预设规则和动态规划方程更新每个Rold和Rnew数组;每个节点
Figure FDA0002402583780000016
中被抽样的h-跳邻居均保存于Rnew数组中,遍历每个节点的Rnew数组,查找到每个节点被抽样的h-跳邻居的减少数;根据更新后的Selu(G)和rate(u),估计u在G中的h-跳邻居。
2.如权利要求1所述的一种基于位图近似的h-跳距离核分解方法,其特征在于,所述步骤S1,包括:
待分解的大数据原图G=(V,E)表示,其中V和E分别表示图中节点和边的集合;从V中随机选择预设比例节点集合,由此集合组成的诱导子图为子图S。
3.如权利要求1所述的一种基于位图近似的h-跳距离核分解方法,其特征在于,所述步骤S3中初始化每个节点的Rold和Rnew数组,包括:
如果
Figure FDA0002402583780000017
为被抽样的节点,则将其Rold和Rnew数组初始化为1<<i,否则将其初始化为0。
4.如权利要求3所述的一种基于位图近似的h-跳距离核分解方法,其特征在于,所述步骤S4中的预设规则,包括:
对于
Figure FDA0002402583780000021
中任意节点u,并且节点v与邻居节点u之间的距离为s,如果v从G中删除,则对于
Figure FDA0002402583780000022
的任意节点w与u之间的最短路径,包含在
Figure FDA0002402583780000023
的诱导子图中。
5.如权利要求4所述的一种基于位图近似的h-跳距离核分解方法,其特征在于,所述步骤S4包括:
S41、查找出大数据原图G中最小的h-跳邻居数k;
S42、将大数据原图G中所有h-跳邻居数为k的节点放入队列Q中;
S43、从Q中选择节点v,将v从Q中和G中删除,并且将coreh(v)赋值为k;
S44、基于位图的近似动态更新在
Figure FDA0002402583780000024
中所有节点的h-跳邻居数;
S45、如果
Figure FDA0002402583780000025
中存在节点u的h-跳邻居数小于等于k,则将u放入集合Q中;
S46、如果集合Q不为空,重复S43~S45;
S47、如果图G不为空,重复S41~S46。
6.如权利要求5所述的一种基于位图近似的h-跳距离核分解方法,其特征在于,所述步骤S44包括:
第一步,用P表示G(R)中被抽样节点的集合;
第二步,若G(R)节点个数为x,则将G(R)中每个节点的标签从0到x-1重新编号,并用ui(0≤i<x)表示;
第三步,用两个比特位数组Rold和Rnew来存储G(R)中每个节点的h-跳邻居;
第四步,对G(R)中每个节点ui,如果ui在P中则初始化Rold[i]=1<<i,否则Rold[i]=0;
第五步,遍历子图G(R)中所有的边(ui,uj)并执行第六步;
第六步,将节点ui和uj的分别对应的Rold[i]、Rold[J]按位或操作,并将结果分别保存于Rnew[i]与Rnew[j]中;
第七步,执行完第五步和第六步之后交换Rnew与Rold
第八步,执行第五步到第七步共h次并在最后一次迭代将结果存入Rnew中;
第九步,遍历G(R)中所有节点ui,并执行第十步到第十二步;
第十步,s=disG(ui,v),如果v在P中则定义变量cnt=0,否则cnt=1;
第十一步,遍历
Figure FDA0002402583780000031
的每个节点uj,如果Rnew[i]的第j位为0,则cnt加1;
第十二步,更新
Figure FDA0002402583780000032
Figure FDA0002402583780000033
则ui在删除v之后的h-跳邻居数为
Figure FDA0002402583780000034
CN202010151472.2A 2020-03-06 2020-03-06 一种基于位图近似的h-跳距离核分解方法 Active CN111382316B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010151472.2A CN111382316B (zh) 2020-03-06 2020-03-06 一种基于位图近似的h-跳距离核分解方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010151472.2A CN111382316B (zh) 2020-03-06 2020-03-06 一种基于位图近似的h-跳距离核分解方法

Publications (2)

Publication Number Publication Date
CN111382316A true CN111382316A (zh) 2020-07-07
CN111382316B CN111382316B (zh) 2023-09-26

Family

ID=71217180

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010151472.2A Active CN111382316B (zh) 2020-03-06 2020-03-06 一种基于位图近似的h-跳距离核分解方法

Country Status (1)

Country Link
CN (1) CN111382316B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060015588A1 (en) * 2004-06-30 2006-01-19 Microsoft Corporation Partitioning social networks
CN108388651A (zh) * 2018-02-28 2018-08-10 北京理工大学 一种基于图核和卷积神经网络的文本分类方法
CN108711111A (zh) * 2018-05-16 2018-10-26 山东科技大学 一种基于K-shell分解的社交网络影响力最大化方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060015588A1 (en) * 2004-06-30 2006-01-19 Microsoft Corporation Partitioning social networks
CN108388651A (zh) * 2018-02-28 2018-08-10 北京理工大学 一种基于图核和卷积神经网络的文本分类方法
CN108711111A (zh) * 2018-05-16 2018-10-26 山东科技大学 一种基于K-shell分解的社交网络影响力最大化方法

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
CN111382316B (zh) 2023-09-26

Similar Documents

Publication Publication Date Title
Even Graph algorithms
Clarkson Algorithms for closest-point problems (computational geometry)
CN109889396B (zh) 一种自治域级互联网拓扑可视化方法
Banerjee et al. Space efficient linear time algorithms for BFS, DFS and applications
Uno An efficient algorithm for enumerating pseudo cliques
Han et al. A fast layout algorithm for protein interaction networks
Erdős et al. Graph realizations constrained by skeleton graphs
CN111382316A (zh) 一种基于位图近似的h-跳距离核分解方法
Dujmović et al. A fixed-parameter approach to two-layer planarization
CN113079094A (zh) 多处理器网络的处理路径确定方法、装置及存储介质
Apostolico et al. Motif patterns in 2D
CN111291232B (zh) 一种基于h-跳距离的图核分解方法
Glantz et al. Tree-based coarsening and partitioning of complex networks
Győri et al. Inverse Turán numbers
Wang et al. Combinatorial properties of Farey graphs
Ganapathy et al. On contract-and-refine transformations between phylogenetic trees
Shinn et al. Combining all pairs shortest paths and all pairs bottleneck paths problems
CN108768735B (zh) 一种测试床拓扑结构的二分图采样方法及装置
CN111680196A (zh) 一种基于二分图蝴蝶结构的关键节点搜索方法
Aggarwal et al. Dory: Overcoming barriers to computing persistent homology
Garg et al. Almost bend-optimal planar orthogonal drawings of biconnected degree-3 planar graphs in quadratic time
Naik et al. Iterative graph neural network enhancement via frequent subgraph mining of explanations
CN117609412B (zh) 一种基于网络结构信息的空间对象关联方法及装置
CN116755636B (zh) 一种网格文件的并行读入方法、装置、设备及存储介质
CN112950728A (zh) 一种彩色k-星核分解方法

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