一种动态图上的增量结构聚类方法及系统与流程

文档序号:12786939阅读:240来源:国知局
一种动态图上的增量结构聚类方法及系统与流程

本发明属于网络技术领域,尤其涉及一种动态图上的增量结构聚类方法及系统。



背景技术:

随着信息技术的快速发展,各种真实的网络所形成的图数据随处可见。例如社交网络、通信网络以及生物网络。每种网络中都包含对应的社区结构,发现这些隐含的社区结构在现实生活中意义重大并且有很多的应用。在生物网络中,一个社区可能代表具有相同性质的分子。在社交网络中,一个社区可能代表着关系比较紧密的团体。

图的聚类是发现这些社区的一个重要的手段。在过去十年里,针对图的聚类,研究人员提出了大量的模型和相关的算法。在这些算法中,SCAN算法(Structural Clustering Algorithm on Networks,图的结构聚类算法)是一个非常卓越的模型,并且在实际应用中取得了很好的效果。相对于其他的图的聚类算法,SCAN不仅能够找到图中的社区还能发现边界点(outliers)和桥结点(hubs)。

SCAN算法思想和基于密度聚类的DBCSAN(Density-Based Spatial Clustering of Applications with Noise)算法很相似。具体地说,SCAN算法首先定义了图中边的两个结点的结构相似性。如过一条边的结构相似性大于给定的阈值ε,就会保存它,若小于给定的阈值则删除。最终,当与某个结点相关联的并且满足结构相似性的边的个数至为k(手动设置的阈值)时,称该结点为一个核心点,然后该算法从该核心点出发,不断的扩展,从而得到其中一个聚类。

SCAN算法对于静态图的聚类具有很好的效果。但是在真实的世界里所形成的网络总是在不断地更新。如果用原始的SCAN算法去计算更新后的图,每次更新都需要重新计算整个网络,这个过程则非常的耗时。因为SCAN算法本身的时间复杂度是O(m1.5),(其中m是边的条数)是非线性的算法。



技术实现要素:

本发明所要解决的技术问题在于提供一种动态图上的增量结构聚类方法及系统,旨在解决现有技术中当出现静态图更新时需要重新计算整个网络,计算过程耗时的问题。

本发明是这样实现的,一种动态图上的增量结构聚类方法,包括:

接收无向无权简单图,利用图的结构聚类算法对所述无向无权简单图进行初始化处理,得到初始化的广度优先森林及其非树边集合;

当检测到插入新的边时,根据所述新的边和初始化后的广度优先森林及其非树边集合进行合并聚类或聚类拆分的处理,得到目标广度优先森林。

进一步地,所述利用图的结构聚类算法对所述无向无权简单图进行初始化处理,得到初始化的广度优先森林及其非树边集合包括:

遍历所述无向无权简单图,得到所有未处理的结点;

判断当前的结点是否是核心结点,若否,则判断下一结点是否为核心结点;

若是,则生成聚类编号给作为核心结点的结点,将所述作为核心结点的结点的直接可达且未被处理的邻居插入至预置队列,并将所述作为核心结点的结点作为其余未被处理的结点在其广度优先森林中的父亲结点;

当判断所述预置队列不为空时,获取所述预置队列的首元素,并找出所述首元素的所有直接可达邻居;

判断所述首元素的邻居是否已被处理,若未被处理,则给未处理的邻居分配队列编号后插入预置队列,并将所述首元素作为插入预置队列的邻居在其对应的广度优先森林中的父亲结点;

若所述首元素的邻居已被处理,则将所述首元素和所述已被处理的邻居组成的边插入所述非树边集合。

进一步地,所述当检测到插入新的边时,根据所述新的边和初始化后的广度优先森林及其非树边集合进行合并聚类或聚类拆分的处理,得到目标广度优先森林包括:

当检测到插入新的边时,获取所述新的边的任一端点的结构相似性改变的边的集合,及所述新的边的两个端点的所有邻居的并集;

计算所述结构相似性改变的边的集合中所有边的相似性,得到结构相似性参数;

获取所述新的边的两个端点的所有邻居的并集中的所有结点,并判断当前结点是否为核心结点,若是,则合并需要合并的聚类,若否,则判断下一结点是否为核心点;

