2012-02-15 3 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] 

私が手にエラーがある: グラフ::サップ:混合グラフやmultigraphsがサポートされていません。

私のリストには「適切な」重複がありません。表示される重複の唯一のタイプは1-> 2および2-> 1です。 私はこれらの "重複"を私のリストから削除する方法を知りたいと思います。

答えて

4

AdjacencyGraph[]を使用すると、隣接行列をGraphに直接変換できます。あなたの行列は、0と1以外の要素が含まれている場合

を使用し、無向グラフのエッジリストから重複をフィルタリングするに

[email protected][data] 

を使用し、

AdjacencyGraph[data] 

:これはおそらく最も簡単な解決策であります

Union[Sort /@ edgeList] 
+0

私が使用しているのは隣接行列ではなく、より多くのリストです。 1-> 2 1-> 4 2-> 1 2-> 5など... – Julia

+0

@Julia、「Union [Sort/@ edgeList]」は必要なものです。 – Nakilon