【问题标题】:Two Dimensional Array Representing a Weight Matrix表示权重矩阵的二维数组
【发布时间】:2016-09-26 12:35:08
【问题描述】:

我对这样的二维数组(矩阵)有点困惑

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 

应该代表一个图形。这些值代表权重,然后代表节点和边。我试图蛮力找到所有可能的树(我不是在寻求帮助,只是想了解这应该如何代表

【问题讨论】:

  • 如果你不知道,你希望别人怎么知道?这只是一个数字矩阵。没有将二维数字矩阵解释为某种图形的通用约定。没有其他事情可做。
  • 如果你有静态拓扑,那么你只需要定义一个序列化/反序列化的顺序,否则如果不包括图拓扑的一些元数据,你的要求是不可能的。
  • 我唯一要说的是“对于一个对权重矩阵进行运算的算法,它将存储在二维数组中的权重矩阵作为其参数”
  • 您的数据根本没有任何意义。这可能意味着第 0 行是节点 0,它自身的成本为 0.0,节点 1 的成本为 1.8,节点 2 的成本为 4.0 ......等等(因此表中的对角线为 0.0)。但您的数据并非如此,因为您只有 5 行(5 个节点 - 图有 8 个),并且每个节点都有三个边和一些邻居(也与您的图不匹配)

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


【解决方案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个顶点。

【讨论】:

  • 是的,我只是为了这个问题而搜索了一个示例树哈哈,但这完美地回答了它!谢谢大家
【解决方案2】:

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

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

矩阵MNxN 表示具有N 顶点(节点)的图。
M[i][j] = 0 顶点ij 之间没有边。
M[i][j] = 1 时,顶点ij 之间存在一条边。

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

【讨论】:

  • 嗨,这如何回答他的问题并解决他的问题?他的表中没有1s,因此您的回答有点随意。
  • 我认为这有帮助,没有 1,但我有我的权重而不是 1
  • @FirstStep 他问“这些值代表权重,但什么代表节点和边?”我想我的答案是涵盖它。
猜你喜欢
  • 2020-03-19
  • 1970-01-01
  • 2017-10-11
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 2014-11-29
相关资源
最近更新 更多