【发布时间】:2010-04-14 02:03:34
【问题描述】:
【问题讨论】:
标签: data-structures graph adjacency-matrix
【问题讨论】:
标签: data-structures graph adjacency-matrix
这是我对迷宫第一条水平线的尝试:
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
因此,您可以从中看出,由于边缘的无向性,您最终会得到一个对称矩阵,并且它的人口稀少。
编辑:矩阵与列表
adjacency list 的维基百科条目在每个算法的优势方面都有一些优点。
编辑:
【讨论】:
每个字母数字组合都是图表中的一个节点,即从 A0、A1、A2、... 到 F5、F6、F7。您的图表有 48 个(迷宫中的 8 列乘以 6 行)节点,因此您需要一个 48x48 矩阵。如果将其视为布尔值,则将所有字段设置为 false,但两个节点之间存在连接的字段除外,例如A0 到 A1 意味着 A0 行在 A1 列中具有真值,反之亦然(因为您的图表是无向的)。
【讨论】:
另一种方法是使用 2 个名为 Hor 和 Ver 的 boolean 矩阵分别跟踪水平和垂直移动的可能性。
Hor Matrix: Dimension:6x9 [X,YZ] 表示在实盘上从[X,Y] 水平移动到[X,Z] 的可能性。-1 表示边界
例如:[A,01] 是 true,[F,-10] 也是。但是[B,23] 是false。
-10 01 12 23 34 45 56 67 7-1
A
B
C
D
E
F
同样
Ver Matrix:维度:7x8[XY,Z] 表示在实盘上从[X,Z] 垂直移动到[Y,Z] 的可能性。
行中的Capital o 表示边界。
例如:[DE,0] 是 true,[BC,7] 也是。但是[CD,0] 是false。
0 1 2 3 4 5 6 7
OA
AB
BC
CD
DE
EF
FO
【讨论】: