【问题标题】:Is it possible to construct an adjacency matrix for a graph without storing indexes of nodes是否可以在不存储节点索引的情况下为图构造邻接矩阵
【发布时间】:2019-05-30 16:49:36
【问题描述】:

我已经设法通过存储每个节点的索引来实现解决方案,但是没有索引是否可以实现?我的任务是实现一个 bloxrolz 游戏。在我即将向您展示的示例中,我不知道如何编写代码来检查两个节点是否彼此相邻。

这只是游戏的一个随机字段。从文件读取时,我将每个字符存储在一个链表中,带有 x、y 坐标和 ID(如果字符不是“-”)。只有那些不是“-”的才会存储在邻接矩阵中,因为它们代表操场,“-”是可以更改为“-”的节点。

我已经成功实施了一个解决方案,但我不确定它是否合法。你能帮我弄清楚如何在没有索引的情况下做到这一点。

【问题讨论】:

  • 邻接矩阵根据定义是一个没有任何索引的二进制矩阵。您可能想通过显示一些代码来澄清您的问题。
  • @EugeneSh。你不理解我。我知道什么是形容词。矩阵是。我需要创建一个没有关于图中节点坐标信息的邻接矩阵。
  • “节点索引”是什么意思?请显示一些代码来说明。
  • "...我不确定它是否合法。"如果它有效,那么它是合法的。
  • 图片中没有代码!!

标签: c file indexing graph adjacency-matrix


【解决方案1】:

根据定义,邻接矩阵是一个方阵,其中每个节点由一行和一列表示。如果行 i 和列 j 的条目是 1(或您选择的某个值),那么这两个节点在图中是连接的。因此,您需要某种方式将行和列映射到节点,反之亦然。将节点放在列表中并使用列表中每个节点的索引是一种方法,但这不是唯一的方法。你可以给每个节点一个 ID 号,只要每个节点的 ID 是唯一的并且在矩阵的范围内,你就可以使用它。您可以在每行和每列的开头或结尾存储指向相应节点的指针。简而言之,任何可以让您找到矩阵中给定节点对的条目的方法就足够了。

也就是说,因为您正在讨论行和列的有序列表,所以您选择的任何方法都类似于将节点放在列表中并使用列表中节点的索引。仔细想想你真正想解决什么问题。

【讨论】:

  • 请注意,使用适合“矩阵”的数据结构,您可以使用 (x, y) 对作为“节点标签”ij
猜你喜欢
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多