一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于签名网络的极大平衡社区及其搜索方法与流程

2022-06-25 00:35:37 来源:中国专利 TAG:


1.本发明属于图数据查询与分析技术领域,具体来说是,稠密社区模型的设计与搜索技术领域,提出了一种基于签名网络的极大平衡社区及其搜索方法。


背景技术:

2.签名网络近年来备受关注。在之前的工作中,人们广泛地研究了签名网络中潜在的社会动力学过程的理论。在这些理论中,结构平衡理论是最基本和最主要的理论。此后,结构平衡理论得到了广泛的发展。在这些工作中,值得注意的是,通过对签名网络的演化过程进行建模,从理论上证明了当顶点间初始友好度的平均值μ≤0时,网络将演化为一个平衡社区。
3.除了签名网络理论外,大量的挖掘签名网络的文献已经出现。其中,与本发明最密切相关的工作是(α,k)-社区模型。给定一个签名网络g,(α,k)-社区定义为极大社区c,使得c中每个顶点的负度数不大于k,c中每个顶点的正度数不小于αk,(α,k)-社区模型只考虑了社区中正负边的数量,完全忽略了社区的结构平衡,使得(α,k)-社区模型与本发明的模型有本质的不同。
4.社区模型是最基本的内聚子图模型之一。有学者研究了二分图上的极大双社区搜索问题。通过保持一边的顶点集的增长,另一边的顶点集的剥离来搜索极大双社区。它还利用了一些技术来进一步提高搜索性能,如从候选集中选择度数较小的顶点来减少搜索树的深度,以及对可能产生非极大双社区的顶点进行修剪等。注意,本发明的平衡社区模型不同于现有的无签名网络内聚子图模型,现有的研究无法很好地解决这个问题。如果只考虑签名网络中的正边,而使用传统的无签名网络方法进行社区检测,则发现的结果会忽略负边,从而丢失签名网络中一半有意义的信息。
5.图是一个由点和边构成的抽象模型。随着图论应用的激增,研究人员致力于研究和分析基于图数据的诸多基本问题。社区模型在社会网络挖掘、金融分析和计算生物学等领域有着广泛的应用前景,并得到了广泛的研究。现有的关于社区的研究主要集中在无签名网络上,即图中的所有边都具有相同的性质。不幸的是,在许多现实世界的应用场景中,两个实体之间的关系具有完全相反的属性,例如社交网络中用户之间的朋友-敌人关系,支持意见网络中的不同意见,信任网络中的信任-不信任关系和蛋白质相互作用网络中的伙伴-对抗关系。将这些应用程序建模为带正负边的签名网络,可以使它们能够捕捉到比无签名网络更复杂的语义。因此,现有的基于无签名网络的社区的研究可能不适合刻画签名网络中的内聚子图,因此迫切需要为签名网络定义一个特殊的社区模型。
6.对于签名网络,揭示签名网络动态和结构的最基本和最主要的理论是结构平衡理论。结构平衡理论背后的理论依据可以被描述为格言:“朋友的朋友是我的朋友,朋友的敌人是我的敌人”。具体地说,对于一个签名网络g,如果g可以分成两个子图,使得同一子图中的边是正向的,子图之间的边是负向的,则g是结构平衡的。在签名网络中,一个不平衡的子图结构是不稳定的,并且趋向于进化到平衡状态。
7.根据以上分析,社区模型是图分析中的一种基本的内聚子图模型,可以应用于许多领域,但在签名网络中没有合适的模型。同时,基于结构平衡理论,签名网络的结构被期望是平衡的。基于此,本发明提出了一个极大平衡社区模型。定义为,给定签名网络g,极大平衡社区c是 g的极大子图,使得(1)c是完全连通的,即c中的每对顶点都有一条边。(2)c是平衡的,即c可以分成两部分,使得同一部分的边是正向的,连接两部分的边是负向的。该定义不仅抓住了无签名网络中社区模型的本质,而且保证了检测到的社区在签名网络中是稳定的。


技术实现要素:

