2012-02-15 92 views
1

我想從鄰接列表生成一個圖形,但是Mathematica不想繪製我的圖形,因爲我認爲有多個邊緣。 這是我的腳本:Mathematica:重複的邊緣

Needs["GraphUtilities`"] 
data = Import["adj_matrix.txt", "Table"]; 
data2 = Flatten[Table[{data[[i, 1]] \[UndirectedEdge] data[[i, 2]]}, {i, 1, 
    Length[data]}]]; 
graph1 = Graph[data2] 

我得到的錯誤是: 圖::增刊:混合圖形和多重圖不被支持。

我的列表中沒有任何「正確的」重複項,唯一出現的重複項類型是1-> 2和2-> 1。 我想知道如何從列表中刪除這些「重複項」。

回答

4

您可以使用AdjacencyGraph[]直接將鄰接矩陣轉換爲Graph。這可能是最簡單的解決方案:

AdjacencyGraph[data] 

如果矩陣包含其他元素比0和1,使用

[email protected][data] 

要從無向圖的邊列表濾除重複,使用

Union[Sort /@ edgeList] 
+0

我使用的不是鄰接矩陣,而是更多的列表。它看起來像這樣: 1-> 2 1-> 4 2-> 1 2-> 5 etc ... – Julia 2012-02-15 21:12:18

+0

@Julia,Union [Sort/@ edgeList]是你需要的。 – Nakilon 2013-06-16 18:06:19