网络社区的发现方法及装置与流程

文档序号:12131534阅读:208来源:国知局
网络社区的发现方法及装置与流程

本发明涉及网络社区发现技术领域,特别是涉及一种网络社区的发现方法及装置。



背景技术:

在现实生活中,与周围人交流是个人的主要行为,人与人之间总是通过某种关系相互连接形成一个社会网络,也称为社交网络社区。实际的社交网络社区往往具有的网络拓扑结构:每个网络社区内部节点之间的连接相对较为紧密,各个网络社区之间的连接相对较为稀疏。

网络社区发现技术在社交网络分析和数据挖掘中是一种非常重要的技术。对于研究大规模的复杂网络,探寻并发现该网络中潜在的网络社区,具有很重要的研究意义。该技术的应用非常广泛,主要涉及的领域有:社会网络分析领域、数据挖掘领域、机器学习领域、统计学领域、空间(图)数据库技术领域、生物学和市场学等领域。

现有技术中,大多数的网络社区发现算法都是针对静态网络,即网络中的节点以及节点之间的连接关系是一成不变的。然而,在实际应用中,网络是动态变化的。这些变化的不断积累造成整个网络社区结构的变化,如新网络社区的产生、旧网络社区的消失、网络社区的合并或分裂、网络社区规模的变大或变小等。针对网络的快速且不可预测的变化性,使得对动态网络中的网络社区的检测和发现面临着巨大的挑战。



技术实现要素:

本发明主要解决的技术问题是提供一种网络社区的发现方法及装置,能够有效辨别和监测当前时刻下动态网络中网络社区结构的变化,并对当前时刻下的网络社区结构进行更新。

为解决上述技术问题,本发明采用的一个技术方案是:提供一种网络社区的发现方法,包括:在时间段T内以预定周期检测时刻t0的网络结构G0的拓扑变化ΔG0;基于所述网络结构G0和所述拓扑变化ΔG0,形成在时刻t0+T的网络结构GT的网络社区集合C(GT)。

其中,所述在时间段T内以预定周期检测时刻t0的网络结构G0的拓扑变化ΔG0之前,还包括:在所述时刻t0基于所述网络结构G0,形成网络社区集合C(G0),其中,G0=(V0,E0),C(G0)=(C1(G0),C2(G0),......,Ck(G0)),所述V0为所述时刻t0的节点集合,所述E0为所述时刻t0的边的集合,Ci(G0)为所述网络社区集合C(G0)中任意一个网络社区,所述i的数值是从1至k,所述k为所述网络结构G0形成的不重叠的网络社区的数量;所述基于所述网络结构G0和所述拓扑变化ΔG0,形成在所述时刻t0+T的网络结构GT的网络社区集合C(GT),包括:对所述网络社区Ci(G0)执行增加ΔV0中增加的所有节点、删除ΔV0中减少的所有节点、增加ΔE0中增加的所有边以及删除ΔE0中减少的所有边四个过程中的至少一个过程,其中,ΔG0=(ΔV0,ΔE0),所述ΔV0为所述时间段T内节点的变化集合,所述ΔE0为所述时间段T内边的变化集合;根据执行的所述至少一个过程的结果,形成在所述时刻t0+T的网络结构GT的网络社区集合C(GT),其中,GT=(VT,ET),C(GT)=(C1(GT),C2(GT),......,Cm(GT)),GT=G0∪ΔG0,所述VT为所述时刻t0+T的节点集合,所述ET为所述时刻t0+T的边的集合,Ci(GT)为所述网络社区集合C(GT)中任意一个网络社区,所述i的数值是从1至m,所述m为网络结构GT形成的不重叠的网络社区的数量。

其中,所述对网络社区Ci(G0)执行增加ΔV0中增加的所有节点的过程,包括:将所述ΔV0中增加的节点u增加到所述网络社区Ci(G0)中,所述u为所述ΔV0中增加的所有节点中的任意一个;所述根据执行的所述至少一个过程的结果,形成在所述时刻t0+T的网络结构GT的网络社区集合C(GT),包括:当所述节点u增加到所述网络社区Ci(G0)后,若所述网络社区Ci(G0)内的边、连接到所述网络社区集合C(G0)中其他网络社区的边均没有增加,则所述Ci(GT)中节点的数量为所述Ci(G0)中节点的数量;当 所述节点u增加到所述网络社区Ci(G0)后,且若所述网络社区Ci(G0)连接到所述网络社区集合C(G0)中其他网络社区中的至少一个的边同步增加,则当引力度BDin(u,Ci(GT))大于或等于引力度BDout(u,Ci(GT))时,将所述节点u增加到所述Ci(G0)中,以形成所述Ci(GT),当所述BDin(u,Ci(GT))小于所述BDout(u,Ci(GT))时,将所述节点u增加到所述网络社区集合C(G0)中其他网络社区,且所述Ci(GT)中节点的数量为所述Ci(G0)中节点的数量,其中,所述引力度BDin(u,Ci(GT))表示所述网络社区Ci(GT)中除所述节点u之外的所有节点对所述节点u的引力大小,所述引力度BDout(u,Ci(GT))表示除所述网络社区Ci(GT)之外的所述网络社区集合C(G0)中其他网络社区的所有节点对所述节点u的引力大小;当所述ΔV0中增加的所有节点的数量为一个以上时,返回所述将所述ΔV0中增加的节点u增加到所述网络社区Ci(G0)中的步骤,直到ΔV0中增加的所有节点分别增加到网络社区Ci(G0)中,否则,结束所述对网络社区Ci(G0)执行增加ΔV0中增加的所有节点的过程。

其中,所述引力度BDin(u,Ci(GT))和所述引力度BDout(u,Ci(GT))的大小分别:

其中,所述表示在所述时刻t0+T下,与所述节点u连接的所有边之和,所述表示所述节点u与所述Ci(GT)中所有节点可能连接的所有边之和,所述表示所述节点u与所述网络社区集合C(G0)中其他网络社区的所有节点可能连接的所有边之和。

其中,所述对网络社区Ci(G0)执行删除ΔV0中减少的所有节点的过程,包括:在所述网络社区Ci(G0)中删除所述ΔV0中减少的节点v,所述v为所述ΔV0中减少的所有节点中的任意一个;所述根据执行的所述至少一个过程的结果,形成在所述时刻t0+T的网络结构GT的网络社区集合 C(GT),包括:当所述节点v为单孤立节点,若从所述网络社区Ci(G0)删除所述节点v后对所述网络结构G0没有产生变化,则所述Ci(GT)中节点的数量为所述Ci(G0)中节点的数量;当所述节点v从所述网络社区Ci(G0)删除后,若与所述节点v连接的边同步删除,则按照对网络社区执行增加节点的方法,更新与所述节点v连接的邻居节点的所属网络社区,并进而形成网络社区集合C(GT);当所述ΔV0中减少的所有节点的数量为一个以上时,返回所述在所述网络社区Ci(G0)中删除所述ΔV0中减少的节点v的步骤,直到在网络社区Ci(G0)中分别删除ΔV0中减少的所有节点,否则,结束所述对网络社区Ci(G0)执行删除ΔV0中减少的所有节点的过程。

其中,所述更新与所述节点u连接的邻居节点的所属网络社区之后,还包括:当更新与所述节点v连接的邻居节点的所属网络社区之后,所述节点v的邻居节点的邻居节点产生网络社区的变化时,则按照对网络社区执行增加节点的方法,更新与所述节点v连接的邻居节点的邻居节点的所属网络社区,直至所述G0中所有节点的所属网络社区不再发生变化。

其中,所述对网络社区Ci(G0)执行增加ΔE0中增加的所有边的过程,包括:将所述ΔE0中增加的边(x,y)增加到所述网络社区Ci(G0)中,所述边(x,y)为所述ΔE0中增加的所有边中的任意一个,所述x,y分别表示所述边(x,y)的两个节点;所述根据执行的所述至少一个过程的结果,形成在所述时刻t0+T的网络结构GT的网络社区集合C(GT),包括:当所述节点x,y属于同一个网络社区时,则所述Ci(GT)中节点的数量为所述Ci(G0)中节点的数量;当所述节点x,y分别属于不同的网络社区时,则按照对网络社区执行增加节点的方法,分别更新所述节点x,y、与所述节点x,y连接的邻居节点的所属网络社区,并进而形成所述网络社区集合C(GT);当所述ΔE0中增加的所有边的数量为一个以上时,返回所述将所述ΔE0中增加的边(x,y)增加到所述网络社区Ci(G0)中的步骤,直到ΔE0中增加的所有边分别增加到网络社区Ci(G0)中,否则,结束所述对网络社区Ci(G0)执行增加ΔE0中增加的所有边的过程。

其中,所述对网络社区Ci(G0)执行删除ΔE0中减少的所有边的过程,包括:在所述网络社区Ci(G0)中删除所述ΔE0中减少的边(a,b),所述边(a,b)为所述ΔE0中减少的所有边中的任意一个,所述a,b分别表示所述边(a,b)的两个节点;所述根据执行的所述至少一个过程的结果,形成在所述时刻t0+T的网络结构GT的网络社区集合C(GT),包括:当所述节点a,b分别属于不同的网络社区时,则所述Ci(GT)中节点的数量为所述Ci(G0)中节点的数量;当所述节点a,b属于同一个网络社区时,则按照对网络社区执行增加节点的方法,分别更新所述节点x,y、与所述节点x,y连接的邻居节点的所属网络社区,并进而形成所述网络社区集合C(GT);当所述ΔE0中减少的所有边的数量为一个以上时,返回所述在所述网络社区Ci(G0)中删除所述ΔE0中减少的边(a,b)的步骤,直到在网络社区Ci(G0)中分别删除ΔE0中减少的所有边,否则,结束所述对网络社区Ci(G0)执行删除ΔE0中减少的所有边的过程。

为解决上述技术问题,本发明采用的另一个技术方案是:提供一种网络社区的发现装置,所述装置包括:检测模块,用于在时间段T内以预定周期检测时刻t0的网络结构G0的拓扑变化ΔG0;第一形成模块,用于基于所述网络结构G0和所述拓扑变化ΔG0,形成在时刻t0+T的网络结构GT的网络社区集合C(GT)。

其中,所述装置还包括:第二形成模块,用于在所述时刻t0基于所述网络结构G0,形成网络社区集合C(G0),其中,G0=(V0,E0),C(G0)=(C1(G0),C2(G0),......,Ck(G0)),所述V0为所述时刻t0的节点集合,所述E0为所述时刻t0的边的集合,Ci(G0)为所述网络社区集合C(G0)中任意一个网络社区,所述i的数值是从1至k,所述k为所述网络结构G0形成的不重叠的网络社区的数量;所述第一形成模块包括:执行单元,用于对所述网络社区Ci(G0)执行增加ΔV0中增加的所有节点、删除ΔV0中减少的所有节点、增加ΔE0中增加的所有边以及删除ΔE0中减少的所有边四个过程中的至少一个过程,其中,ΔG0=(ΔV0,ΔE0),所述ΔV0为所述时间段T内节点的变化集合,所述ΔE0为所述时间段T内边的变化集合;形成单元, 用于根据执行的所述至少一个过程的结果,形成在所述时刻t0+T的网络结构GT的网络社区集合C(GT),其中,GT=(VT,ET),C(GT)=(C1(GT),C2(GT),......,Cm(GT)),GT=G0∪ΔG0,所述VT为所述时刻t0+T的节点集合,所述ET为所述时刻t0+T的边的集合,Ci(GT)为所述网络社区集合C(GT)中任意一个网络社区,所述i的数值是从1至m,所述m为网络结构GT形成的不重叠的网络社区的数量。