判断所述结构相似性改变的边的集合中的边的结构相似性参数,若当前的边的结构相似性参数满足断裂条件,则断裂当前的边对应的广度优先森林,若当前边的结构相似性参数不满足断裂条件,则判断下一个边的结构相似形参数是否满足断裂条件;

遍历所述非树边集合,合并需要合并的广度优先森林,形成目标广度优先森林。

进一步地,以w表示所述核心结点,以v表示所述新的边的两个端点的所有邻居的并集中的任意一个结点,以ewv表示以w和v为端点的边,则所述合并需要合并的聚类包括:

遍历w的所有邻居结点,若w直接可达v,则判断v的聚类与w的聚类是否相同;

若v不属于任何聚类,则将v加入到w对应的聚类;

若v的所属聚类与w的聚类不同,则判断v是否为核心结点,若v是核心结点,则合并v所属的聚类和w所属的聚类,若v不是核心结点,则将ewv插入所述非树边集合;

若v所属聚类与w的聚类相同,则判断v和w是否在广度优先树中存在父子关系,若不存在,则将ewv插入所述非树边集合。

进一步地,分别以u和v表示当前的边的两个端点,euv表示以w和v为端点的边,则断裂当前的边对应的广度优先森林包括:

判断u和v是否为核心结点;

若u和v均为核心结点,则判断u和v是否有直接父子关系,若没有,则从所述非树边集合中删除euv,若有,则从广度优先树中删除euv

若u和v其中一个为核心结点,则判断u和v是否有直接父子关系,若没有,则从所述非树边集合中删除euv,若有,则从广度优先树中删除euv

若u和v均不是核心结点,则判断u在插入新的边之前是否为核心结点;

若u在插入新的边之前是核心结点,则判断u是否为v的父亲结点,若是,则从广度优先树中删除euv,若否,则从所述非树边集合中删除euv

若u在插入新的边之前非核心结点,且v在插入新的边之前是核心结点,则判断v是否为u的父亲结点,若是,则从广度优先树中删除evu,若否,则从所述非树边集合中删除euv

本发明实施例提供了一种动态图上的增量结构聚类系统,包括:

初始化单元,用于接收无向无权简单图,利用图的结构聚类算法对所述无向无权简单图进行初始化处理,得到初始化的广度优先森林及其非树边集合;

动态更新单元,用于当检测到插入新的边时,根据所述新的边和初始化后的广度优先森林及其非树边集合进行合并聚类或聚类拆分的处理,得到目标广度优先森林。

进一步地,所述初始化单元具体用于:

遍历所述无向无权简单图,得到所有未处理的结点;

判断当前的结点是否是核心结点,若否,则判断下一结点是否为核心结点;

若是,则生成聚类编号给作为核心结点的结点,将所述作为核心结点的结点的直接可达且未被处理的邻居插入至预置队列,并将所述作为核心结点的结点作为其余未被处理的结点在其广度优先森林中的父亲结点;

当判断所述预置队列不为空时,获取所述预置队列的首元素,并找出所述首元素的所有直接可达邻居;

判断所述首元素的邻居是否已被处理,若未被处理,则给未处理的邻居分配队列编号后插入预置队列,并将所述首元素作为插入预置队列的邻居在其对应的广度优先森林中的父亲结点;

若所述首元素的邻居已被处理,则将所述首元素和所述已被处理的邻居组成的边插入所述非树边集合。

进一步地,所述动态更新单元包括:

集合获取模块,用于当检测到插入新的边时,获取所述新的边的任一端点的结构相似性改变的边的集合,及所述新的边的两个端点的所有邻居的并集;

参数计算模块,用于计算所述结构相似性改变的边的集合中所有边的相似性,得到结构相似性参数;

合并聚类模块,用于获取所述新的边的两个端点的所有邻居的并集中的所有结点,并判断当前结点是否为核心结点,若是,则合并需要合并的聚类,若否,则判断下一结点是否为核心点;

聚类拆分模块,用于判断所述结构相似性改变的边的集合中的边的结构相似性参数,若当前的边的结构相似性参数满足断裂条件,则断裂当前的边对应的广度优先森林,若当前边的结构相似性参数不满足断裂条件,则判断下一个边的结构相似形参数是否满足断裂条件;

