下面是使用Python 2.7在networkx中创建一个非常简单的图形的代码,其中调用返回betweenness_centrality:
theCount
我希望看到权重基本上是分配的,但权重都是零:
{1:0.0,2:0.0,3:0.0}
我显然遗漏了一些简单的东西,并且无法从在线文档中看到它是什么。谢谢。
答案 0 :(得分:1)
networkx.betweenness_centrality()
的默认值(可以说是标准定义)不包括计算端点。因此,使用K3图表,每个节点的中介性为0.如果要计算端点,请使用
In [1]: import networkx as nx
In [2]: G = nx.Graph()
In [3]: G.add_nodes_from([1,3])
In [4]: G.add_edge(1,2)
In [5]: G.add_edge(2,3)
In [6]: G.add_edge(1,3)
In [7]: G[1][2]['weight']=4400
In [8]: G[2][3]['weight']=4100
In [9]: G[1][3]['weight']=1500
In [10]: print(nx.betweenness_centrality(G,weight='weight',endpoints=True))
{1: 2.0, 2: 2.0, 3: 2.0}
请注意'重量' attribute用于查找最短路径,而不是直接在中介分数中计算。例如,循环中的非对称路径:
In [1]: import networkx as nx
In [2]: G = nx.cycle_graph(4)
In [3]: nx.set_edge_attributes(G,'weight',1)
In [4]: print(nx.betweenness_centrality(G,weight='weight'))
{0: 0.16666666666666666, 1: 0.16666666666666666, 2: 0.16666666666666666, 3: 0.16666666666666666}
In [5]: G[0][1]['weight']=5
In [6]: print(nx.betweenness_centrality(G,weight='weight'))
{0: 0.0, 1: 0.0, 2: 0.6666666666666666, 3: 0.6666666666666666}