8.本发明的目的是设计一个有效的算法来搜索给定签名网络中所有极大平衡社区,并且可以实时更新结果。
9.基于在签名网络中最基本和最主要的理论,即结构平衡理论,本发明提出了一个平衡的社区模型,并且提出多种基于签名网络的平衡社区搜索算法,以应对复杂的应用场景,如时间响应要求过高;图数据过大,超出内部存储空间范围;图数据不断动态更新等多种情况。本发明提出的基于签名网络的平衡社区搜索系统流程图如图1所示,具体流程如下:
10.(1)搜索所有极大平衡社区。针对平衡社区模型,本发明利用签名网络的独特性质,提出了一种极大平衡社区搜索算法,并在此的基础上,设计了优化策略,从而进一步提高搜索效率。对于多核cpu运行环境,本发明提出了利用多核cpu的并行搜索算法,提高运行效率。对于局限的内存环境和超大规模图数据,本发明提出了基于外部存储的搜索算法。
11.(2)增量计算。针对动态图,本发明提出了通过增量计算对现有结果进行实时维护和更新的算法。
12.本发明提出了一种基于签名网络的极大平衡社区,所述极大平衡社区的特点包括:所述平衡社区是结构平衡的,即社区内的点可分为两个子图,同一子图内的任意边都是正边,不同子图间的任意边都是负边;所述平衡社区是结构紧密的,即任意两点之间都有边相连;所述平衡社区的两个子图的点数分别不能小于一个用户给定的阈值;所述平衡社区是极大子图,即不会有任意点可以被加入到当前的子图中。
13.其中,极大平衡社区引理包括:给定一个签名网络,和一个平衡社区,如果一个点与平衡社区里的每个点都有边相连,同时与平衡社区的一个单边子图相连的边都为正边,与另一个单边子图的边都为负边,那么这个点可以被加入到当前的平衡社区里来,形成一个更大的平衡社区。
14.基于以上极大平衡社区,本发明还提出了一种极大平衡社区的搜索方法,包括以下步骤:
15.步骤(1),给定一个签名网络,选定每一个点作为平衡社区的初始点,该点的邻居为候选集;
16.步骤(2),每次从候选集中挑选点,加入到当前的平衡社区中,如果一个点被搜索过了,就把它从候选集中移除,并且标记已搜索,重复步骤(2),直到候选集为空;
17.步骤(3),判断搜索到的平衡社区是否合理,判断条件如下:
18.判断条件(3.1),是否存在一个已经被搜索过的点,使得该点可以被加入到当前的
平衡社区中,若有,则当前的平衡社区已经被搜索过,不是极大的;
19.判断条件(3.2),当前平衡社区的两个子图的点数是否都大于阈值。
20.本发明中,如果当前平衡社区的单边点数和单边候选集点数之和小于阈值,则当前搜索分支无效;或,如果存在已经搜索过的点,该点与当前平衡社区的点和候选集均有有效边相连,则当前搜索分支无效;或,如果当前平衡社区与候选集可以组成一个极大平衡社区,则直接终止搜索;或,如果一个点的正向度数小于阈值-1,或者负向度数小于阈值,则这个点不会出现在任何一个平衡社区中。
21.本发明中,每个点搜索它所在的平衡社区的过程是相互独立的,利用多核cpu来进行并行运算,为每个点创建一个单独的线程,使得多个点可以同时搜索它们所在的平衡社区。
22.本发明中,每个点的搜索范围是它的邻居构成的子图,即邻域;面对内存无法容纳整个图数据时,只把一些点和它们的邻居子图加载到内存,来减少内存占用;给每个点排序,对于当前社区,只有搜索该社区中排序最低的点时,输出该社区。
23.本发明中,当签名网络发生动态改变时,针对增加一条边的情况,计算出发生变化的极大平衡社区步骤如下:
24.当签名网络增加一条边时,两个现有的平衡社区会生成一个新的平衡社区,同时,新的平衡社区会覆盖旧的平衡社区,可得到:
25.增加一条边e=(u,v),则包含边e的平衡社区一定是之前分别包含u和v的平衡社区的交集加上e;并且,
26.增加一条边e=(u,v),如果包含边e的平衡社区是之前包含u的平衡社区加上v,那么包含 u的平衡社区应该被移除。
27.本发明中,当签名网络发生动态改变时,针对减少一条边的情况,计算出发生变化的极大平衡社区步骤如下:
28.删除一条边e=(u,v),则增加的平衡社区对应增加一条边的情况时删除的平衡社区,删除的平衡社区则为包含e边的所有平衡社区。
29.本发明中,当签名网络发生动态改变时,针对删除多条边的情况,计算出发生变化的极大平衡社区步骤如下:删除多条边,则增加的平衡社区和删除的平衡社区分别为增加多条边情况时删除的平衡社区和增加的平衡社区。
30.本发明中,当签名网络发生动态改变时,针对增加多条边的情况,计算出发生变化的极大平衡社区步骤如下:
31.多条边会合并生成一个新的平衡社区,同时,新的平衡社区会覆盖多个旧的平衡社区,搜索新的平衡社区步骤如下:
32.步骤(1),给定一个签名网络,和若干新增边,选定每一条新增边作为平衡社区的初始边,该边的公共邻居为候选集;
33.步骤(2),每次从候选集中挑选点,如果该点不会引入一条已经搜索过的新增边,就把该点加入到当前的平衡社区中,并且标记已搜索,重复步骤(2),直到候选集为空;
34.步骤(3),判断搜索到的平衡社区是否合理。
35.本发明的基于签名网络的极大平衡社区搜索问题被证明是np-难问题,即在多项式时间内得不到准确解。为了解决这一技术难题,本发明不仅运用了算法优化策略,如中心
点选择和提前终止搜索,还运用了硬件优化策略,如并行搜索算法和外存搜索算法。通过以上优化策略,本发明的搜索算法大大提高了算法的运行效率,使之可以在可观的时间内完成对大规模签名网络上的极大平衡社区的搜索。
附图说明
36.图1为程序流程图。
37.图2为签名网络中的极大平衡社区。
38.图3为搜索树。
39.图4为运用中心点(pivot)的搜索树。
40.图5为不同阈值下的算法运行时间。
41.图6为不同规模图数据上的算法运行时间。
42.图7为实验数据集。
具体实施方式
43.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
44.网络分析领域中的社区挖掘问题是一个基础的和有意义的问题,本发明基于在签名网络中最基本和最主要的理论,即结构平衡理论,提出了一个极大平衡社区模型。针对极大平衡社区模型,本发明利用签名网络的独特性质,提出了一种极大平衡社区搜索算法,并在此基础上,设计了优化策略,从而进一步提高搜索效率。针对多核cpu运行环境,本发明提出了基于多核 cpu的并行搜索算法。针对有限的内存环境和超大规模图数据,本发明提出了基于外部存储的搜索算法。针对动态图,本发明提出了一个通过增量计算对现有结果进行实时维护和更新的算法。
45.基于签名网络的平衡社区搜索系统的具体发明点有如下五个方面:
46.1.本发明设计了基于签名网络的平衡社区,其基本特征有以下几点:
47.特征(1.1),一个平衡社区是结构平衡的,即社区内的点可分为两个子图,同一子图内的任意边都是正边,不同子图间的任意边都是负边;
48.特征(1.2),一个平衡社区是结构紧密的,即任意两点之间都有边相连;
49.特征(1.3),平衡社区的两个子图的点数分别不能小于一个用户给定的阈值;
50.特征(1.4),一个平衡社区是极大子图,即不会有任意点可以被加入到当前的子图中,并且满足特征(1.1),特征(1.2)和特征(1.3)。
51.2.针对平衡社区模型,本发明利用签名网络的独特性质,提出了一种极大平衡社区搜索算法,并在此的基础上,设计了优化策略,从而进一步提高搜索效率。基于签名网络的平衡社区的特征,极大平衡社区存在以下重要引理:
52.引理(2.1),给定一个签名网络,和一个平衡社区,如果一个点与平衡社区里的每个点都有边相连,同时与平衡社区的一个单边子图相连的边都为正边,与另一个单边子图的边都为负边,那么这个点可以被加入到当前的平衡社区里来,形成一个更大的平衡社区。
53.基于签名网络的平衡社区的重要引理,本发明提出了极大平衡社区搜索算法,主要包括以下步骤:
54.步骤(1),给定一个签名网络,选定每一个点作为平衡社区的初始点,该点的邻居为候选集;
55.步骤(2),每次从候选集中挑选点,加入到当前的平衡社区中,如果一个点被搜索过了,就把它从候选集中移除,并且标记已搜索,重复步骤(2),直到候选集为空;
56.步骤(3),判断搜索到的平衡社区是否合理,判断条件如下:
57.判断条件(3.1),是否存在一个已经被搜索过的点,使得该点可以被加入到当前的平衡社区中,若有,则当前的平衡社区已经被搜索过,不是极大的;
58.判断条件(3.2),当前平衡社区的两个子图的点数是否都大于阈值。
59.为了进一步提高上述极大平衡社区搜索算法的效率,本发明提出了以下引理:
60.引理(2.2),如果当前平衡社区的单边点数和单边候选集点数之和小于阈值,则当前搜索分支无效。
61.引理(2.3),如果存在已经搜索过的点,该点与当前平衡社区的点和候选集均有有效边相连,则当前搜索分支无效。
62.引理(2.4),如果当前平衡社区与候选集可以组成一个极大平衡社区,则直接终止搜索。
63.引理(2.5),如果一个点的正向度数小于阈值-1,或者负向度数小于阈值,则这个点不会出现在任何一个平衡社区中。
64.本发明中,在搜索极大平衡社区的过程中,基于这4个引理,很多不必要的搜索将被避免,从而提高了搜索效率。
65.3.针对搜索算法,本发明提出了利用多核cpu的并行算法。每个点搜索它所在的平衡社区的过程是相互独立的,所以可以利用多核cpu来进行并行运算,为每个点创建一个单独的线程,使得多个点可以同时搜索它们所在的平衡社区。
66.4.在有限的内存条件下,面对超大规模图数据,本发明提出了基于外部存储的搜索算法。每个点的搜索范围是它的邻居构成的子图(邻域),所以,面对内存无法容纳整个图数据时,可以只把一些点和它们的邻居子图加载到内存,来减少内存占用。这样可能会出现同一个平衡社区被多次搜索的问题,本发明的解决方案是给每个点排序,对于当前社区,只有搜索该社区中排序最低的点时,输出该社区。
67.5.针对动态图,本发明提出了通过增量计算对现有结果进行实时维护和更新的算法。基于极大平衡社区的特征,当签名网络发生动态改变时,算法可以快速计算出发生变化的极大平衡社区。签名网络的动态变化主要分为以下几种情况:情况(5.1),增加一条边;情况(5.2),删除一条边;情况(5.3),增加多条边;情况(5.4),删除多条边;
68.针对情况(5.1)增加一条边时,当签名网络增加一条边时,两个现有的平衡社区可能会生成一个新的平衡社区,同时,新的平衡社区可能会覆盖旧的平衡社区,可得到引理如下:
69.引理(5.1.1),增加一条边e=(u,v),则包含边e的平衡社区一定是之前分别包含u和v 的平衡社区的交集加上e;
70.引理(5.1.2),增加一条边e=(u,v),如果包含边e的平衡社区是之前包含u的平衡
社区加上v,那么包含u的平衡社区应该被移除。
71.针对情况(5.2)删除一条边时,可得引理如下:
72.引理(5.2.1),删除一条边e=(u,v),则增加的平衡社区对应情况(5.1)时删除的平衡社区,删除的平衡社区则为包含e边的所有平衡社区。
73.针对情况(5.3)增加多条边时,当签名网络增加多条边时,多条边可能会合并生成一个新的平衡社区,同时,新的平衡社区可能会覆盖多个旧的平衡社区,并且引理(5.1)和引理(5.2) 不再适用。搜索新的平衡社区步骤如下:
74.步骤(5.3.1),给定一个签名网络,和若干新增边,选定每一条新增边作为平衡社区的初始边,该边的公共邻居为候选集;
75.步骤(5.3.2),每次从候选集中挑选点,如果该点不会引入一条已经搜索过的新增边,就把该点加入到当前的平衡社区中,并且标记已搜索,重复步骤(5.2),直到候选集为空;
76.步骤(5.3.3),判断搜索到的平衡社区是否合理。
77.针对情况(5.4)删除多条边时,可得引理如下:
78.引理(5.4.1),删除多条边,则增加的平衡社区和删除的平衡社区分别为情况(5.2)时删除的平衡社区和增加的平衡社区。
79.基于引理(5.4.1),当删掉多条边时,可直接调用增加多条边时的增量计算算法,新增(或移除)的社区对应此时应该删掉(或新增)的社区。
80.1.模型设计
81.在本发明中,对于一个无向无权的签名网络g=(v,e

,e-),其中v表示顶点集,e