集合遍历模块,用于遍历所述非树边集合,合并需要合并的广度优先森林,形成目标广度优先森林。

进一步地,以w表示所述核心结点,以v表示所述新的边的两个端点的所有邻居的并集中的任意一个结点,以ewv表示以w和v为端点的边,则所述合并聚类模块具体用于:

遍历w的所有邻居结点,若w直接可达v,则判断v的聚类与w的聚类是否相同;

若v不属于任何聚类,则将v加入到w对应的聚类;

若v的所属聚类与w的聚类不同,则判断v是否为核心结点,若v是核心结点,则合并v所属的聚类和w所属的聚类,若v不是核心结点,则将ewv插入所述非树边集合;

若v所属聚类与w的聚类相同,则判断v和w是否在广度优先树中存在父子关系,若不存在,则将ewv插入所述非树边集合。

进一步地,分别以u和v表示当前的边的两个端点,euv表示以w和v为端点的边,则所述聚类拆分模块具体用于:

判断u和v是否为核心结点;

若u和v均为核心结点,则判断u和v是否有直接父子关系,若没有,则从所述非树边集合中删除euv,若有,则从广度优先树中删除euv

若u和v其中一个为核心结点,则判断u和v是否有直接父子关系,若没有,则从所述非树边集合中删除euv,若有,则从广度优先树中删除euv

若u和v均不是核心结点,则判断u在插入新的边之前是否为核心结点;

若u在插入新的边之前是核心结点,则判断u是否为v的父亲结点,若是,则从广度优先树中删除euv,若否,则从所述非树边集合中删除euv

若u在插入新的边之前非核心结点,且v在插入新的边之前是核心结点,则判断v是否为u的父亲结点,若是,则从广度优先树中删除evu,若否,则从所述非树边集合中删除euv

本发明与现有技术相比,有益效果在于:本发明实施例通过利用图的结构聚类算法对接收到的无向无权简单图进行初始化,获得初始化后的广度优先森林及其非树边集合,当检测到插入新的边时,会根据该新的边进行判断并对该广度优先森林和非树边集合进行合并或者拆分,并最终得到目标广度优先森林。原始的SCAN算法并没有提出动态更新的方法,每次插入新的边都需要重新计算一次,通过本实施例提供的方法不需要重新计算整个图,仅仅需要更新部分边,就能够重新的划分聚类,本实施例相较于与现有提供的SCAN算法在进行更新操作时速度能够提升3个数量级,解决了现有技术中当出现静态图更新时需要重新计算整个网络,计算过程耗时的问题。

附图说明

图1是本发明实施例提供的一种动态图上的增量结构聚类方法的流程图;

图2a是本发明实施例提供的无向无权简单图;

图2b是图2a中插入新的边的示意图;

图3a是根据图2a生成广度优先森林的示意图;

图3b是根据图2b生成的广度优先森林的示意图;

图4是本发明实施例提供的一种动态图上的增量结构聚类方法的结构示意图;

图5是本发明实施例提供的动态更新单元的结构示意图;

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供了如图1所示的实施例,一种动态图上的增量结构聚类方法,包括:

S101,接收无向无权简单图,利用图的结构聚类算法对所述无向无权简单图进行初始化处理,得到初始化的广度优先森林及其非树边集合。

具体地,在本步骤中,当接收到无向无权简单图后,遍历所述无向无权简单图,得到所有未处理的结点;判断当前的结点是否是核心结点,若否,则判断下一结点是否为核心结点;若是,则生成聚类编号给作为核心结点的结点,将所述作为核心结点的结点的直接可达且未被处理的邻居插入至预置队列,并将所述作为核心结点的结点作为其余未被处理的结点在其广度优先森林中的父亲结点;当判断所述预置队列不为空时,获取所述预置队列的首元素,并找出所述首元素的所有直接可达邻居;判断所述首元素的邻居是否已被处理,若未被处理,则给未处理的邻居分配队列编号后插入预置队列,并将所述首元素作为插入预置队列的邻居在其对应的广度优先森林中的父亲结点;若所述首元素的邻居已被处理,则将所述首元素和所述已被处理的邻居组成的边插入所述非树边集合。具体地,非树边集合:是可达的边的集合,但是没在广度优先森林的任何一棵树上。比如说:v可达w,但是结点v和w已经被分配到一棵树上,此时将边vw定义为非树边。同时,在将所述作为核心结点的结点作为其余未被处理的结点在其广度优先森林中的父亲结点的步骤中,若该核心结点的直接可达且未被处理的结点被分配到森林中的同一棵树上,这个核心结点将作为这些未处理结点的父亲结点。

