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)
是v
和u
之间的最短路径距离,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}