是否可以在不存储节点索引的情况下为图构造邻接矩阵

时间:2019-05-30 16:49:36

标签: c file indexing graph adjacency-matrix

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

enter image description here

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

我已经以不确定其合法性的方式成功实施了解决方案。您能帮我弄清楚如何不用索引吗?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

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

这就是说,因为您正在谈论行和列的有序列表,所以选择的任何方法都类似于将节点放入列表并使用列表中节点的索引。认真考虑一下您实际上要解决的问题。