直接回答:把迷宫建模为图:每个格子是顶点,相邻格子间可能打通的墙是边,一个"完美迷宫"(任意两点路径唯一)正对应图的一棵生成树。因此经典做法就是随机生成树算法:深度优先回溯、随机 Prim、随机 Kruskal,另有递归分割法。
展开解析:DFS 回溯法最常用:从起点随机访问未访问的邻居并打通墙,走不通就回溯,直到所有格子访问过——生成的迷宫通道狭长曲折,"解"的手感好。随机 Prim:从起点开始维护"已入迷宫格子的 frontier 墙"列表,随机抽一面墙,若其另一侧未访问则打通并扩展。随机 Kruskal:把所有墙放入集合,用并查集逐面随机拆墙,只拆连接两个不同连通分量的墙,直到所有格子连通;它生成的迷宫分支多、路径短。递归分割:每次随机开一道带缺口的墙把区域二分,递归处理子区域,实现简单且适合并行。追问方向:为什么生成树保证无环且连通(完美迷宫)、加入 braid( braid maze,拆掉部分死胡同)的做法、如何用并查集判断两格已连通、求解迷宫(BFS 最短路、A*)与生成的对偶关系。