社会网络分析中的社区发现

Newman快速社区发现算法: FastCommunity算法
论文中的公式不是太好懂,这里详细描述一下:
Q的具体公式为:

目标函数:
MAX       Q   =   求和{ dki/2m - ((dki+dko)/2m) ^ 2   }           ( k= 1...x    
x为分得的社区个数

dki -社区k内部的所有点的度数和
dko -社区k边界向外部的度数和,也可以说是社区k的邻接度和。
m -图中所有边数和
2m -图中所有点的度数和。

==================
比如:
$ cat in1.wpairs
1 2 1
3 4 1
2 3 1
4 5 1
5 6 1

运行结果为:
 scanning input file for basic information.
  edgecount: [0]
  edgecount: [5] total (first pass)
 allocating space for network.
 reparsing the input file to build network data structure.
  edgecount: [0]
  edgecount: [5] total (second pass)
  totweight: [5]

now building initial dQ[]
starting algorithm now.
************ hsize = 6
Q[0] = -0.18    dQ = 0.16         |H| = 5
  join: 2 -> 3  (1 -> 2)
Q[1] = -0.02    dQ = 0.16         |H| = 4
  join: 7 -> 6  (1 -> 2)
Q[2] = 0.14     dQ = 0.12         |H| = 3
  join: 4 <- 5  (2 <- 2)
Q[3] = 0.26     dQ = -0.04        |H| = 2
  join: 4 <- 3  (2 <- 1)
Q[4] = 0.22
exited safely

那么最大模块性Q的聚合划分状态为:
1——2—— 3——4—— 5——6
最大模块性 Q[3] = (2/10 - (3/10)^2) *2  +   (2/10 - (4/10)^2)  = 26/100 = 0.26
社会网络分析中的社区发现_第1张图片

你可能感兴趣的:(Algorithm,JOIN,算法,网络,input,NetWork)