Data structures 图形表示

Data structures 图形表示,data-structures,graph,adjacency-matrix,Data Structures,Graph,Adjacency Matrix,给定的图形,我如何用adj矩阵表示它?。我读过很多教程、帖子、幻灯片等,但我无法理解,我只需要一点点推动 每个字母-数字组合都是图形中的一个节点,即从A0、A1、A2。。。至五楼、六楼、七楼。图形有48个(迷宫中的8列乘以6行)节点,因此需要一个48x48矩阵。如果将其视为布尔值,则会将所有字段设置为false,但两个节点之间存在连接的字段除外,例如A0到A1意味着A0行在A1列中有一个真值,反之亦然(因为图形是无向的)。下面是我对迷宫第一条水平线的尝试: A0 A1 A2 A3 A4

给定的图形,我如何用adj矩阵表示它?。我读过很多教程、帖子、幻灯片等,但我无法理解,我只需要一点点推动


每个字母-数字组合都是图形中的一个节点,即从A0、A1、A2。。。至五楼、六楼、七楼。图形有48个(迷宫中的8列乘以6行)节点,因此需要一个48x48矩阵。如果将其视为布尔值,则会将所有字段设置为false,但两个节点之间存在连接的字段除外,例如A0到A1意味着A0行在A1列中有一个真值,反之亦然(因为图形是无向的)。

下面是我对迷宫第一条水平线的尝试:

   A0 A1 A2 A3 A4 A5 A6 A7
A0 0  1  0  0  0  0  0  0
A1 1  0  0  0  0  0  0  0
A2 0  0  0  1  0  0  0  0
A3 0  0  1  0  0  0  0  0
A4 0  0  0  0  0  1  0  0
A5 0  0  0  0  1  0  0  0
A6 0  0  0  0  0  0  0  0
A7 0  0  0  0  0  0  0  0
所以你可以从中看到,由于你的边的无向性,你最终会得到一个对称的矩阵,而且它的人口将会稀少

编辑:矩阵与列表

的wikipedia条目在每种方法的算法优势方面都有一些优点

编辑:


:+)

另一种方法是使用两个名为
Hor
Ver
boolean
矩阵分别跟踪水平和垂直移动的可能性

Hor矩阵
:维度:
6x9

[X,YZ]
表示在实际电路板上从
[X,Y]
水平移动到
[X,Z]
的可能性。
-1
表示边界

例如:
[A,01]
真的
[F,-10]
也是。但是
[B,23]
false

   -10 01 12 23 34 45 56 67 7-1
A
B
C
D
E
F
同样地

Ver矩阵
:维度:
7x8

[XY,Z]
表示在实际电路板上从
[X,Z]
垂直移动到
[Y,Z]
的可能性。
行中的大写字母o
表示边界。
例如:
[DE,0]
真的
[BC,7]
也是。但是
[CD,0]
false

    0 1 2 3 4 5 6 7

OA
AB
BC
CD
DE
EF
FO

好的,非常感谢。你认为在这种情况下使用邻接列表更好吗。Cuz 48x48看起来有点多余(镜像)和低效。而且这个矩阵本质上是对称的,所以任何操作(和存储,当然)都只能在其中一个半部分上完成。每个顶点的阶数最多为4,所以邻接列表将更有效。@Polygene润滑剂:谢谢buddyTrue,但它是一个小图形,矩阵通常比列表更容易在程序中处理。谢谢你的努力,伙计。我很困惑,因为我做这件事的方式是不对称的,所以我很确定这是错的。但是当我想到A1…F7的时候,我简直不敢相信。正如我对罗伯特所说;在这种情况下,你认为矩阵或邻接列表哪个更好?由于你的图的性质,低阶和无向,我认为边列表是一个很好的选择。你想应用于数据结构的算法也会影响你的决定。嘿,伙计,对不起,我错投了你的票,因为某种原因,它不允许我取消投票,我想是因为编辑了,你能编辑你文章中的任何内容吗?这样我可以给你代表/投票。谢谢和抱歉。@Binary-Nerd:Nice-link;P顺便说一句,如果你想看看我发布的一个与此相关的新问题,也许你可以给我一些提示