其中,所述执行单元具体用于将所述ΔV0中增加的节点u增加到所述网络社区Ci(G0)中,所述u为所述ΔV0中增加的所有节点中的任意一个;所述形成单元具体用于当所述节点u增加到所述网络社区Ci(G0)后,若所述网络社区Ci(G0)内的边、连接到所述网络社区集合C(G0)中其他网络社区的边均没有增加,则所述Ci(GT)中节点的数量为所述Ci(G0)中节点的数量;当所述节点u增加到所述网络社区Ci(G0)后,且若所述网络社区Ci(G0)连接到所述网络社区集合C(G0)中其他网络社区中的至少一个的边同步增加,则当引力度BDin(u,Ci(GT))大于或等于引力度BDout(u,Ci(GT))时,将所述节点u增加到所述Ci(G0)中,以形成所述Ci(GT),当所述BDin(u,Ci(GT))小于所述BDout(u,Ci(GT))时,将所述节点u增加到所述网络社区集合C(G0)中其他网络社区,且所述Ci(GT)中节点的数量为所述Ci(G0)中节点的数量,其中,所述引力度BDin(u,Ci(GT))表示所述网络社区Ci(GT)中除所述节点u之外的所有节点对所述节点u的引力大小,所述引力度BDout(u,Ci(GT))表示除所述网络社区Ci(GT)之外的所述网络社区集合C(G0)中其他网络社区的所有节点对所述节点u的引力大小;当所述ΔV0中增加的所有节点的数量为一个以上时,返回所述执行单元,直到ΔV0中增加的所有节点分别增加到网络社区Ci(G0)中,否则,结束所述执行单元的操作。

其中,所述引力度BDin(u,Ci(GT))和所述引力度BDout(u,Ci(GT))的大小分别为:

其中,所述表示在所述时刻t0+T下,与所述节点u连接的所有边之和,所述表示所述节点u与所述Ci(GT)中所有节点可能连接的所有边之和,所述表示所述节点u与所述网络社区集合C(G0)中其他网络社区的所有节点可能连接的所有边之和。

其中,所述执行单元具体用于在所述网络社区Ci(G0)中删除所述ΔV0中减少的节点v,所述v为所述ΔV0中减少的所有节点中的任意一个;所述形成单元具体用于当所述节点v为单孤立节点,若从所述网络社区Ci(G0)删除所述节点v后对所述网络结构G0没有产生变化,则所述Ci(GT)中节点的数量为所述Ci(G0)中节点的数量;当所述节点v从所述网络社区Ci(G0)删除后,若与所述节点v连接的边同步删除,则按照对网络社区执行增加节点的方法,更新与所述节点v连接的邻居节点的所属网络社区,并进而形成网络社区集合C(GT);当所述ΔV0中减少的所有节点的数量为一个以上时,返回所述执行单元,直到在网络社区Ci(G0)中分别删除ΔV0中减少的所有节点,否则,结束所述执行单元的操作。

其中,所述形成单元还用于当更新与所述节点v连接的邻居节点的所属网络社区之后,所述节点v的邻居节点的邻居节点产生网络社区的变化时,则按照对网络社区执行增加节点的方法,更新与所述节点v连接的邻居节点的邻居节点的所属网络社区,直至所述G0中所有节点的所属网络社区不再发生变化。

其中,所述执行单元具体用于将所述ΔE0中增加的边(x,y)增加到所述网络社区Ci(G0)中,所述边(x,y)为所述ΔE0中增加的所有边中的任意一个,所述x,y分别表示所述边(x,y)的两个节点;所述形成单元具体用于当所述节点x,y属于同一个网络社区时,则所述Ci(GT)中节点的数量为所述Ci(G0)中节点的数量;当所述节点x,y分别属于不同的网络社区时,则 按照对网络社区执行增加节点的方法,分别更新所述节点x,y、与所述节点x,y连接的邻居节点的所属网络社区,并进而形成所述网络社区集合C(GT);当所述ΔE0中增加的所有边的数量为一个以上时,返回所述执行单元,直到ΔE0中增加的所有边分别增加到网络社区Ci(G0)中,否则,结束所述执行单元的操作。

其中,所述执行单元具体用于在所述网络社区Ci(G0)中删除所述ΔE0中减少的边(a,b),所述边(a,b)为所述ΔE0中减少的所有边中的任意一个,所述a,b分别表示所述边(a,b)的两个节点;所述形成单元具体用于当所述节点a,b分别属于不同的网络社区时,则所述Ci(GT)中节点的数量为所述Ci(G0)中节点的数量;当所述节点a,b属于同一个网络社区时,则按照对网络社区执行增加节点的方法,分别更新所述节点x,y、与所述节点x,y连接的邻居节点的所属网络社区,并进而形成所述网络社区集合C(GT);当所述ΔE0中减少的所有边的数量为一个以上时,返回所述执行单元,直到在网络社区Ci(G0)中分别删除ΔE0中减少的所有边,否则,结束所述执行单元的操作。

本发明的有益效果是:区别于现有技术的情况,本发明通过检测前一时刻的网络结构的拓扑变化,在确定后一时刻网络结构的网络社区时,充分利用该拓扑变化,通过这种方式,能够有效辨别和监测当前时刻下动态网络中网络社区结构的变化,并对当前时刻下的网络社区结构进行更新。

附图说明

图1是某一时刻网络社区拓扑示意图;

