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
我不认为有一种直接的方法可以从原始函数中获得中间性中心性(至少对我来说不是这样)。获得它的一个简单方法是自己实现一个函数。下面是一个例子。这个例子只有在你的图不是太大的情况下才是有效的(对于一个有120个顶点的图,计算需要大约9秒)。在
其中
bc[node]
如果G
中经过node
的最短路径数。在相关问题 更多 >
编程相关推荐