基于群组的社区发现,我们通常并不使用最小割来进行社区发现,而是倾向于发现大小均衡的社区。下图的最小割A切割后很不均衡,相比而言,割C更均衡一些。
对最小割的改进
设图G(V,E)分割成了k部分 P = ( P 1 , P 2 , P 3 , . . . , P k ) P=(P_1,P_2,P_3,...,P_k) P=(P1,P2,P3,...,Pk),改进的最小割方法目标方程:
比例割 ( P ) = 1 k Σ i = 1 k c u t ( P i , P ˉ i ) ∣ P i ∣ (P)=\frac 1k\Sigma_{i=1}^k\frac{cut(P_i,\bar P_i)}{|P_i|} (P)=k1Σi=1k∣Pi∣cut(Pi,Pˉi)
归一化割 ( P ) = 1 k Σ i = 1 k c u t ( P i , P ˉ i ) v o l ( P i ) (P)=\frac 1k\Sigma_{i=1}^k\frac{cut(P_i,\bar P_i)}{vol(P_i)} (P)=k1Σi=1kvol(Pi)cut(Pi,Pˉi)
其中 P ˉ i \bar P_i Pˉi是 P i P_i Pi的补集, c u t ( P i , P ˉ i ) cut(P_i,\bar P_i) cut(Pi,Pˉi)表示割的大小, v o l ( P i ) vol(P_i) vol(Pi)是 P i P_i Pi中所有结点的度的总和。
用矩阵形式进行公式化。设矩阵 X ∣ V ∣ ∗ k X_{|V|*k} X∣V∣∗k代表社区关系矩阵,如果结点 i i i在社区中,则 X i , j = 1 X_{i,j}=1 Xi,j=1。矩阵 X T A X {X^TAX} XTAX对角线上的第 i i i个元素代表社区 i i i内部的边的数量。 D = d i a g [ d 1 , d 2 , . . . , d 3 ] D=diag[d_1,d_2,...,d_3] D=