图2是本发明网络社区的发现方法一实施方式的流程图;

图3是本发明网络社区的发现方法另一实施方式的流程图;

图4是本发明网络社区的发现装置一实施方式的结构示意图;

图5是本发明网络社区的发现装置另一实施方式的结构示意图。

具体实施方式

在介绍本发明之前,首先介绍一下与本发明相关的现有技术的情况。

随着移动互联网的广泛应用,社交网络已成为人们日常生活中不可缺少的信息交换工具。在社交网络中,网络社区是一种重要的结构。所谓网络社区是指社交网络中的节点被分为一些团组,团组成员(节点)之间具有较强的联系,而不同的团组之间的节点则具有稀疏的联系。

在大型复杂网络中进行网络社区发现(Community Detection)具有重要的实际意义。在社会网络中,网络社区信息显示了社区成员的兴趣、职业、地域、背景等特征,利用这些信息可以进行人物性格特征分析、就业推荐、好友推荐和精准广告营销。在引文网络中(如LinkedIn、DBLP),用户根据搜索主题词、作者信息、内容、单位等搜索文章,系统则可以按照用户的搜索词进行相关推荐,这些推荐的基础就是网络社区发现理论。在生物化学网络中,某一类型的功能单元可以看成网络社区,检测这些网络社区有助于理解网络的进化和发展,例如可以进行食物链和人类基因分析等。此外,网络社区发现还广泛应用于万维网、协同网络和通信网络分析。

网络社区发现技术在探查性分析和数据挖掘中是一种非常重要的技术,它的应用非常广泛。近些年来,网络社区结构发现算法已经成为研究的热点。

现有技术中,大多数的网络社区发现算法都是针对静态网络,即网络中的节点以及节点之间的连接关系是一成不变的。然而,在实际应用中,网络是动态变化的。这些变化的不断积累造成整个网络社区结构的变化,如新网络社区的产生、旧网络社区的消失、网络社区的合并或分裂、网络社区规模的变大或变小等。针对网络的快速且不可预测的变化性,使得对动态网络中的网络社区的检测和发现面临着巨大的挑战。

本发明针对社交网络拓扑结构随时间变化的动态特性,建立一种自适应此情况的快速检测和识别网络社区结构的方法,该方法可以充分利用前一时刻的网络结构及前一时刻和后一时刻之间的网络变化,来对当前(后一时刻)的网络结构进行分析,从而确定当前网络结构中的网络 社区情况。通过这种方式,可以网络中网络社区的变化,例如:是否产生新网络社区、旧网络社区是否消失、是否产生网络社区的合并或分裂、网络社区规模是变大还是变小等等。

人们在研究复杂系统的时候,习惯于把复杂系统抽象为网络图来进行分析和研究,因此图成为复杂系统重要的描述工具,并被应用到社会、生物、基因、信息网络等诸多领域。一个网络图可表示为G=(V,E),其中,G代表这个网络的结构(即网络图),V代表这个网络图中的节点集合,E代表网络图中连接节点之间的边集合,一般用N=|V|表示网络图的节点总数,用M=|E|表示网络图的边数。复杂网络中的节点代表现实复杂系统中的实体或者元素,也可以代表虚拟网络社区中的虚拟个体,边则代表这些实体或者元素、或虚拟个体之间的相互关系。

网络图可以分为无向图、有向图、加权图以及异构图,在本发明一实施方式中,网络图采用无向无权图,当然也可以采用其他的图,例如有向有权图。无向是指边没有方向,无权是指两节点之间的连线没有长度,也就是说两个节点之间连接其距离就是1,不连接其距离是0。另外,与某个节点u存在边的那些节点均为该节点u的邻居接点;给定一个节点u,其邻居节点的个数称为该节点u的点度数,记为du。对于任何mK表示为节点子集K中所有节点之间存在边的总数,dK表示为节点子集K中所有节点的点度数之和,euK表示为节点u和节点子集K中所有节点可能存在的边数。

在网络结构G中,C=(C1,C2,......,Cl)表示当前网络中存在l个不重叠的网络社区。其中Ci∈C表示Ci为C其中的一个网络社区。具体示意图如图1所示。图1中,G=(12,14),网络存在4个网络社区,4个网络社区互不重叠,网络社区1包括4个节点5条边,网络社区2包括3个节点3条边,网络社区3包括3个节点2条边,网络节点4包括2个节点1条边,其中,网络社区1的节点4分别与网络社区2的节点6、网络社区3的节点10存在网络社区之间的连接,网络社区2的节点7与网络社区4的节点11存在网络社区之间的连接。从图1还可以看出,网络社区内部联系比较紧密,网络社区之间联系比较稀疏。

下面结合附图和实施方式对本发明进行详细说明。

参阅图2,图2是本发明网络社区的发现方法一实施方式的流程图,包括:

步骤S101:在时间段T内以预定周期检测时刻t0的网络结构G0的拓扑变化ΔG0

时间段T可以预先设计,根据实际应用的需要,时间段可以长,也可以短,例如:可以以小时为单位计算,或者以天为单位计算,或者以月为单位计算等等。对于网络结构变化很快的网络,时间段可以短一些,对于网络结构变化比较慢、相对稳定的网络,时间段可以长一些。

预定周期的设置根据时间段T的设置,例如,如果时间段是1小时,那么检测的周期可以是每20分钟,或者每30分钟等等。

时刻t0为前一某时刻,网络结构G0为前一时刻t0的网络结构,包括节点的总个数,边的总个数,网络社区的个数与结构等等。拓扑变化是指原来的网络结构中,节点的变化和边的变化,例如:增加了某些节点,减少了某些节点,增加了一些边,减少了一些边等等。