S102,当检测到插入新的边时,根据所述新的边和初始化后的广度优先森林及其非树边集合进行合并聚类或聚类拆分的处理,得到目标广度优先森林。

在本步骤中,当检测到插入新的边时,获取所述新的边的任一端点的结构相似性改变的边的集合,及所述新的边的两个端点的所有邻居的并集;计算所述结构相似性改变的边的集合中所有边的相似性,得到结构相似性参数;获取所述新的边的两个端点的所有邻居的并集中的所有结点,并判断当前结点是否为核心结点,若是,则合并需要合并的聚类,若否,则判断下一结点是否为核心点;判断所述结构相似性改变的边的集合中的边的结构相似性参数,若当前的边的结构相似性参数满足断裂条件,则断裂当前的边对应的广度优先森林,若当前边的结构相似性参数不满足断裂条件,则判断下一个边的结构相似形参数是否满足断裂条件;遍历所述非树边集合,合并需要合并的广度优先森林,形成目标广度优先森林。

为了解决背景技术所提到的问题,本发明实施例提出了基于动态网络的增量结构聚类方法,即ISCAN(Incremental Structural Clustering Algorithm for Dynamic Networks)。该方法能够在不需要重新计算整个网络的情况下,动态地维护SCAN算法生成的聚类。当在图中插入或者删除边的时候只需要计算相似性发生改变的边。当插入或者删除边的时候,某些边的结构相似性可会上升也有可能会下降。当相似性升高的时候可能会合并一些聚类,当相似性降低的时候,可能会拆分一些聚类。在ISCAN中提出了一个广度优先森林的结构(BFS-forest,Breadth-First-Search forest)来维护所生成的聚类。每一个广度优先树(BFS-tree,Breadth-First-Search tree)代表一个聚类。同时,需要用一个仓库(Φ)来存储那些非树边,本实施例中也将该仓库叫做非树边集合,这些边的结构相似性是大于等于阈值ε当断裂所有需要断裂的树之后,需要遍历仓库(Φ),检测是否可以合并某些断裂后的树。

为了说明ISCAN模型,首先介绍SCAN模型的几个关键概念。

在无向无权简单图G=(V,E)中,V代表无向无权简单图中的结点,E代表无向无权简单图的所有边。每个结点的邻居定义为Γ(v)={w∈V|(v,w)∈E}∪{v}。根据此定义得到两个结点的结构相似性定义:

如果u和v不形成一条边,则σ(u,v)=0。

在SCAN模型中,首先指定结构相似性的阈值假设为ε,得到ε-neighborhood(ε邻居)的定义:

Nε(v)={w∈Γ(v)|σ(w,v)≥ε} (2)

当一个结点被称作核心结点当且仅当|Nε(v)|≥μ,即在SCAN算法中如果v是核心结点并且u∈Nε(v),则称v直接可达u(DirREACHε,μ(v,u)),定义如下:

如果v直接可达u,u直接可达w,则称v可达w,具体形式如下:

如果存在一个结点v,满足REACHε,μ(v,w)并且REACHε,μ(v,u),则称u和w满足结构连通性(CONNECTε,μ(u,w))。

根据上述定义得到SCAN模型对于聚类的定义:

SCAN算法是找出网络中所有满足上述定义的聚类,在该模型中存在一些点,这些点不属于任何聚类,但是它们却连接着不同的聚类,称之为:桥(hubs),其他的既不是桥也不属于任何聚类的点,称为边界点(outliers)。SCAN模型首先找到一个核心结点,然后从该结点出发以广度优先遍历的方式(Breadth-first search)找到所有的可达邻居,并将它们规划为一个聚类。当所有结点都被访问过,算法结束。该算法对于静态网络中的社区搜索具有很好的效果,但是对于动态更新的情况则处理较慢。所以本实施例提出了增量结构聚类方法(ISCAN。)

