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

标签 matlab matrix graph

对于下面给定的矩阵,如何将其表示为无向加权图 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 个顶点之间得到 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

我走的路是对还是错?请指教

最佳答案

要在每个顶点之间只获得一条边,您只需要一个三角矩阵。

如果你尝试这样的事情:

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

现在我假设您想要对两条边的权重求和。 IE。 1-2 之间的边的权重等于原始矩阵中 1->2 + 2->1 的边的权重。 enter image description here

关于matlab - 如何在 matlab 中将给定的邻接矩阵表示为无向加权图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23589533/

相关文章:

matlab - 轮廓函数中的 "VN"可选参数代表什么?

matlab - 找出 MATLAB 在打开 avi 文件时使用的编解码器

根据引用矩阵中的列、行名称,用 0 替换值是对称矩阵

r - 从矩阵中提取排序的行

Matlab:查找矩阵每一列首次出现的行索引(不使用循环)

mysql - 在 MATLAB 中将查询中的字符串传递给 MySQL 数据库

c - 指针和二维数组

linux - 我应该学习哪种语言?

python - 向networkx添加子节点(附图)

twitter - 构建 Twitter 用户数据库