ΔG0=(ΔV0,ΔE0),ΔV0为从时刻t0到时刻t0+T的时间段T内节点的变化集合,ΔE0为从时刻t0到时刻t0+T的时间段T内边的变化集合。

后一某时间段内检测前一某时刻的网络结构的拓扑变化,从而可以检测网络结构的变化。

步骤S102:基于网络结构G0和拓扑变化ΔG0,形成在时刻t0+T的网络结构GT的网络社区集合C(GT)。

当检测到拓扑变化后,根据前一时刻t0的网络结构G0和从时刻t0到时刻t0+T的时间段T内拓扑变化ΔG0,通过现有技术中有关的网络社区发现算法即可形成在时刻t0+T的网络结构GT的网络社区集合C(GT)。例如,传统算法、谱分析算法、基于模块度的算法、动态算法、基于统计推断的方法等等。

本发明实施方式通过检测前一时刻的网络结构的拓扑变化,在确定后一时刻网络结构的网络社区时,充分利用该拓扑变化,通过这种方式,能够有效辨别和监测当前时刻下动态网络中网络社区结构的变化,并对 当前时刻下的网络社区结构进行更新。

其中,参见图3,步骤S101之前,还包括:

步骤S103:在时刻t0基于网络结构G0,形成网络社区集合C(G0),其中,G0=(V0,E0),C(G0)=(C1(G0),C2(G0),......,Ck(G0)),V0为时刻t0的节点集合,E0为时刻t0的边的集合,Ci(G0)为网络社区集合C(G0)中任意一个网络社区,i的数值是从1至k,k为网络结构G0形成的不重叠的网络社区的数量。

在前一时刻t0,首先基于网络结构G0,形成时刻t0网络社区集合C(G0),也就是说,基于前一时刻的网络结构,利用现有技术中有关的网络社区发现算法即可形成时刻t0网络社区集合C(G0)。通过这种方式,可以进行前后时刻下网络社区集合的比较,从而更进一步地确定网络社区变化的具体情况和细节,有利于预测网络社区变化的趋势。

模块度也称模块化度量值,是目前常用的一种衡量网络社区结构强度的方法。模块度值的大小主要取决于网络中节的社区分配,即网络的社区划分情况,可以用来定量的衡量网络社区划分质量,其值越接近1,表示网络划分出的社区结构的强度越强,也就是划分质量越好。因此可以通过最大化模块度Q来获得最优的网络社区划分。

本发明实施方式中,利用模块度最优调整算法来形成网络社区集合,可以划分出最优的网络社区。

具体来说,模块度Q的计算参考如下:

其中,C是当前网络中网络社区的总数目;c是当前网络中任一网络社区,mc是网络社区c中所有内部边的总数目,M是当前网络中边的总数目,d是网络社区c中所有节点的点度数之和。

c

此时,步骤S102具体包括:子步骤S1021和子步骤S1022。

子步骤S1021:对网络社区Ci(G0)执行增加ΔV0中增加的所有节点、删除ΔV0中减少的所有节点、增加ΔE0中增加的所有边以及删除ΔE0中减少的所有边四个过程中的至少一个过程,其中,ΔG0=(ΔV0,ΔE0),ΔV0为 时间段T内节点的变化集合,ΔE0为时间段T内边的变化集合。

子步骤S1022:根据执行的至少一个过程的结果,形成在时刻t0+T的网络结构GT的网络社区集合C(GT),其中,GT=(VT,ET),C(GT)=(C1(GT),C2(GT),......,Cm(GT)),GT=G0∪ΔG0,VT为时刻t0+T的节点集合,ET为时刻t0+T的边的集合,Ci(GT)为网络社区集合C(GT)中任意一个网络社区,i的数值是从1至m,m为网络结构GT形成的不重叠的网络社区的数量。

在本发明实施方式中,动态网络社区的检测发现是通过前一时刻G0中网络社区内部或网络社区间的节点变化以及对应边的变化而产生。因此,动态网络社区的检测发现可以通过前一时刻网络结构经历以下四种状态过渡形成,即:前一时刻网络结构变化产生的网络社区都是通过增加节点或删除节点,以及增加节点之间相连的边或删除节点之间相连的边(简称为DCDA算法)而产生后续时刻的网络社区,并确保产生网络社区的模块度Q最大化来完成对动态网络社区的发现。

在网络结构G0对应网络社区集合C(G0)中通过DCDA算法构造更新下一时刻的网络结构GT的网络社区集合C(GT)。四种过程分别具体定义如下(分别以一个节点和一条边为例进行说明):

(1)增加节点(C(G0),u):在网络结构G0对应网络社区集合C(G0)的每一个网络社区中分别执行增加一个节点u的操作。

(2)删除节点(C(G0),v):在网络结构G0对应网络社区集合C(G0)的每一个网络社区中分别执行删除一个节点u及其相连的边的操作。

(3)增加边(C(G0),e):在网络结构G0对应网络社区集合C(G0)的每一个网络社区中分别执行增加一条边e的操作。

(4)删除边(C(G0),f):在网络结构G0对应网络社区集合C(G0)的每一个网络社区中分别执行删除一条边f的操作。

上述过程可以简单表示为:

简单来说,从时刻t0到时刻t0+T,随着网络结构G0到网络结构GT的过渡,相应的网络社区通过DCDA算法从网络社区集合C(G0)更新为网络社区集合C(GT)。

ΔG0=(ΔV0,ΔE0),ΔV0为时间段T内节点的变化集合,ΔE0为时间段T内边的变化集合。节点的变化包括节点的增加和节点的减少,边的变化包括边的增加和边的减少。网络结构的拓扑变化可以是增加节点、减少节点、增加边以及减少边中的至少一种情况,而且增加的节点数目、减少的节点数目、增加的边数目以及减少的边数目可以是一个以上。当增加的节点数目、减少的节点数目、增加的边数目以及减少的边数目可以是一个以上时,分别重复上述的四种过程。