表示正边,e-表示负边,连接g中的顶点。本发明分别用n和m表示顶点的数目和边数,即n=|v| 和m=|e

| |e-|,对于每个顶点v∈g,设表示v的正邻居,即表示v的正邻居,即让代表v的负邻居,即本发明使用和来表示v的正向度数和负向度数,即和本发明还用ng(v)和dg(v)表示v的邻居和度数,即和和为了简单起见,在下文中本发明省略符号中的g。
82.定义1.1平衡网络给定一个签名网络g=(v,e

,e-),当它可以分成两个子图g
l
和gr,或u,v∈gr,或u∈g
l
,v∈gr。
83.定义1.2极大平衡社区给定一个签名网络g=(v,e

,e-),极大平衡社区c是满足以下约束的g的极大子图:
84.·
稠密性:c是稠密的,即
85.·
平衡性:c是平衡的,也就是说,它可以分成两个子图cr和c
l
,或u,v∈cr,和或u∈c
l
,v∈cr。
86.在本发明中,本发明的目的是在给定的签名网络中列出所有的极大平衡社区。由于许多实际应用要求c
l
和cr中的顶点数不小于一个固定的阈值k,本发明添加了一个大小约
束,也就是说,|c
l
|≥k和|c
l
|≥k,用户可以根据自己的具体需求控制返回的极大平衡社区的大小。在本发明中,给定一个签名网络g和阈值k的情况下,极大平衡社区搜索算法可以计算出g中的所有极大平衡社区c,使之满足|c
l
|≥k和|c
l
|≥k,同时支持动态更新。
87.实施例:如图2所示,这是一个签名网络,根据极大平衡社区的定义,当阈值等于2时,该网络中存在四个极大平衡社区,分别是c1={{v0,v1,v3},{v5,v6,v7}},c2= {{v0,v1,v2,v3},{v5,v6}},c3={{v0,v1},{v5,v6,v8}},c4={{v0,v
14
},{v
13
,v
15
}}。
88.2.极大平衡社区搜索算法
89.2.1极大平衡社区搜索算法基本框架
90.本发明针对签名网络的特殊性质,设计了一个新的搜索算法。最主要的思路来源于以下引理:
91.引理2.1给定一个签名网络,和一个平衡社区,如果一个点与平衡社区里的每个点都有边相连,同时与平衡社区的一个单边子图相连的边都为正边,与另一个单边子图的边都为负边,那么这个点可以被加入到当前的平衡社区里来,形成一个更大的平衡社区。
92.基于上述思想,在本发明提出极大平衡社区搜索算法,如算法1所示。对于g中的每一个顶点vi,本发明列举了所有包含vi的极大平衡社区,用c
l
和cr来表示平衡社区。本发明通过vi的高阶邻居来初始化候选集p
l
和pr,p
l
是vi的正向高阶邻居,pr是vi的负向高阶邻居,除此之外,本发明还使用已选集来记录已经处理过的顶点,以避免输出重复的极大平衡社区。在初始化这些集合之后,本发明调用局部搜索子算法来搜索包含vi的所有极大平衡社区。
93.局部搜索子算法是基于给定的候选集和已选集来搜索极大平衡社区。如果候选集和已选集都为空,那意味着当前的平衡社区已经是极大平衡社区而不能被扩大,算法需要确定当前社区是否满足阈值大小约束,如果满足,则输出当前极大平衡社区到结果集。否则,算法会从候选集中加一个顶点v到当前社区,v被交替加入到c
l
或cr中,同时更新相应的候选集和已选集,并递归地调用自身来进一步扩大平衡社区。当处理完v时,将v从候选集移到已选集中。
94.算法1极大平衡社区搜索算法
95.[0096][0097]
实施例:极大平衡社区搜索算法的搜索过程可以用一个搜索树来表示。图3显示了针对图2 中的平衡网络g,通过算法1对g执行搜索时的搜索树的一部分。s1,s2,...表示搜索过程中不同的搜索状态。在s1状态时,本发明假设有一个平衡社区c={c
l
={v0,v1},cr={v5,v6}},p
l
= {v2,v3}和pr={v7,v8}。本发明首先通过将v2从p
l
添加到c
l
来扩展搜索分支。由于v7和v8不是 v2的负邻居,因此它们在s2处时从pr中被移除。又因为在s2处pr为空,本发明通过添加来自p
l
的v3来继续扩充c
l
。在s3状态下,p
l
,pr,q
l
和qr为空时,本发明得到了一个极大平衡社区 c2={{v0,v1,v2,v3},{v5,v6}},并且这个从v2开始的搜索分支结束。本发明返回到状态s1,v2被移到q
l
,然后,本发明在s4处将v3加到c
l
中,在s5处将v7加到cr中,得到c1={{0,1,3},{5,6,7}}。该搜索以类似的方法持续进行,直到遍历完s1状态下p
l
和pr中的所有顶点。
[0098]
2.2极大平衡社区搜索优化算法
[0099]
在本发明中,本发明提出了两个优化策略来进一步提高搜索的效率。它们分别是:中心点选择,提前终止。
[0100]
中心点选择。考虑算法1的极大平衡社区搜索过程,假设本发明当前有c
l
,cr,p
l
,pr,本发明从p
l
往c
l
添加一个顶点v。从v开始搜索完成后,不需要进一步探索v的邻居。理由是,所有 v所在的社区都可以通过v来找到,那些不包含v的社区一定可以通过v的非邻居找到。提前终止。在本发明中,考虑了可以提前终止搜索的不同条件。对于当前平衡社区c={c
l
,cr},最终极大平衡社区的c
l
(或cr)的最大可能大小为|c
l
| |p
l
|(或|cr| |pr|)。基于阈值k的大小约束,如果|c
l
| |p
l
|<k或者|cr| |pr|<k,本发明可以直接终止当前搜索。
[0101]
在本发明中中,使用q
l
和qr来存储可以被加入当前平衡社区的顶点。因此,在搜索
过程中,如果且以及qr同理,那么本发明可以得出结论,这个极大平衡社区已经被列举出来,本发明可以直接终止当前搜索。
[0102]
在本发明中,如果p
l
和pr中的所有顶点可以分别组成一个正向社区,并且p
l
中的每个顶点对pr中的所有顶点都有负边,那么p
l
和pr构成一个平衡社区。根据定义,c
l
∪p
l
和cr∪pr可以组成一个极大平衡社区。本发明可以输出c={c
l
∪p
l
,cr∪pr},并直接中断现有的搜索。
[0103]
算法2极大平衡社区搜索优化算法
[0104][0105]
实施例:针对图2的平衡网络,图4为使用了中心点后的搜索树。在状态s1时,针对当前的平衡社区,v3被选为中心点,因为当前候选集中,只有v8不是v3的邻居,新的候选集为{v3,v8}。在s2时,v3被加入到当前社区中,此时v2被选为中心点,s3和s4分别通过加入v7和v2得到两个极大平衡社区,从v3开始的搜索分支结束。此时回退到s1,通过添加v8,得到最后一个极大平衡社区。相比较于算法1的搜索树,如图3所示,运用了中心点后的搜索树搜索分支
大大减少,避免了无效的计算。
[0106]
2.3基于并行的极大平衡社区搜索算法
[0107]
由于配备多核cpu的计算环境越来越普遍,在本发明中,为了进一步加快极大平衡社区搜索算法的效率,使之可以处理更大的签名网络,本发明提出了基于并行的极大平衡社区搜索算法,使得搜索算法可以在多核cpu的环境下高效运行。算法2可以很容易地扩展到并行运行。在算法2中,本发明在第1行(算法1的第1行)中从每个顶点及其邻居中探索极大平衡社区。由于不同顶点的搜索是完全独立的,对于每个点vi,本发明创建了一个新的线程来搜索与vi相关的极大平衡社区。当所有的线程终止时,所有极大的平衡社区都将被搜索。在本发明中,基于并行的极大平衡社区搜索算法使用了openmp。openmp是一套支持跨平台共享内存方式的多线程并发的编程api。由于不同点的邻域范围分布不均衡,线程间可能会出现计算量负载不均衡的现象,为了尽可能地均衡各线程的计算量,本发明采用动态申请线程的方式,每个点会被随机分配到线程。对于线程间公共数据的修改,如结果集,本发明使用原子操作来实现异步访问和修改,来保证数据的一致性。由于基于并行的极大平衡社区搜索算法是在算法2的基础上进行改动,变化范围不大,伪代码在此省略。
[0108]
2.4基于外存的极大平衡社区搜索算法
[0109]
现实世界中,随着图数据规模的不断变大,有可能会出现内存无法容纳整个图数据的情况。因此,在本发明中,当签名网络g存储在磁盘上时,基于外存的极大平衡社区搜索算法的目标是以尽可能少的i/0来搜索极大平衡社区。
[0110]
设si为g中的一组顶点,对于si,si中的顶点及其邻居所组成的子图,记为g’i
。由于极大平衡社区的直径为1,对于si,本发明可以保证在si中的每个点所在的极大平衡社区都包含在g’i
中,这意味着本发明可以在g’i
的基础上局部地列举与si有关的所有极大平衡社区,因此,本发明首先将g的顶点划分成若干集s1,s2,

