2016-07-03 25 views
1

ProblemAdjazenzmatrix muss symmetrisch sein

Ich mag einen ungerichteten Graphen von meiner Kantenliste erstellen. Aber wie meine Edgeliste ist kein dichtes Doppel-Array. Ich verarmte alle Kantenverbindungen enthalten Nullen, aber ich denke, das Problem ist, dass die Kantenliste nicht konstant ist, ist dies der Beginn meiner Kantenliste:

Edgelist= 
    10965 10879 
    10965 10962 
    10965 10966 
    10965 10967 
    11382 11360 
    11382 11381 
    11382 11384 
    11382 11553 
    11383 11380 
    11383 11381 
    11383 11384 
    11383 11389 

Also versuche ich, eine Adjazenzmatrix zu schaffen, in der Hoffnung, zu versuchen, die source is not a dense double array Fehler

-Code zu verhindern ich

EdgeList=unique(EdgeList,'rows'); 
    sz = max(EdgeList(:)); 
    A = sparse(EdgeList(:,1), EdgeList(:,2), 1, sz, sz); 
    G=graph(A); 

Jetzt benutze ich den nächsten Fehler bekommen

Adjazenzmatrix muss symmetrisch sein.

Ich habe keine Ideen mehr, wie man aus solch einem Datensatz ein Diagramm erstellt, kann mir jemand helfen?

Antwort

3

Sie müssen Ihre Adjazenzmatrix symmetrisch sein schaffen, wie er sagt, denn wenn 2-3 benachbart ist: A(3,2) == 1: A(2,3) == 1, dann 3 muss auch 2 angrenzen. Sie haben Ihre Adjacency-Matrix so konstruiert, dass Sie für jede Kante nur eine einseitige Beziehung haben.

Sie können dies korrigieren, indem Sie entweder auf die andere Säule von EdgeList an jedem der Eingänge zu sparse anhängt:

A = sparse([EdgeList(:,1); EdgeList(:,2)], [EdgeList(:,2); EdgeList(:,1)], 1); 

Alternativ können Sie Ihre A transponieren und es mit der ersten Version von A kombinieren, um eine logische Verwendung oder (|) um es zu zwingen, symmetrisch zu sein.

A = A.' | A;