【发布时间】:2015-07-04 22:40:56
【问题描述】:
我有一个迷宫,如下所示:
XXXOOOOX
OXXXOXOE
OXXOOXXO
OSXOXXXO
XOOOXOOO
//X = wall
//O = path
//S = startpoint
//E = endpoint
我想将其转录为图形(邻接矩阵),但不确定是否尝试这样做。邻接矩阵是一个布尔列表的列表,true 代表一条可行的路径,false 代表一条不可能的路径(例如,迷宫中的(0,-1) 无法连接到(7,-1)(0,0 是最左上角的节点) )。我不知道如何转录这个,我最好的猜测是把每个元素放在一个列表中,然后是一个带有连接节点的子列表。考虑到这个迷宫的大小,处理起来很困难,所以这里有一个较小的:
X E || A B
S O || C D
对于上述迷宫(1 = 真,0 = 假)是否会出现邻接矩阵?
A B C D
A 0 0 0 0
B 0 0 0 1
C 0 0 0 1
D 0 1 1 0
//C connects to D (start)
//D connects to B (end)
这真的很令人困惑,我不知道如何将 x,y(有时也是 z)坐标映射到图形。
【问题讨论】:
-
一般方法是:对于每对 (x,y) 坐标,检查 (x,y) 和 (x-1,y) 是否都可以通过。如果是这样,请输入一个真实的。 (x,y) 的所有其他邻居都相同。默认情况下,不是邻居的所有内容都为 false。
-
@Sirko,对于一个 n*m 维度的迷宫,邻接矩阵是否应该是 n^2 个元素宽和 m^2 个元素深?
-
对于
m*n迷宫,您将拥有(m*n)节点,从而产生(m*n) * (m*n)邻接矩阵。在这里,邻接列表可能是更好的方法,因为您的矩阵会非常稀疏。 -
@riista this 可能会对您有所帮助。