(2)ISCAN方法

ISCAN方法是在无需重新计算这个网络的情况下,动态地维护聚类结果。ISCAN方法是建立在对原始SCAN算法的两个重要的观察上。

(A)当插入一条边e=(u,v)时,只有以u或v为端点的边的结构相似性才会改变。用R(euv)表示这些相似性会改变的边的集合,用N(eεμ)表示结点u和结点v所有邻居的并集(Γ(v)∪Γ(u))。其中R(euv)∈E并且这些边是由N(eεμ)中的结点形成的。本实施例分三种情况讨论相似性的改变:

①、新插入边euv的相似性一定升高,因为一开始它们之间没有变,相似性为0,在它们之间插入边后必然会导致相似性升高。(如图2中,插入边e34后σ(3,4)必然升高)

②、当插入euv后,结点u,v,w可以形成一个三角形,则σ(w,v)的相似性必然升高。(如图2中,结点2,3,4能够形成三角形,所以e32的相似性σ(3,2)升高)

③、当插入euv后,结点u,v,w不形成三角形,则σ(w,v)的相似性必然降低。(如图2中,结点3,4,6不能够形成三角形,所以边e36的相似性σ(3,6)必然降低)

(B)需要注意的是,SCAN算法执行过程中会形成一个广度优先森林(BFS-forest),在该森林中,每棵树都是一个聚类,并且在每棵树中,所有的非叶子结点一定是核心结点。基于此,就能够用BFS-forest来动态的维护SCAN算法所形成的聚类。

通过上述分析可以发现,每次更新都会导致相关边(R(euv))的结构相似性的改变。当相似性升高并且高于阈值ε时(上升前小于ε),就可能出现聚类的合并;当相似性降低且降低后小于阈值ε时(降低前大于ε),就可能会出现BFS-tree的断裂。以图2为例,当设置阈值ε=0.8,阈值u=2时,a所对应的BFS-tree如图3(a)所示,当插入边e34后,新的BFS-tree如图3(b),其中虚线表示从BFS-tree中删除该边。

为了维护已经生产的BFS-forest,需要维护非树边的集合Φ。Φ中的任意一条边euv都满足u直接可达v。也就是说将直接可达的边分成了两类:在某个BFS-tree上的树边以及存储在Φ中的非树边。当分裂一棵BFS-tree的时候,需要扫描一遍Φ,查看是否存在一条边将分裂后的子树相连,如果有,则需要再度合并这些子树。可以修改原始的SCAN算法初始化Φ。对于给定的无向无权简单图G=(V,E)以及阈值ε和u,算法主要分为两个主要部分:

A:初始化Φ。

B:动态更新。

现在分别详细介绍这两个部分,对于步骤A,其具体步骤主要包括:

A1:对于所有未处理的结点v,如果v是核心结点执行步骤A2,若否,则继续执行本步骤,及继续判断下一结点是否为核心结点。

A2:生成一个新的聚类ID(聚类编号)赋给v,并且将所有v的直接可达且未被处理的邻居插入到预置队列Q,并将v作为这些结点在其BFS-tree中的父亲结点。

A3:当Q不为空,取出队首元素u,找出u的所有直接可达邻居,如果该邻居结点w未被处理则执行步骤A4,若已被处理,则执行步骤A5。

A4:将未被处理的邻居结点w插入到Q中并将ID分配给插入队列Q的邻居结点,并将u作为它们在其对应的BFS-tree中的父亲结点。

A5:将边euw插入到Φ中。

通过以上过程得到了BFS-forest和Φ。下面步骤将展示步骤B,即动态更新ISCAN算法的主要过程。

B1:对于所有更新的边euw,得到R(euv)以及N(eεμ)。

B2:计算R(euv)中所有边的相似性,得到结构相似性参数σ'(euv)。

B3:对所有的结点w,w∈N(euv),如果w是核心结点执行步骤B4,若否,则执行继续步骤B3,即判断下一结点是否为核心结点。

