2016-08-01 10 views
1

Im Folgenden finden Sie Code ein sehr einfaches Diagramm in NetworkX mit Python 2.7 mit einem Aufruf erstellen betweenness_centrality zurückzukehren:Unerwartete Ergebnisse mit betweenness_centrality

import networkx as nx 
G = nx.Graph() 
G.add_nodes_from([1,3]) 
G.add_edge(1,2) 
G.add_edge(2,3) 
G.add_edge(1,3) 
G[1][2]['weight']=4400 
G[2][3]['weight']=4100 
G[1][3]['weight']=1500 
print nx.betweenness_centrality(G,weight='weight') 

Ich erwartete Gewicht im Wesentlichen zu sehen, wie zugeordnet, aber die Gewichte sind all Null :

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

ich klar bin fehlt etwas einfach und kann nicht sehen, was sie von der online-Dokumentation. Vielen Dank.

Antwort

1

Der Standardwert für networkx.betweenness_centrality() (und wohl die Standarddefinition) beinhaltet nicht das Zählen der Endpunkte. So mit dem K3 Graph ist die Between auf jedem Knoten 0. Wenn Sie Endpunkte

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} 

Hinweis verwenden zählen mögen, dass das ‚Gewicht‘ Attribut verwendet wird, den kürzesten Weg zu finden und nicht direkt in der Between Punktzahl gezählt. Zum Beispiel mit unsymmetrischen Pfaden in einer Schleife:

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} 
Verwandte Themen