Louvain论文中模块化第二个公式(社区Σ_total公式)的来源探究
解析Louvain算法论文中ΔQ里Σ_total公式的来源
嘿,这个问题其实是从模块化Q的原始定义一步步推导出来的,咱们拆解清楚:
首先回顾论文里最初的模块化定义:
$$ Q = \frac1{2m} \sum_{i,j} \left[A_{ij} - \frac{k_i k_j}{2m}\right]\delta(c_i, c_j). $$
我们可以把Q拆成所有社区的贡献之和——对于任意社区$c$,它对Q的贡献可以单独提取出来:
$$ Q_c = \frac{\Sigma_{in}(c)}{2m} - \left( \frac{\Sigma_{tot}(c)}{2m} \right)^2 $$
这里的两个核心符号就是这么来的:
- $\Sigma_{in}(c)$:社区$c$内部所有边的权重总和(对应原始Q里的$\sum_{i,j∈c}A_{ij}$)
- $\Sigma_{tot}(c)$:社区$c$中所有节点的度数总和(也就是$\sum_{i∈c}k_i$,对应原始Q里$\sum_{i,j∈c}k_i k_j$的展开结果,因为$\sum_{i∈c}k_i \cdot \sum_{j∈c}k_j = (\Sigma_{tot}(c))^2$)
接下来看ΔQ的推导:当我们把节点$i$移到社区$c$时,ΔQ本质是移动后整个网络的Q值减去移动前的Q值。
我们只需要关注两个社区的变化:节点$i$原来所在的社区,以及目标社区$c$。论文里为了简化推导,直接聚焦于目标社区$c$的贡献变化,再结合节点$i$的孤立状态做对比:
- 移动前,社区$c$的贡献是 $\frac{\Sigma_{in}}{2m} - \left( \frac{\Sigma_{tot}}{2m} \right)^2$(这里$\Sigma_{in}$和$\Sigma_{tot}$都是移动前社区$c$的数值)
- 移动后,社区$c$的$\Sigma_{in}$会增加节点$i$与社区$c$的连接权重$k_{i,in}$,$\Sigma_{tot}$会增加节点$i$的总度数$k_i$,所以贡献变为 $\frac{\Sigma_{in} + k_{i,in}}{2m} - \left( \frac{\Sigma_{tot} + k_i}{2m} \right)^2$
- 同时还要减去节点$i$从原社区移出带来的贡献变化,但论文里通过代数化简,把这部分和“节点$i$孤立时的贡献”做了合并,最终得到了你看到的ΔQ表达式(化简后就是论文里呈现的简洁版本)
总结一下:
- $\Sigma_{tot}$的定义完全源自模块化Q的原始展开,是为了简化社区层面的贡献计算而引入的符号,代表社区内所有节点的总度数之和。
- ΔQ的表达式是通过计算节点移动前后社区贡献的差值,经过代数化简后得到的,所有符号都能直接追溯到最初的Q定义。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