B4:合并可能需要合并的聚类。

B5:对所有的边euv∈R(euv),如果其结构相似性参数满足断裂条件,即σ(euv)≥ε并且σ'(euv)<ε,则执行步骤B6,若不满足,则执行继续执行步骤B5,即判断下一个边的结构相似形参数是否满足断裂条件。

B6:断裂相关的BFS-tree。

B7:遍历Φ,合并需要合并的BFS-tree,形成新的BFS-forest。

通过上述具体步骤,可以发现本实施例提供给的方法有三个主要步骤:

●合并聚类(即步骤B4)。

●断裂BFS-tree(聚类拆分,即步骤B6)。

●扫面Φ,得到最终的BFS-forest(即步骤B7)。

下面具体阐述上述3个主要步骤。

合并聚类(步骤B4):

这个过程主要考虑的是相似性升高的情况,扫描N(eεμ)中的所有的核心结点,维护和更新BFS-forest和Φ。主要过程如下:

B41:对于核心结点w,遍历w的所有邻居结点v,如果w直接可达v执行步骤B42,若否,则执行继续执行步骤B41,即判断下一邻居结点。

B42:如果v不属于任何聚类,将v加入到w对应的聚类。若v属于某一聚类,则执行步骤B43。

B43:如果v的所属聚类与w不同,执行步骤B44,若否,则执行步骤B46。

B44:如果v是核心结点,则合并v和w所属的聚类,若否,则执行步骤B45。

B45:将边ewv插入到Φ中。

B46:如果v和w在BFS-tree中不存在父子关系,执行步骤B45。

断裂BFS-tree(步骤B6):

这个主要考虑相似性降低的情况,遍历所有R(euv)中的边,更新维护BFS-forest以及Φ。主要过程如下:

B61:u和v都是核心结点,如果u和v没有直接父子关系,则从Φ中删除euv,若有,则从BFS-tree中删除euv

B62:u和v其中一个是核心结点,如果u和v没有直接父子关系,则从Φ中删除euv,若有,则从BFS-tree中删除euv

B63:u和v都不是核心结点,如果u在插入新的边之前是核心结点,执行步骤B64,如果v在插入新的边之前是核心结点执行步骤B65。

B64:如果u是v的父亲结点,则从BFS-tree中删除euv,若否,则从Φ中删除euv

B65:如果v是u的父亲结点,则从BFS-tree中删除evu,若否,则从Φ中删除euv

扫描Φ,得到最终的BFS-forest:

经过以上断裂过程后,需要再一次扫描Φ,查看断裂后的子树能否合并,从而得到更新后的BFS-tree。

下面分析本实施例提供的方法的时间复杂度。假设m和n分别是无向无权简单图G的边数和结点数。p是Φ的大小(p=|Φ|)。在现实的世界所形成的大图中非树边集合中边的条数p远远小于该图的所有边的条数m,比如某视频网站形成的网络m=2,987,624,p=3210。算法首先计算R(euv)中所有边的结构相似性,假设时间复杂度为O(T)由于|R(euv)|远远小于m,合并过程中需要修改结点的ID号,最坏情况下为O(n),断裂的时间复杂度同样是O(n),扫描Φ的时间复杂度为p。所以,通过分析可以获知该算法的时间复杂度是O(m+n)。

由于在现实生活中数据量巨大,如果每次都需要重新计算,则是对时间和空间资源的巨大浪费。通过本实施例提供的ISCAN方法能够弥补原始SCAN算法在处理现实中动态网络图数据的不足之处,在原有算法的基础之上将运行效率提高了至少三个数量级。

本发明还提供如图4所示的实施例,一种动态图上的增量结构聚类系统,包括:

初始化单元401,用于接收无向无权简单图,利用图的结构聚类算法对所述无向无权简单图进行初始化处理,得到初始化的广度优先森林及其非树边集合;

动态更新单元402,用于当检测到插入新的边时,根据所述新的边和初始化后的广度优先森林及其非树边集合进行合并聚类或聚类拆分的处理,得到目标广度优先森林。

进一步地,初始化单元402具体用于:

