前段时间我使用深度优先搜索方法在Python中创建了一个抽象的3D迷宫,我将每个fork存储在字典中作为点列表,并使用单独的字典来存储每个fork来自哪个fork。这很有用(可以看到here跟随原点的最后一点之后),但它看起来有点混乱,并且试图让寻路工作变得有点太hacky。
如果你在迷宫生成部分看{4},看起来它只是一个点网格,并且在每个点之间可以有连接或墙。我可能错了,它可能只是不同大小的立方体,将每一个第二个视为墙/连接器,但我很想知道在Python中是否有更好的方法。将它存储在预先构建的3D网格中是不可能的,因为我不希望它受边界的限制(您可以轻松生成数千个点),并且随着生成的进行加上尺寸变化,因为它当它变小时,对于大规模的几代人看起来更酷。
我知道这个问题可能不适合SO,但我只找到了关于生成迷宫的提示,而不是在搜索时存储它们,所以认为它可能值得问。
答案 0 :(得分:1)
我不知道我是否理解你的问题,或者这是否有助于迷宫的可视化,但是如果你想在遍历时存储结构或路径,你可以使用修改后的{{3有一些额外的信息,如颜色,告诉你是否访问过一个节点。链表可以有一个像叉子一样的子列表。每个节点都可以有一个位置,就像您链接的视频中的块一样。
像这样的列表的节点对象的python示例可以是
class node:
def __init__(self, color, location, parent, children):
self.nodeColor = color
self.location = location
self.parentNode = parent
self.children = children
其中父项是节点对象,子项是节点对象列表。
在进行深度优先搜索或任何类型的搜索时,可以使用颜色属性。如果您访问节点颜色为黑色,如果节点位于探索地平线上,则颜色为灰色,如果尚未访问某个节点或将其初始化为白色。
希望有所帮助!