介数中心性#

betweenness_centrality(G, k=None, normalized=True, weight=None, endpoints=False, seed=None)[源代码]#

计算节点的基于最短路径的介数中心性。

节点 \(v\) 的介数中心性是所有节点对之间通过 \(v\) 的最短路径比例之和

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

其中 \(V\) 是节点集合,\(\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]

参数:
G

一个 NetworkX 图。

kint, 可选 (默认=None)

如果 k 不是 None,则使用 k 个节点样本来估计介数。k 的值必须小于等于图中的节点数 n。值越大,近似效果越好。

normalizedbool, 可选

如果为 True,对于无向图,介数值将除以 2/((n-1)(n-2)) 进行归一化;对于有向图,介数值将除以 1/((n-1)(n-2)) 进行归一化,其中 n 是图 G 中的节点数。

weightNone 或 string, 可选 (默认=None)

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

endpointsbool, 可选

如果为 True,则在最短路径计数中包含端点。

seedinteger, random_state, 或 None (默认)

随机数生成状态的指示器。参见随机性。请注意,这仅在 k 不是 None 时使用。

返回:
nodes字典

节点的字典,其值是介数中心性。

注意

该算法来自 Ulrik Brandes [1]。关于最初发布的版本详见 [4],关于变体和相关度量的算法详情详见 [2]

对于近似介数计算,将 k 设置为 #样本,使用 k 个节点(“枢轴”)来估计介数值。关于所需枢轴数量的估计,请参见 [3]

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

对于有向图和无向图,源节点和目标节点之间的路径总数计算方式不同。有向路径很容易计算。无向路径比较复杂:从“u”到“v”的路径应该算作 1 条无向路径还是 2 条有向路径?

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

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

如果边的权重是浮点数,该算法不能保证正确性。一种变通方法是,可以将相关的边属性乘以一个合适的常数因子(例如 100)并转换为整数,从而使用整数权重。

参考文献

[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] (1,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

[3]

Ulrik Brandes and Christian Pich: Centrality Estimation in Large Networks. International Journal of Bifurcation and Chaos 17(7):2303-2318, 2007. https://dx.doi.org/10.1142/S0218127407018403

[4]

Linton C. Freeman: A set of measures of centrality based on betweenness. Sociometry 40: 35–41, 1977 https://doi.org/10.2307/3033543


其他后端实现此函数

cugraphGPU加速后端。

weight 参数尚未支持,并且带种子的 RNG 可能不同。

parallel一个使用 joblib 并行运行图算法的 networkx 后端。在此处找到 nx-parallel 的配置指南 here

并行计算通过将节点分成块并同时计算每个块的介数中心性来实现。

附加参数
get_chunksstr, function (默认 = “chunks”)

一个函数,接受所有节点的列表作为输入,并返回一个可迭代的 node_chunks。默认的分块是通过将 nodes 切片成 n_jobs 个块来完成的。

[源代码]