遍历所述无向无权简单图,得到所有未处理的结点;

判断当前的结点是否是核心结点,若否,则判断下一结点是否为核心结点;

若是,则生成聚类编号给作为核心结点的结点,将所述作为核心结点的结点的直接可达且未被处理的邻居插入至预置队列,并将所述作为核心结点的结点作为其余未被处理的结点在其广度优先森林中的父亲结点;

当判断所述预置队列不为空时,获取所述预置队列的首元素,并找出所述首元素的所有直接可达邻居;

判断所述首元素的邻居是否已被处理,若未被处理,则给未处理的邻居分配队列编号后插入预置队列,并将所述首元素作为插入预置队列的邻居在其对应的广度优先森林中的父亲结点;

若所述首元素的邻居已被处理,则所述首元素和所述已被处理的邻居组成的边插入所述非树边集合。

进一步地,如图5所示,动态更新单元402包括:

集合获取模块4021,用于当检测到插入新的边时,获取所述新的边的任一端点的结构相似性改变的边的集合,及所述新的边的两个端点的所有邻居的并集;

参数计算模块4022,用于计算所述结构相似性改变的边的集合中所有边的相似性,得到结构相似性参数;

合并聚类模块4023,用于获取所述新的边的两个端点的所有邻居的并集中的所有结点,并判断当前结点是否为核心结点,若是,则合并需要合并的聚类,若否,则判断下一结点是否为核心点;

聚类拆分模块4024,用于判断所述结构相似性改变的边的集合中的边的结构相似性参数,若当前的边的结构相似性参数满足断裂条件,则断裂当前的边对应的广度优先森林,若当前边的结构相似性参数不满足断裂条件,则判断下一个边的结构相似形参数是否满足断裂条件;

集合遍历模块4025,用于遍历所述非树边集合,合并需要合并的广度优先森林,形成目标广度优先森林。

进一步地,以w表示所述核心结点,以v表示所述新的边的两个端点的所有邻居的并集中的任意一个结点,以ewv表示以w和v为端点的边,则合并聚类模块4023具体用于:

遍历w的所有邻居结点,若w直接可达v,则判断v的聚类与w的聚类是否相同;

若v不属于任何聚类,则将v加入到w对应的聚类;

若v的所属聚类与w的聚类不同,则判断v是否为核心结点,若v是核心结点,则合并v所属的聚类和w所属的聚类,若v不是核心结点,则将ewv插入所述非树边集合;

若v所属聚类与w的聚类相同,则判断v和w是否在广度优先树中存在父子关系,若不存在,则将ewv插入所述非树边集合。

进一步地,分别以u和v表示当前的边的两个端点,euv表示以w和v为端点的边,则聚类拆分模块4024具体用于:

判断u和v是否为核心结点;

若u和v均为核心结点,则判断u和v是否有直接父子关系,若没有,则从所述非树边集合中删除euv,若有,则从广度优先树中删除euv

若u和v其中一个为核心结点,则判断u和v是否有直接父子关系,若没有,则从所述非树边集合中删除euv,若有,则从广度优先树中删除euv

若u和v均不是核心结点,则判断u在插入新的边之前是否为核心结点;

若u在插入新的边之前是核心结点,则判断u是否为v的父亲结点,若是,则从广度优先树中删除euv,若否,则从所述非树边集合中删除euv

若u在插入新的边之前非核心结点,且v在插入新的边之前是核心结点,则判断v是否为u的父亲结点,若是,则从广度优先树中删除evu,若否,则从所述非树边集合中删除euv

本发明提供的上述实施例,能够具体应用在动态图的领域。同时图数据中的社区搜索应用领域十分广泛,而现实中的图数据总是在不停的更新,由于在现实生活中数据量巨大,如果每次都需要重新计算,则是对时间和空间资源的巨大浪费。在现实世界中对数据的高效性和实时性要求较高,尤其在在电话通信网络中,要查询一个用户与其紧密联系的一个社群,进而了解其的社会关系网络,这一应用有助于帮助公安刑侦,打击团伙犯罪,恐怖组织等更需要高效地进行。另外发现图数据中的社区结构在生物学中也有重要的应用,能够找出具有相同性质的物质。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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