集聚系数

在图论中，集聚系数（也称群聚系数、集群系数）是用来描述一个图中的顶点之间结集成团的程度的系数。具体来说，是一个点的邻接点之间相互连接的程度。例如生活社交网络中，你的朋友之间相互认识的程度。有证据表明，在各类反映真实世界的网络结构，特别是社交网络结构中，各个结点之间倾向于形成密度相对较高的网群。也就是说，相对于在两个节点之间随机连接而得到的网络，真实世界网络的集聚系数更高。

集聚系数分为整体与局部两种。整体集聚系数可以给出一个图中整体的集聚程度的评估，而局部集聚系数则可以测量图中每一个结点附近的集聚程度。

## 基础概念

集聚系数主要是描述图（或者称为网络）的特性。一个图 G 是由一些顶点 V 和顶点与顶点之间的一些连线（称为边）E 构成。两个相连的顶点也称为邻接点。比如在一群人中，将每个人用一个点表示，如果两人之间认识，就将对应的两点连起来。这样就构成了一个图。有的图是有方向的，比如在同样一群人中，如果一人甲欠另一人乙的钱，就连一条从甲至乙的线，这样就构成了一个有向图。

## 整体集聚系数

整体集聚系数的定义建立在闭三点组（邻近三点组）之上。假设图中有一部分点是两两相连的，那么可以找出很多个“三角形”，其对应的三点两两相连，称为闭三点组。除此以外还有开三点组，也就是之间连有两条边的三点（缺一条边的三角形）。这两种三点组构成了所有的连通三点组。整体集聚系数定义为一个图中所有闭三点组的数量与所有连通三点组（无论开还是闭）的总量之比（也有定义为这个值的三倍，使得在完全图中的整体集聚系数等于1）。最早尝试测量这个系数是在1949年罗伯特·邓肯·路斯和阿尔伯特·D·佩里合作的一篇论文中。

假设有图$G=(V,E)$，其中$V=\left\{v_1, v_2, \cdots, v_n \right\}$表示顶点的集合，$E = \left\{e_{ij} : (i, j) \in S \subset \left[ 1, \cdots , n \right]^2 \right\}$表示边的集合（$e_{ij}$ 表示连接顶点 $v_i$ 和 $v_j$ 的边）。

每一个顶点连接的顶点有多有少，用 L(i) 表示与顶点 $v_i$ 相连的边的集合：

$$L(i) = \left\{ v_j : e_{ij} \in E \land e_{ji} \in E \right\}$$

L(i) 里的边的数量就是顶点 $v_i$ 的度，记作 $k_i$：$k_i = |L(i)|$。

如果用 $C_{total}(G)$ 表示整体集聚系数，用 $G_{\triangle}$ 表示图中闭三点组的个数，$G_{\land}$ 表示其中开三点组的个数，那么：

$$C_{total}(G) = \frac{3 \times G_{\triangle} }{3 \times G_{\triangle} + G_{\land} }$$

使用 $k_i$ 来表示的话，也可以写成：

$C_{total}(G) = \frac{3 \times G_{\triangle} }{\sum_{i=1}^n \binom{k_i}{ 2}}$

## 局部集聚系数

<image>

对图中具体的某一个点，它的局部集聚系数 $C(i)$ 表示与它相连的点抱成团（完全子图）的程度。邓肯·J·瓦兹与斯蒂芬·斯特罗加茨在1998年发表的一篇论文中首次引入了这个概念，用以判别一个图是否是小世界网络。

图中的一个顶点 $v_i$ 的局部集聚系数 $C(i)$ 等于所有与它相连的顶点之间所连的边的数量，除以这些顶点之间可以连出的最大边数。一般来说，对于无向图，这个最大边数等于 $\scriptstyle \frac{k_i(k_i - 1)}{2}$；对于有向图，由于每两个顶点之间可以连两条边（不同方向），最大边数等于 $k_i(k_i - 1)$。这时候的 $k_i$ 表示的是指向顶点 $v_i$ 的边与从顶点 $v_i$ 指出去的边的总数。同时，对于有向图，要注意边 $e_{ij}$ 与边 $e_{ji}$ 是不一样的。

用数学公式表达的话，无向图中一顶点 $v_i$ 的局部集聚系数是：

$$C(i) = \frac{2 \Big | \Big \{ e_{jk} : v_j,v_k \in L(i), e_{jk} \in E \Big \} \Big | }{k_i(k_i-1)} .$$

因为边 $e_{ij}$ 和边 $e_{ji}$ 指的是同一条边。有向图中一顶点 $v_i$ 的局部集聚系数是：

$$C(i) = \frac{ \Big | \Big \{ e_{jk} : v_j,v_k \in L(i), e_{jk} \in E \Big \} \Big | }{k_i(k_i-1)}.$$

在无向图 $G$ 中，如果设一个顶点 $v_i \in V$ 的相连闭三角数为$\lambda_G(v_i)$，也就是 $G$ 中所有的包括了 $v_i$ 的闭三点组（三点中连有三条边）的数目；再设 $v_i$ 的相连开三角数为 $\tau_G(v_i)$，也就是 $G$ 中所有的包括了 $v_i$，并且满足两条边都与 $v_i$ 相连的开三点组（三点中恰好连有两条边）。这时，顶点 $v_i$ 的局部集聚系数也可以表示为：

$$C(i) = \frac{\lambda_G(v_i)}{\tau_G(v_i) + \lambda_G(v_i)}.$$

很容易证明两种表示方法是等价的。实际上，计算 $\lambda_G(v_i)$ 时候的每一个闭三点组，除 $v_i$ 外的另外两点都是 $v_i$ 的邻接点，并且他们相连。计算 $\tau_G(v_i)$ 时候的每一个开三点组，除 $v_i$ 外的另外两点也都是 $v_i$ 的邻接点，并且他们不相连。所以：

$$\tau_G(v_i) + \lambda_G(v_i) = C({k_i},2) = \frac{1}{2}k_i(k_i-1).$$

可以看出，一个顶点 $v_i$ 的局部集聚系数 $C(i)$ 总是在0与1之间。$C(i)$ 越接近1，表示 $v_i$ 的“邻居”们越是“抱成一团”，接近完全图。$C(i)$ 越接近0，说明它的邻居们“老死不相往来”，整个结构接近树状。

## 平均集聚系数

知道了一个图里的每一个顶点的局部集聚系数后，可以计算整个图的平均集聚系数。这个概念也是瓦兹和斯特罗加兹在1998年的论文中引入的，具体来说就是所有顶点的局部集聚系数的算术平均数：

$$\bar{C} = \frac{1}{n}\sum_{i=1}^{n} C(i).$$

平均集聚系数与整体集聚系数都是衡量一个图在整体上的集聚程度。事实上，两者的区别在于：

$$\bar{C} = \frac{1}{n}\sum_{i=1}^{n} C(i) = \frac{1}{n}\sum_{i=1}^{n} \frac{\lambda_G(v_i)}{\tau_G(v_i) + \lambda_G(v_i)}$$

而$C_{total}(G) = \frac{\sum_{i=1}^{n} \lambda_G(v_i)}{\sum_{i=1}^{n}\left( \tau_G(v_i) + \lambda_G(v_i) \right)}$

一个图（或称为网络）被叫做小世界网络，如果它的平均集聚系数远大于一个在同样的顶点集合上构造的随机图的平均集聚系数，并且它的平均最短路径长度和这种随机图基本相同。

在更为广泛的加权网络和二部图中，也可以引进类似于集聚系数的概念。