其中,子步骤S1021和子步骤S1022中,对网络社区Ci(G0)执行增加ΔV0中增加的所有节点的过程,根据执行的至少一个过程的结果,形成在时刻t0+T的网络结构GT的网络社区集合C(GT),具体包括:

(1)将ΔV0中增加的节点u增加到网络社区Ci(G0)中,u为ΔV0中增加的所有节点中的任意一个;

(2)当节点u增加到网络社区Ci(G0)后,若网络社区Ci(G0)内的边、连接到网络社区集合C(G0)中其他网络社区的边均没有增加,则Ci(GT)中节点的数量为Ci(G0)中节点的数量;

(3)当节点u增加到网络社区Ci(G0)后,且若网络社区Ci(G0)连接到网络社区集合C(G0)中其他网络社区中的至少一个的边同步增加,则当引力度BDin(u,Ci(GT))大于或等于引力度BDout(u,Ci(GT))时,将节点u增加到Ci(G0)中,以形成Ci(GT),当BDin(u,Ci(GT))小于BDout(u,Ci(GT))时,将节点u增加到网络社区集合C(G0)中其他网络社区,且Ci(GT)中节点的数量为Ci(G0)中节点的数量,其中,引力度BDin(u,Ci(GT))表示网络社区Ci(GT)中除节点u之外的所有节点对节点u的引力大小,引力度BDout(u,Ci(GT))表示除网络社区Ci(GT)之外的网络社区集合C(G0)中其他网络社区的所有节点对节点u的引力大小;

(4)当ΔV0中增加的所有节点的数量为一个以上时,返回上述的 (1),直到ΔV0中增加的所有节点分别增加到网络社区Ci(G0)中,否则,结束对网络社区Ci(G0)执行增加ΔV0中增加的所有节点的过程。

在网络中存在着很多不同的节点,节点彼此之间都存在一定的关系,如果两个节点中,分别与该两个节点连接的节点的数量相同或相近,通常认为这两个节点之间的引力较小,否则,认为与一个节点连接的其它节点的数量较大的节点对与另一节点连接的其它节点的数量较小的节点有很大的引力。依此类推,在某一网络中,某一网络社区1中所有节点对某一节点1的引力之和有一个数值1,而网络社区集合中除网络社区1之外的其它网络社区的所有节点对节点1的引力之和有另一个数值2,比较数值1和数值2的大小,如果数值1大于数值2,很显然网络社区1对节点1的引力大,节点1归属于网络社区1,如果数值1小于数值2,很显然网络社区1对节点1的引力小于其它网络社区对节点1的引力,节点1不归属于网络社区1,如果数值1等于数值2,网络社区1对节点1的引力等于其它网络社区对节点1的引力,但是,其它网络社区(其它网络社区的数量大于等于2)合在一起的引力才等于网络社区1的引力,总体来说,网络社区1对节点1的引力还是大于其它各个网络社区分别对节点1的引力,因此,节点1还是归属于网络社区1。

上述过程以一个具体的例子来详细说明,具体是:以图1的网络结构为例,增加的节点为节点A和节点B。

首先将节点A增加到网络社区1中,如果网络社区1内的边、连接到其它网络社区2、3、4的边均没有增加,说明节点A没有对网络社区1产生影响,节点A不应该增加到网络社区1中,网络社区1的节点数量还是维持不变。然后将节点A加入其它网络社区中,例如当节点A加入到网络社区3时,网络社区3与网络社区1、2、4中的至少一个连接的边同步增加,则当引力度BDin(A,Ci(GT))大于或等于引力度BDout(A,Ci(GT))时,将节点A增加到C3(G0)中,以形成C3(GT),并结束节点A增加到其它网络社区的过程,当BDin(A,Ci(GT))小于BDout(A,Ci(GT))时,将节点A增加到网络社区集合C(G0)中其他网络社区(相当于重复上面的过程,以便具体确定节点A加入的网络社区),说明节点A也不应增 加到网络社区3中,且C3(GT)中节点的数量为C3(G0)中节点的数量。

当节点A经过上述步骤,确定归属网络社区后,再对节点B同样执行上述过程,此处不再重复。

其中,引力度BDin(u,Ci(GT))和引力度BDout(u,Ci(GT))的大小分别为:

其中,表示在时刻t0+T下,与节点u连接的所有边之和,表示节点u与Ci(GT)中所有节点可能连接的所有边之和,表示节点u与网络社区集合C(G0)中其他网络社区的所有节点可能连接的所有边之和。

其中,子步骤S1021和子步骤S1022中,对网络社区Ci(G0)执行删除ΔV0中减少的所有节点的过程,根据执行的至少一个过程的结果,形成在时刻t0+T的网络结构GT的网络社区集合C(GT),具体包括:

(11)在网络社区Ci(G0)中删除ΔV0中减少的节点v,v为ΔV0中减少的所有节点中的任意一个;

(22)当节点v为单孤立节点,若从网络社区Ci(G0)删除节点v后对网络结构G0没有产生变化,则Ci(GT)中节点的数量为Ci(G0)中节点的数量;

单孤立节点是指与网络中其它节点只有唯一的一条边的连接关系的节点,当该节点删除时,导致该节点唯一的边也被删除。删除该节点对网络结构不产生影响,保持原有网络社区结构,并更新当前网络的规模。

(33)当节点v从网络社区Ci(G0)删除后,若与节点v连接的边同步删除,则按照对网络社区执行增加节点的方法,更新与节点v连接的邻居节点的所属网络社区,并进而形成网络社区集合C(GT);

