代表重量矩阵的二维数组

时间:2016-09-26 12:35:09

标签: c++ arrays matrix multidimensional-array tree

我有点难以理解像这样的二维数组(矩阵)

0.0  1.8  9.1  4.0  3.5 

1.8  0.0  8.1  5.2  8.6 

9.1  8.1  0.0  2.9  8.1 

4.0  5.2  2.9  0.0  2.0 

3.5  8.6  8.1  2.0  0.0 

应该代表一个图表。值表示权重,但表示节点和边缘的值。我正试图蛮力找到所有可能的树(我不是在寻求帮助,只是试图理解这应该如何代表这个enter image description here

2 个答案:

答案 0 :(得分:1)

2D数组(=矩阵)是表示图形的常用方法。它也被称为Adjacency Matrix

  

在图论中,邻接矩阵是正方形   矩阵用于表示有限图。矩阵的元素   指示图中的顶点对是否相邻。

M的矩阵NxN表示带有N个顶点(节点)的图形。
M[i][j] = 0顶点ij之间没有边缘时 当M[i][j] = 1顶点ij之间存在边缘时。

有时,使用与1不同的数字来表示此特定边的权重(与您的情况相同)很容易。

答案 1 :(得分:1)

如果您有一个包含5个顶点的(加权,无向)图形,请将它们称为v1v2v3v4v5 ---图表可以用矩阵表示。

     v1   v2   v3   v4   v5
v1   0.0  1.8  9.1  4.0  3.5 
v2   1.8  0.0  8.1  5.2  8.6 
v3   9.1  8.1  0.0  2.9  8.1 
v4   4.0  5.2  2.9  0.0  2.0 
v5   3.5  8.6  8.1  2.0  0.0 

(v2, v4)中的数字表示连接v2v4且权重为5.2的边缘。零条目可以表示非边缘,或者具有零权重的边缘。非加权图通常在每个条目中用布尔值表示,1表示边,0表示无边。如果矩阵是对称的,那么图是(好的,可以是)无向的。

注意:你问题中的图片不能用给定的矩阵表示:矩阵代表一个有5个顶点的图形,图片代表的图形有8个顶点。