我尝试在此简单图中为从2到6的路径计算所有节点的中间性。
G=nx.Graph()
edge=[(1,5),(2,5),(3,5),(4,5),(4,6),(5,7),(7,6)]
G.add_edges_from(edge)
btw=nx.betweenness_centrality_subset(G,[2],[6])
Run Code Online (Sandbox Code Playgroud)
但是结果是:
{1: 0.0, 5: 0.5, 2: 0.0, 3: 0.0, 4: 0.25, 6: 0.0, 7: 0.25}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么节点5的中间度为0.5而应该为1,因为总的最短路径数为2,并且两者都包括5,而节点4和7应该为0.5
它看起来像一个错误。
这是我的猜测。该错误似乎来自_rescale函数。此处,如果图形是间接的,则计算值将乘以 0.5。
由于通常一个节点被考虑两次(为图中的每个节点betweenness_centrality计算最短路径),因此这是没有必要的,因为仅针对源节点计算最短路径。betweenness_centrality_sub
例子:
nx.betweenness_centrality_subset(G,[2,6],[2,6])
# {1: 0.0, 5: 1.0, 2: 0.0, 3: 0.0, 4: 0.5, 6: 0.0, 7: 0.5}
Run Code Online (Sandbox Code Playgroud)
所以,如果我的猜测是正确的,你只需要将计算结果乘以 2 即可。