2014-05-11 22 views
5

Dla poniżej podanej macierzy, jak może być reprezentowany jako niezorientowany ważony wykres G (V, E, W), gdzie V jest zbiorem wierzchołków, E to zestaw krawędzi i W to zestaw wag.Jak reprezentować matrycę przyległości jako niezaokreślony wykres ważony w programie Matlab?

4  2  3  1  4 
    2  2  3  1  4 
    2  3  3  1  4 
    1  2  3  1  4 
    4  2  3  1  5 

kod źródłowy próbowałem:

%table2 is given matrix 
bg = biograph(table2,[],'ShowArrows','off','ShowWeights','on'); 
h = view(bg); 

Czy to właściwa droga do reprezentowania nieukierunkowane wykres ważonej dla mojej macierzy Iam coraz 2 krawędzie między 2 verteces.Just sam jak ten

enter image description here?

Mam to wyjście dla sugerowanego kodu enter image description here

Mam 2 macierze przylegania. Muszę wykonać poniżej 2 operacje:

1. Muszę wykonać 2 wykresy z tych 2 macierzy sąsiedztwa.

2.Później muszę dopasować wierzchołki 2 wykresów w zależności od masy krawędzi na wykresie.

4  2  3  1  4 
    2  2  3  1  4 
    2  3  3  1  4 
    1  2  3  1  4 
    4  2  3  1  5 

4  1  3  2  4 
1  1  2  3  4 
3  1  3  2  4 
2  1  3  2  4 
4  1  3  2  5 

Sposób iam będzie to dobrze, czy źle? Proszę zasugerować mi

+0

Co otrzymasz, gdy go wypróbujesz? A jeśli chcesz mieć ważony wykres, dlaczego masz "ShowWeights", "off''? –

+0

Przepraszamy za "ShowWeights", "na" – prashanth

+0

Iam uzyskanie 2 krawędzie między tym samym 2 wierzchołki. – prashanth

Odpowiedz

5

Aby dostać tylko jedną krawędź między każdego wierzchołka, trzeba tylko chcieć trójkątnej macierzy.

Jeśli próbujesz coś takiego:

table1 = (table2 + table2') - triu((table2 + table2')) 
table1 = 
    0  0  0  0  0 
    4  0  0  0  0 
    5  6  0  0  0 
    2  3  4  0  0 
    8  6  7  5  0 

bg = biograph(table1,[],'ShowArrows','off','ShowWeights','on'); 
h = view(bg); 

Teraz mam założyć chcesz zsumować wagi z obu brzegów. To znaczy. waga krawędzi między 1-2 odpowiada masie krawędzi od 1> 2 + 2> 1, z oryginalnej matrycy. enter image description here