2012-02-15 4 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으로 직접 변환 할 수 있습니다. 이것은 아마도 가장 간단한 해결책이다하여 행렬 0과 1 이외의 원소가 포함되어있는 경우

AdjacencyGraph[data] 

,

[email protected][data] 

는 무향 그래프의 에지리스트로부터 중복 걸러 사용 사용할

Union[Sort /@ edgeList] 
+0

내가 사용하고있는 것은 인접성 매트릭스가 아니라 더 많은 목록입니다. 1-> 2 1-> 4 2-> 1 2-> 5 ... – Julia

+0

@Julia, 'Union [Sort/@ edgeList]'는 필요한 것입니다. – Nakilon

관련 문제