私は元の関数からご媒介中心を取得する簡単な方法があるとは思わない(少なくとも私には) マティアス。それを得る簡単な方法の1つは、自分で関数を実装することです。例を下に見てください。この例は、グラフが大きすぎない場合にのみ有効です(120個の頂点を持つグラフの場合、計算に9秒かかります)。
import networkx as nx
def bc(G):
vertices = G.nodes()
new_bc = {}
paths = defaultdict(dict)
# Get shortest paths between all pairs of vertices
for i, vertex in enumerate(vertices[:-1]):
for o_vertex in vertices[i+1:]:
paths[vertex][o_vertex] = [path for path in
nx.all_shortest_paths(G, vertex, o_vertex)]
for vertex in vertices:
counter = 0
for i, vertex1 in enumerate(vertices[:-1]):
for vertex2 in vertices[i+1:]:
for path in paths[vertex1][vertex2]:
if vertex in path[1:-1]:
counter += 1
new_bc[vertex] = counter
return new_bc
場合bc[node]
場合node
通過G
における最短経路の数。
グラフは接続されていますか? – rodgdor
ありがとうございます。はい、私のグラフは接続されており、また無向です。 – Brayn
'len(g.all_shortest_paths())'で中央値を掛けて、正規化を取り消してください。 – Paul