You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

手动计算与NetworkX工具计算Brandes介数中心性结果不一致的原因咨询

手动计算与NetworkX工具计算Brandes介数中心性结果不一致的原因咨询

我有一个无向带权图:

无向带权图

我手动计算了每个节点的介数中心性,结果如下:

1 - 0
2 - 1.5
3 - 0
4 - 3
5 - 2

手动计算的过程可参考下图:
手动计算过程

之后我使用NetworkX的带权介数中心性算法进行了计算,代码如下:

import networkx as nx

G = nx.Graph()

adj_matrix = [
    [0, 4, 0, 0, 1],
    [4, 0, 3, 1, 0],
    [0, 3, 0, 4, 0],
    [0, 1, 4, 0, 2],
    [1, 0, 0, 2, 0],
]

for i in range(len(adj_matrix)):
    for j in range(len(adj_matrix[i])):
        if adj_matrix[i][j] != 0:
            G.add_edge(i, j, weight=adj_matrix[i][j])

betweenness = nx.centrality.betweenness_centrality(G, k=None, normalized=False, weight="weight", endpoints=False, seed=None)
print(betweenness)

得到的结果和手动计算略有差异:

1 - 0
2 - 1.667
3 - 0
4 - 3.167
5 - 2.167

为什么这两个结果会不一样呢?我尝试过在程序中改用直接计算delta值的方式,而不是递归公式,但结果还是有差异。

备注:内容来源于stack exchange,提问作者CityOS

火山引擎 最新活动