以图1为例,如果与节点v连接的邻居节点为节点6(原来归属网络 社区2)和节点3(原来归属网络社区1),那么此时需要重新确定节点6和节点3的所属网络社区,具体方法可以按照上述的对网络社区执行增加节点的方法。

(44)当ΔV0中减少的所有节点的数量为一个以上时,返回上述的(11),直到在网络社区Ci(G0)中分别删除ΔV0中减少的所有节点,否则,结束对网络社区Ci(G0)执行删除ΔV0中减少的所有节点的过程。

其中,在上述的(33)中,更新与节点u连接的邻居节点的所属网络社区之后,还包括:

当更新与节点v连接的邻居节点的所属网络社区之后,节点v的邻居节点的邻居节点产生网络社区的变化时,则按照对网络社区执行增加节点的方法,更新与节点v连接的邻居节点的邻居节点的所属网络社区,直至G0中所有节点的所属网络社区不再发生变化。

例如,以图1为例,如果与节点v连接的邻居节点为节点6(原来归属网络社区2)和节点3(原来归属网络社区1),那么在按照上述的对网络社区执行增加节点的方法重新确定节点6和节点3的所属网络社区后,发现节点6归属的网络社区依然是网络社区2,但是节点3归属的网络社区却变为网络社区3,节点v的邻居节点3的邻居节点为节点1、4,此时需要按照对网络社区执行增加节点的方法,重新确定节点1、4的新的所属网络,直到该网络中所有节点的所属网络社区不再发生变化。

其中,子步骤S1021和子步骤S1022中,对网络社区Ci(G0)执行增加ΔE0中增加的所有边的过程,根据执行的至少一个过程的结果,形成在时刻t0+T的网络结构GT的网络社区集合C(GT),具体包括:

(12)将ΔE0中增加的边(x,y)增加到网络社区Ci(G0)中,边(x,y)为ΔE0中增加的所有边中的任意一个,x,y分别表示边(x,y)的两个节点;

(13)当节点x,y属于同一个网络社区时,则Ci(GT)中节点的数量为Ci(G0)中节点的数量;

当节点x,y属于同一个网络社区时,边的增加并没有对该网络社区的结构产生影响,反而增强了该网络社区内部结构的紧密性。

(14)当节点x,y分别属于不同的网络社区时,则按照对网络社区执行增加节点的方法,分别更新节点x,y、与节点x,y连接的邻居节点的所属网络社区,并进而形成网络社区集合C(GT);

当节点x,y分别属于不同的网络社区时,边(x,y)增加到网络社区Ci(G0)中,导致连接该边的两个节点x与y以及其相关邻居节点的所属网络社区发生变化,因此,需要重新确定节点x,y、与节点x,y连接的邻居节点的所属网络社区,重新确定的方法按照对网络社区执行增加节点的方法进行。

(15)当ΔE0中增加的所有边的数量为一个以上时,返回上述的(12),直到ΔE0中增加的所有边分别增加到网络社区Ci(G0)中。

其中,子步骤S1021和子步骤S1022中,对网络社区Ci(G0)执行删除ΔE0中减少的所有边的过程,根据执行的至少一个过程的结果,形成在时刻t0+T的网络结构GT的网络社区集合C(GT),具体包括:

(22)在网络社区Ci(G0)中删除ΔE0中减少的边(a,b),边(a,b)为ΔE0中减少的所有边中的任意一个,a,b分别表示边(a,b)的两个节点;

(23)当节点a,b分别属于不同的网络社区时,则Ci(GT)中节点的数量为Ci(G0)中节点的数量;

当节点a,b分别属于不同的网络社区时,通过对该边的删除,对节点a,b所属的两个不同网络社区结构不产生影响,反而增强了各网络社区内部结构的紧密性。

(24)当节点a,b属于同一个网络社区时,则按照对网络社区执行增加节点的方法,分别更新节点x,y、与节点x,y连接的邻居节点的所属网络社区,并进而形成网络社区集合C(GT);

当节点a,b属于同一个网络社区时,对该边(a,b)的删除,导致节点a,b、与节点a,b连接的邻居节点的所属网络社区发生变化,因此,需要重新确定节点a,b、与节点a,b连接的邻居节点的所属网络社区,重新确定的方法按照对网络社区执行增加节点的方法进行,且直到所有节点的网络社区没有变化为止。

(25)当ΔE0中减少的所有边的数量为一个以上时,返回上述的(22),直到在网络社区Ci(G0)中分别删除ΔE0中减少的所有边。

参见图4,图4是本发明网络社区的发现装置一实施方式的结构示意图,该实施方式的装置可以执行上述方法中的步骤,相关内容的详细说明请参见上述方法部分,在此不再赘叙。

该装置包括:检测模块101和第一形成模块102。

检测模块101用于在时间段T内以预定周期检测时刻t0的网络结构G0的拓扑变化ΔG0

第一形成模块102用于基于网络结构G0和拓扑变化ΔG0,形成在时刻t0+T的网络结构GT的网络社区集合C(GT)。

本发明实施方式通过检测前一时刻的网络结构的拓扑变化,在确定后一时刻网络结构的网络社区时,充分利用该拓扑变化,通过这种方式,能够有效辨别和监测当前时刻下动态网络中网络社区结构的变化,并对当前时刻下的网络社区结构进行更新。

参见图5,该装置还包括第二形成模块103。

第二形成模块103用于在时刻t0基于网络结构G0,形成网络社区集合C(G0),其中,G0=(V0,E0),C(G0)=(C1(G0),C2(G0),......,Ck(G0)),V0为时刻t0的节点集合,E0为时刻t0的边的集合,Ci(G0)为网络社区集合C(G0)中任意一个网络社区,i的数值是从1至k,k为网络结构G0形成的不重叠的网络社区的数量;

