2015-06-28 46 views
0

在igraph中,我發現了兩種不同的將圖轉換爲無向圖的方法:
第一種是to_undirected,它簡單地將'有向圖轉換爲無向圖'。第二個是as_undirected,它在副本上調用to_undirected
igraph to_undirected()方法類似於NetworkX

在NetworkX中,我發現只有單一方法to_undirected,它只是創建圖的無向深拷貝。問題是我真的找不到類似於igraph中第一個的方法。是否有任何解決方案可以在不使用NetworkX創建副本的情況下轉換圖形

回答

2

正如您所述,networkx.to_undirected會創建圖形的深層副本。這意味着它會複製邊緣,節點和圖形屬性字典。要創建有向圖g的無向淺拷貝,可以寫成:

g = networkx.Graph(g) 

這仍然是一個副本,但淺在其中的屬性字典是不深複製。

似乎沒有方法將DiGraph轉換爲Graph就地。儘可能多的做法意味着改變對象的類型 - 簡單地做一個淺拷貝可能更簡潔,而且價格也不那麼昂貴。