如何生成具有多个成功路径的迷宫?

use*_*330 4 algorithm maze graph-algorithm

哪种算法可用于生成具有多个成功路径的迷宫,如果算法是某些知名算法的修改版本,则解释或添加链接。

我正在使用二维数组 A 来存储 maze 的配置。

假设如果迷宫的大小是 n * n 那么从 A[0][0] 到 A[n-1][n-1] 应该有不止一条路径。

tob*_*s_k 6

该算法应该能够生成从开始到目标具有不同无环路径的迷宫:

从一个空的迷宫(或一块坚固的岩石)开始,只有开始和目标......

  1. 将迷宫细分为三组:开始(最初仅保留起始单元格)、目标(最初仅保留目标单元格)和未发现(所有其余部分)。
  2. 随机移除起始目标集中的单元格与未发现集中的单元格之间的墙,并将新发现的单元格移动到相应的集中。
  3. 重复直到每个单元格都在开始目标集中。
  4. 根据需要从起点到终点的路径,移除两个区域之间尽可能多的墙。

或者,如果您已经有一个具有单一路径形式的迷宫,请使用以下变体:

  1. 从起点和终点进行广度优先搜索,并为迷宫中的每个单元格记录该单元格远离起点和目标的步数。
  2. 通过将所有靠近起点的单元格放入开始集,将所有靠近目标的单元格放入目标集来细分迷宫。
  3. 移除两个区域之间的墙以添加从起点到目标的附加路径。

生成的路径可能有(甚至可能是实质性的)共同部分,但它们应该是从开始到目标的唯一无循环路径。这是第一种情况的说明:

在此处输入图片说明