closeness_centrality#

closeness_centrality(G, u=None, distance=None, wf_improved=True)[源代码]#

计算节点的紧密度中心性。

节点 u 的紧密度中心性 [1] 是到达 u 的平均最短路径距离对于所有 n-1 个可达节点的倒数。

\[C(u) = \frac{n - 1}{\sum_{v=1}^{n-1} d(v, u)},\]

其中 d(v, u)vu 之间的最短路径距离,n-1 是从 u 可达的节点数量。请注意,对于有向图,紧密度距离函数计算到达 u 的入向距离。要使用出向距离,请对 G.reverse() 进行操作。

请注意,紧密度值越高表示中心性越高。

Wasserman 和 Faust 提出了一个改进的公式用于具有多个连通分量的图。结果是“可达的组内节点比例与从可达节点到该节点的平均距离之比” [2]。您可能认为此缩放因子被倒置了,但事实并非如此。照此,来自小型分量的节点会获得较小的紧密度值。令 N 表示图中的节点总数,

\[C_{WF}(u) = \frac{n-1}{N-1} \frac{n - 1}{\sum_{v=1}^{n-1} d(v, u)},\]
参数
G

一个 NetworkX 图

u节点,可选

仅返回节点 u 的值

distance边属性键,可选 (默认为 None)

在最短路径计算中使用指定的边属性作为边距离。如果为 None (默认值),则所有边的距离均为 1。缺失的边属性被赋予距离 1。注意,不执行检查以确保边具有提供的属性。

wf_improved布尔值,可选 (默认为 True)

如果为 True,则按可达节点的分数进行缩放。这给出了 Wasserman 和 Faust 的改进公式。对于单个连通分量的图,它与原始公式相同。

返回
nodes字典

以紧密度中心性为值的节点字典。

注意

紧密度中心性被标准化为 (n-1)/(|G|-1),其中 n 是包含该节点的图连通部分的节点数量。如果图未完全连通,则此算法会分别计算每个连通部分的紧密度中心性,并按该部分的大小进行缩放。

如果 'distance' 关键字设置为边属性键,则最短路径长度将使用 Dijkstra 算法计算,并将该边属性作为边权重。

紧密度中心性使用到达节点的*入向*距离,而不是出向距离。如果您想使用出向距离,请将函数应用于 G.reverse()

在 NetworkX 2.2 及更早版本中,一个 bug 导致 Dijkstra 算法使用了出向距离而非入向距离。如果您使用 'distance' 关键字和 DiGraph,您的结果将在 v2.2 和 v2.3 之间发生变化。

参考文献

[1]

Linton C. Freeman: Centrality in networks: I. Conceptual clarification. Social Networks 1:215-239, 1979. https://doi.org/10.1016/0378-8733(78)90021-7

[2]

摘自 Wasserman, S. 和 Faust, K. 的著作 Social Network Analysis: Methods and Applications,1994 年,Cambridge University Press,第 201 页。

示例

>>> G = nx.Graph([(0, 1), (0, 2), (0, 3), (1, 2), (1, 3)])
>>> nx.closeness_centrality(G)
{0: 1.0, 1: 1.0, 2: 0.75, 3: 0.75}