introduction
top-kinfluential community计算主要有两类算法:
- index_based 的方法需要为预计算所以,且仅适用于一个内置顶点权重向量。当图发生改变时,需要耗费很多时间去更新索引,且不能处理顶点权重向量与索引中使用的顶点权重向量不同的查询。
- online search算法,不需要预先计算,但是由于influential γ-communities的的重叠性,在进行第二个子程序的时候(识别包含具有最小权重的顶点的结果图的连通分量,这是下一个有影响的纬度 - 社区;)时间消耗很大。虽然有forward的算法仅用于onlineAll算法的 的连通分量计算的最后k次迭代。
以上的算法为了找到top-k影响r-社区都需要遍历整个图。本文提出的local search这是一种实例最优的算法,只需要访问图G的一小部分,并且索引构建和索引维护不会给系统带来任何负担。
- 实现这个方法解决的问题有:1).判断被给的子图是否足够去处理一个查询2)选择合适的子图去处理3)在大图上的实时查询处理上有效的实现这一想法。
- 解决这些问题的方法:
1)如果G的子图 G≥τ 包含至少 k influential γ-communities,那么G≥τ 中的 top-k influential γ-communities 就是查询结果(其中G≥τ表示由权重至少为τ的所有顶点引起的G的子图)------所以我们的目标是去找到含有至少k influential γ-communities的最小子图。
2)G的子图 G≥τ influential γ-communities 事非减的当 τ 减少的时候。------所以通过迭代的减小τ的值来找到目标子图
3)有效的实现这些想法----我只处理使得G≥τi的大小约为G≥τi-大小的两倍 每1 i> 1。的(即计算有影响的γ群落的数量)子图G≥τ1;G≥τ2,:::,
而且localsearch算法还能在任意时间(即用户选择k)终止,所而其他的算法必须在算法的结尾才能得到结果。
贡献:
1.用于计算top-k影响γ-社区时间复杂度与没有索引的正确算法需要访问的最小子图的大小成线性比例
2.按影响值递减顺序计算和输出影响r-社区。
3.将本地搜索框架扩展到关于其他内聚力测量的top-k有影响力的社区搜索的一般情况
实现
3.1整体框架:
- 伪代码
tip:τ1 could be set as the (k + γ)-th largest vertex weight in G计算出最大的τ
-
如果 G≥τi 包含少于k influential γ-communities (i.e.,CountIC(G≥τi) < k) 并且G≥τi 不等于 G找到下一个最大的 τi+1 值是的G≥τi+1 i 的size至少是 δ于G≥τi 。
- 图的组织:
假设G的顶点相对于它们的权重按降序排列。并将每个顶点u的邻居NG(u)预分割为两个不相交的集合:NG≥(u)权重不小于w(u)的所有邻居,NG <(u)所有权重小于w(u)的邻居。这样就可以很有效的对k,r进行在线查询。构造G≥τ,只需要在线性时间内检索每个u 2V≥τ检索邻域的集合NG≥(u)。
所以算法的第四行的实现:(先令t G≥τi+1 = G≥τi, 然后迭代的从 Gn\G≥τi+1 选择最大的权值的顶点u和从u到 每个属于NG≥(u)的邻居的无向边到 G≥τi+1 直到子图的size为 δ · size(G≥τi).
-
例子:
k=4,r=3 假设 δ=2
因为k+r=7.则选第7个顶点,所以τ1=18.则计算出子图如图b所示。下一个子图的大小size到子图的大小为36.所以τ2 = w(v5) = 12 and G≥τ2 is shown in Figure 4(c).
然后在G≥τ2中运行CountIC算法得到有4个影响力r社区,利用EnumIC计算出这top-4影响力r社区。
3.2实现
计算图表中有影响力的γ-社区的数量比枚举它们更容易,因为所有influential γ-communities的尺寸可能大于整个图的尺寸并且他们可能互相重叠。现有算法不能通过枚举以外的方法来计算influential γ-communities的数量。因此我们提出了一种新的算法去计数
3.2.1 Influential γ-community Counting
keynode和影响力r社区是一样对应关系。keynodes是影响力社区中最小权值的点。
-
伪代码
上例图c中的keys和每次移除keys时移除的相应的顶点如下图。
其中计算的时间复杂度为图size的线性倍数
3.2.2 Influential γ-community Enumeration
-
伪代码
Find(w; v2key(·))相当于找所以与w连接的所有的keynodes。在上例中.v2key(v3) = v2key(v12) = v2key(v20) = v11,所以IC(v13) =gp(v13) ∪IC(v11).
3.3 local Search的分析
4.A PROGRESSIVE APPROACH
Thus, the influential γ-communities in G≥τh can actually be partitioned into influential γ-communities in G≥τ1, and influential γ-communities in G≥τi but not in G≥τi-1 for every 1 < i ≤ h.
- 伪代码
Algorithm 4可以在G中的所有 influential γ-
communities i都被计算出来(line7) 的时候或者用户选择终止的时候终止。
-
增量构造cvs
例子
初始化τ1为最大的τ 值,τ0为G中最大的顶点权值
5.扩展
5.1非包含社区搜索
Given a graph G and an integer γ, an influential γ-community g is a non-containment influential γ-community if it satisfies the non-containment constraint that none of its subgraph is an influential γ-community.
主要通过让keynodes为non-containment keynodes,然后就可以相应的计算non-containment influential γ-community.
5.2 A General Framework for Top-k Influential Community Search
6.总结一下感想。
总体的感觉是原来的计算方法需要在一整个图上进行查找,或者需要构建整张图的索引。在本文提出的方法中,通过逐步扩大子图来进行查找,即增量构造的方法。利用keynodes来代替原来需要枚举所有community的方式来计数。同时利用一个cvs来保存每个keynodes 被remove之后随之移除的点。通过keys和cvs得到每一个keynode u的group(u),然后通过这样就可以通过group(u)递归的得到每一个influential Community 即IC(u)。因为对于所有小的子图(G≥τi-1)中的IC肯定也包含在大的子图(G≥τi )中,所以就可以先计算出小的子图中的IC。因此每个子图(G≥τi )计算出没有在G≥τi-1中被计算出来IC。所以就可以实现每次子图的构造过程中都可以计算并输出出IC,用户也可以根据需要的k来选择终止程序,而不需要等程序全部执行完才能计算出IC。
7.参考:
An Optimal and Progressive Approach to Online Search of
Top-K Influential Communities Fei Biy, Lijun Changx, Xuemin Liny, Wenjie Zhang