interness_centrality意外的结果

时间:2016-08-01 17:41:20

标签: python networkx

下面是使用Python 2.7在networkx中创建一个非常简单的图形的代码,其中调用返回betweenness_centrality:

theCount

我希望看到权重基本上是分配的,但权重都是零:

{1:0.0,2:0.0,3:0.0}

我显然遗漏了一些简单的东西,并且无法从在线文档中看到它是什么。谢谢。

1 个答案:

答案 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}