communicability_betweenness_centrality#

communicability_betweenness_centrality(G)[source]#

返回 G 中所有节点对的子图可传播性。

可传播性介数度量使用连接每对节点的漫步数量作为介数中心性度量的基础。

参数:
G: 图
返回:
nodes字典

一个字典,其键是节点,值是可传播性介数。

引发:
NetworkXError

如果图不是无向简单图。

注意

G=(V,E) 是一个有 n 个节点和 m 条边的无向简单图,A 表示 G 的邻接矩阵。

G(r)=(V,E(r)) 是移除连接到节点 r 的所有边(但不移除节点本身)后得到的图。

G(r) 的邻接矩阵是 A+E(r),其中 E(r) 仅在第 r 行和第 r 列有非零元素。

节点 r 的子图介数为 [1]

\[\omega_{r} = \frac{1}{C}\sum_{p}\sum_{q}\frac{G_{prq}}{G_{pq}}, p\neq q, q\neq r,\]

其中 G_{prq}=(e^{A}_{pq} - (e^{A+E(r)})_{pq} 是涉及节点 r 的漫步数量,G_{pq}=(e^{A})_{pq} 是从节点 p 开始到节点 q 结束的封闭漫步数量,C=(n-1)^{2}-(n-1) 是一个归一化因子,等于求和项的数量。

结果 omega_{r} 的取值在零到一之间。对于连通图来说,下界无法达到,上界在星形图中达到。

参考文献

[1]

Ernesto Estrada, Desmond J. Higham, Naomichi Hatano, “复杂网络中的可传播性介数” Physica A 388 (2009) 764-774. https://arxiv.org/abs/0905.4102

示例

>>> G = nx.Graph([(0, 1), (1, 2), (1, 5), (5, 4), (2, 4), (2, 3), (4, 3), (3, 6)])
>>> cbc = nx.communicability_betweenness_centrality(G)
>>> print([f"{node} {cbc[node]:0.2f}" for node in sorted(cbc)])
['0 0.03', '1 0.45', '2 0.51', '3 0.45', '4 0.40', '5 0.19', '6 0.03']