进一步地,第二形成模块103用于在时刻t0基于网络结构G0,通过模块度最优调整算法形成网络社区集合C(G0)。

此时,第一形成模块102包括:执行单元1021和形成单元1022。

执行单元1021用于对网络社区Ci(G0)执行增加ΔV0中增加的所有节点、删除ΔV0中减少的所有节点、增加ΔE0中增加的所有边以及删除ΔE0中减少的所有边四个过程中的至少一个过程,其中,ΔG0=(ΔV0,ΔE0),ΔV0为时间段T内节点的变化集合,ΔE0为时间段T内边的变化集合;

形成单元1022用于根据执行的至少一个过程的结果,形成在时刻 t0+T的网络结构GT的网络社区集合C(GT),其中,GT=(VT,ET),C(GT)=(C1(GT),C2(GT),......,Cm(GT)),GT=G0∪ΔG0,VT为时刻t0+T的节点集合,ET为时刻t0+T的边的集合,Ci(GT)为网络社区集合C(GT)中任意一个网络社区,i的数值是从1至m,m为网络结构GT形成的不重叠的网络社区的数量。

其中,执行单元1021具体用于将ΔV0中增加的节点u增加到网络社区Ci(G0)中,u为ΔV0中增加的所有节点中的任意一个;

此时,形成单元1022具体用于当节点u增加到网络社区Ci(G0)后,若网络社区Ci(G0)内的边、连接到网络社区集合C(G0)中其他网络社区的边均没有增加,则Ci(GT)中节点的数量为Ci(G0)中节点的数量;当节点u增加到网络社区Ci(G0)后,且若网络社区Ci(G0)连接到网络社区集合C(G0)中其他网络社区中的至少一个的边同步增加,则当引力度BDin(u,Ci(GT))大于或等于引力度BDout(u,Ci(GT))时,将节点u增加到Ci(G0)中,以形成Ci(GT),当BDin(u,Ci(GT))小于BDout(u,Ci(GT))时,将节点u增加到网络社区集合C(G0)中其他网络社区,且Ci(GT)中节点的数量为Ci(G0)中节点的数量,其中,引力度BDin(u,Ci(GT))表示网络社区Ci(GT)中除节点u之外的所有节点对节点u的引力大小,引力度BDout(u,Ci(GT))表示除网络社区Ci(GT)之外的网络社区集合C(G0)中其他网络社区的所有节点对节点u的引力大小。

当ΔV0中增加的所有节点的数量为一个以上时,返回执行单元1021,直到ΔV0中增加的所有节点分别增加到网络社区Ci(G0)中,否则,结束执行单元1021的操作。

其中,引力度BDin(u,Ci(GT))和引力度BDout(u,Ci(GT))的大小分别为:

其中,表示在时刻t0+T下,与节点u连接的所有边之和,表 示节点u与Ci(GT)中所有节点可能连接的所有边之和,表示节点u与网络社区集合C(G0)中其他网络社区的所有节点可能连接的所有边之和。

其中,执行单元1021具体用于在网络社区Ci(G0)中删除ΔV0中减少的节点v,v为ΔV0中减少的所有节点中的任意一个。

此时,形成单元1022具体用于当节点v为单孤立节点,若从网络社区Ci(G0)删除节点v后对网络结构G0没有产生变化,则Ci(GT)中节点的数量为Ci(G0)中节点的数量;当节点v从网络社区Ci(G0)删除后,若与节点v连接的边同步删除,则按照对网络社区执行增加节点的方法,更新与节点v连接的邻居节点的所属网络社区,并进而形成网络社区集合C(GT)。

当ΔV0中减少的所有节点的数量为一个以上时,返回执行单元1021,直到在网络社区Ci(G0)中分别删除ΔV0中减少的所有节点,否则,结束执行单元1021的操作。

其中,形成单元1022还用于当更新与节点v连接的邻居节点的所属网络社区之后,节点v的邻居节点的邻居节点产生网络社区的变化时,则按照对网络社区执行增加节点的方法,更新与节点v连接的邻居节点的邻居节点的所属网络社区,直至G0中所有节点的所属网络社区不再发生变化。

其中,执行单元1021具体用于将ΔE0中增加的边(x,y)增加到网络社区Ci(G0)中,边(x,y)为ΔE0中增加的所有边中的任意一个,x,y分别表示边(x,y)的两个节点。

此时,形成单元1022具体用于当节点x,y属于同一个网络社区时,则Ci(GT)中节点的数量为Ci(G0)中节点的数量;当节点x,y分别属于不同的网络社区时,则按照对网络社区执行增加节点的方法,分别更新节点x,y、与节点x,y连接的邻居节点的所属网络社区,并进而形成网络社区集合C(GT)。

当ΔE0中增加的所有边的数量为一个以上时,返回执行单元1021,直到ΔE0中增加的所有边分别增加到网络社区Ci(G0)中,否则,结束执行 单元1021的操作。

其中,执行单元1021具体用于在网络社区Ci(G0)中删除ΔE0中减少的边(a,b),边(a,b)为ΔE0中减少的所有边中的任意一个,a,b分别表示边(a,b)的两个节点。

形成单元1022具体用于当节点a,b分别属于不同的网络社区时,则Ci(GT)中节点的数量为Ci(G0)中节点的数量;当节点a,b属于同一个网络社区时,则按照对网络社区执行增加节点的方法,分别更新节点x,y、与节点x,y连接的邻居节点的所属网络社区,并进而形成网络社区集合C(GT)。

当ΔE0中减少的所有边的数量为一个以上时,返回执行单元1021,直到在网络社区Ci(G0)中分别删除ΔE0中减少的所有边,否则,结束执行单元1021的操作。

以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1