2017-04-05 241 views
0

我創建了一個圖表,我運行pagerank。我已經測試了有向圖和無向圖,但我很難理解我所看到的。networkx python,有向/無向圖,不一致的節點和邊緣?

我有一個代碼塊看起來象下面這樣:

G= nx.DiGraph() #option 1 
#G= nx.Graph() #option 2 
[inside a for loop] 
    G.add_edge(node, another_node) 
print("Graph size {} {}".format(len(G.nodes()), len(G.edges()))) 

[then code to run pagerank...] 

正如你所看到的,我嘗試這兩種有向圖(有向圖)和無向圖(圖表)。對於這兩者,我都經歷同一個循環,即在同一組(node,another_node)對上調用add_edge相同的次數。

然後我打印結果圖上的節點和邊的數量。但是,這是困擾我的一條線。因爲對於DiGraph和Graph,我看到不同的輸出:

使用選項1時,有10107個節點和1350222條邊。 使用選項2時,有10107個節點和1268064個邊。

我知道理解一致性。這是正常的還是可能是錯的?

謝謝

回答

1

無向圖中的邊沒有方向。從A到B和從B到A的邊緣被認爲是重複的。 add_edge()默默忽略重複。這就是爲什麼你的無向圖有一個邊(A,B)或(B,A),其中有向圖有兩條邊(A,B)和(B,A)。

+0

我看,非常感謝! – Ziqi