手动计算与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




