betweenness_centrality_subset#

betweenness_centrality_subset(G, sources, targets, normalized=False, weight=None)[source]#

计算节点子集的介数中心性。

\[c_B(v) =\sum_{s\in S, t \in T} \frac{\sigma(s, t|v)}{\sigma(s, t)}\]

其中 \(S\) 是源节点集合,\(T\) 是目标节点集合, \(\sigma(s, t)\)\((s, t)\) 最短路径的数量, \(\sigma(s, t|v)\) 是通过某个节点 \(v\) 的路径数量,且 \(v\) 不是 \(s\)\(t\)。 如果 \(s = t\),则 \(\sigma(s, t) = 1\), 如果 \(v \in {s, t}\),则 \(\sigma(s, t|v) = 0\) [2]。

Parameters:
G

一个 NetworkX 图。

sources: 节点列表

用于介数中心性中最短路径的源节点。

targets: 节点列表

用于介数中心性中最短路径的目标节点。

normalized布尔值, 可选

如果为 True,介数中心性值通过 \(2/((n-1)(n-2))\) 进行归一化 对于图,和 \(1/((n-1)(n-2))\) 对于有向图,其中 \(n\) 是 G 中的节点数。

weightNone 或 字符串, 可选 (默认=None)

如果为 None,所有边的权重视为相等。 否则,包含用作权重的边属性的名称。 权重用于计算加权最短路径,因此它们被解释为距离。

Returns:
nodes字典

包含节点及其介数中心性值的字典。

Notes

基本算法来自 [1]。

对于加权图,边权重必须大于零。 零边权重可能导致成对节点之间存在无限数量的等长路径。

归一化可能看起来有点奇怪,但其设计目的是使 betweenness_centrality(G) 与 betweenness_centrality_subset(G,sources=G.nodes(),targets=G.nodes()) 相同。

源和目标之间的路径总数在有向图和无向图中计算方式不同。 有向路径的计算很简单。无向路径的计算则较为复杂: 从 “u” 到 “v” 的路径应计为 1 条无向路径还是 2 条有向路径?

对于 betweenness_centrality,当 G 是无向图时,我们报告无向路径的数量。

对于 betweenness_centrality_subset,报告方式不同。 如果源和目标子集相同,则我们希望计算无向路径。 但如果源和目标子集不同——例如,如果源是 {0} 而目标是 {1}, 那么我们只计算一个方向的路径。它们是无向路径,但我们以有向方式计算它们。 为了将它们计为无向路径,每条路径应计为半条路径。

References

[1]

Ulrik Brandes, A Faster Algorithm for Betweenness Centrality. Journal of Mathematical Sociology 25(2):163-177, 2001. https://doi.org/10.1080/0022250X.2001.9990249

[2]

Ulrik Brandes: On Variants of Shortest-Path Betweenness Centrality and their Generic Computation. Social Networks 30(2):136-145, 2008. https://doi.org/10.1016/j.socnet.2007.11.001