如何在Matlab中将给定的邻接矩阵表示为无向加权图?

5

对于下面给定的矩阵,如何将其表示为无向加权图G(V,E,W),其中V是顶点集合,E是边集,W是权重集。

  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

我尝试的源代码:

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

这是用矩阵表示无向加权图的正确方式吗?我得到了两个相同的顶点之间有2条边的结果,就像这样: enter image description here 我使用您建议的代码得到了以下输出: enter image description here 我有2个邻接矩阵。我需要执行以下2个操作: 1.从这2个邻接矩阵中创建2个图。 2.然后根据图中边的权重匹配2个图的顶点。
  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

我走的路是对还是错?请给我建议。

当你尝试它时,会得到什么?如果你想要一个加权图,为什么要使用 'ShowWeights','off' - Stewie Griffin
抱歉,应为 'ShowWeights',打开它。 - prashanth
我在同一对顶点之间得到了2个边缘。 - prashanth
1个回答

5

如果只需要每个顶点之间的一条边,您只需要一个三角矩阵。

如果您尝试如下操作:

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);

现在我假设您想要将两个边缘的权重相加。也就是说,边缘1-2的权重等于从原始矩阵中1->2 + 2->1的边缘权重之和。 enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接