,s
t
,使si对应的g’i
可以被加载在内存中,1≤i≤t。然后,在本发明中,对于每个子图g’i
,用本发明提出的基于内存的极大平衡社区算法来搜索g’i
中的极大平衡社区。唯一剩下的问题是,如果某些极大平衡社区包含来自不同集合的顶点,则可能会多次输出。为了避免这个问题,当在g’i
中搜索时,如果c包含一个顶点v∈sj,其中j<i,则c不会输出。由于本发明可以通过扫描磁盘上的g来获得g’i
,因此基于外存的极大平衡社区搜索算法的i/o复杂度为其中t是分区数,b是磁盘块的大小。
[0111]
3.基于动态图的极大平衡社区增量搜索算法
[0112]
在现实应用中,随着各种节点之间的交互作用,签名网络不可能一成不变,随时可能发生加边减边,在本发明中,本发明基于之前通过极大平衡社区搜索算法得到的结果集,提出了增量算法。增量算法分为加边增量算法和减边增量算法,其中加边增量算法又分为加单边增量算法和加多边增量算法,分别对应加一条边和加多条边的情况。减边增量算法可由加边增量算法逆推得出,因此,在本发明中,着重介绍加边增量算法。
[0113]
3.1加单边增量算法
[0114]
在本发明中,本发明首先考虑加一条边的情况,核心思想由下面两条引理得出:
[0115]
引理3.1.1增加一条边e=(u,v),则包含边e的平衡社区一定是之前分别包含u和v的平衡社区的交集加上e。
[0116]
引理3.1.2增加一条边e=(u,v),如果包含边e的平衡社区是之前包含u的平衡社区加上 v,那么包含u的平衡社区应该被移除。
[0117]
根据上面两个引理,本发明提出了加单边增量算法。针对新增边e=(u,v),本算法创建了变量当前社区父id,用来记录当前社区由哪些原始社区得来,社区父id初始化为u所在的社区id和v所在社区id的并集。在本发明中,本发明为社区父id相同的点集创建一个超点。不同于之前的搜索算法,本发明提出的加单边增量算法不再通过加点来扩大当前社区,而是通过加超点来扩大当前社区。当一个超点被选中时,它代表的点集被加入到当前社区,新的超点集将移除与当前超点没有id交集的超点,当前社区父id与s的交集成为新的当前社区父id。当超点集和已选集为空时,本发明得到一个新的极大平衡社区。同时,利用当前社区父id,判断父id是否被当前社区覆盖,如果是,则移除父id代表的老社区。
[0118]
算法3加单边增量算法
[0119][0120][0121]
3.2加多边增量算法
[0122]
现在考虑增加多条边的情况,由于增加多条边时,新产生的极大平衡社区与旧的社区不再存在继承关系,一个新的平衡社区可能由多个互不相关的老社区组合而来。所以引理3.1.1 和引理3.1.2不再适用。本发明提出的加多边增量算法延续了极大平衡社区搜索算法的风格,通过加点来不断扩展当前新的社区。同时,当一个新的社区中存在多于一条新边时,为了避免重复计算,搜索完一条新边时,记为已搜索状态,在后续的搜索中,如果增加一点会引入这条已搜索边,则该点直接被移入已选集,以此保证每种新边组合只会被搜索一次。对于需要删除的老的极大平衡社区,由于当前社区的父id无法追踪,所以需要遍历出当前社区包含的所有局部老社区,并且判断局部老社区是否是极大的,如果是,则把该老社区移除。
[0123]
算法4加多边增量算法
[0124][0125][0126]
在加多边增量算法中,由于加点拓展的速度相对较慢,并且在移除老社区的过程中,需要遍历可能的存在的社区,并且需要判断极大性,这些都需要耗费一定的时间,所以本发明启发式地采用单边增量算法和多边增量算法相结合的方式,如果一条新边所在的邻域不存在另一条新边,则这条新边一定不会存在在一个新的极大平衡社区里,同时这个社区包含多条新边。对于这样的新边,本发明用加单边增量算法来计算它所带来的社区变化。其他的边则是采用加多边增量算法进行批量计算。
[0127]
为了清楚、客观地描述本发明的技术创新点带来的发明效果,本发明从系统的高效性和可拓展性两方面来反映。实验对象为极大平衡社区搜索算法(“搜索算法”)和极大平衡社区搜索优化算法(“优化搜索算法”)。实验数据为五个真实的签名网络,具体数据细节如图7所示。设置最长可接受运行时间为12小时,记为“inf”。
[0128]
首先,在高效性实验中,本发明测试了两种算法在不同数据集上针对不同阈值的运行时间,结果如图5所示。在所有的数据集上,针对所有阈值,优化搜索算法的运行时间都比搜索算法短,直接验证了本发明提出的优化策略的有效性,这是因为本发明的优化策略结合阈值限制和签名网络的特性,避免了大量的不必要搜索计算。其次,在任意数据集上,当阈值从小变大时,搜索算法和优化搜索算法的运行时间都呈现出下降趋势,这是因为随着阈值的增加,更多的点和边将被本发明提出的剪枝策略剪去,从而大大减少了搜索空间,提升搜索效率。
[0129]
然后,在可拓展性实验中,本发明在两个大的数据集dblp和douban上测试搜索算法和优化搜索算法的可拓展性,通过随机挑选图上的顶点,使图的规模逐渐扩大。随机挑选概率为20%-100%。图6显示了实验结果。如图6所示,当点的数量增加时,两种算法的运行时间也会增加,但优化搜索算法在两个数据集中的所有情况下都优于搜索算法。例如,在dblp上,当本发明采样20%的顶点时,搜索算法和优化搜索算法的运行时间分别为0.6秒和0.5秒,而在80%的顶点采样时,它们的运行时间分别为770.6秒和4.0秒。实践表明,优化搜索算法具有更为良好的可扩展性。
[0130]
从上述实验结果来看,基于优化策略的搜索算法无论在高效性还是可拓展性都有着良好的性能。
[0131]
本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献