![]() |
1
31
从 http://www.astrolog.org/labyrnth/algrithm.htm
它们只产生10%的死胡同
是由该方法生成的迷宫的示例。 |
![]() |
2
31
事实证明,有12种经典算法可以生成“完美”迷宫。如果迷宫只有一个解,那么它就是完美的。下面是每个算法的一些链接,按照我的喜好大致排列。
有关详细信息,请查看 mazelib 在Github上,一个实现所有标准迷宫生成/求解算法的python库。 |
![]() |
3
19
一个非常简单的解决方案是将随机权重分配给图的边缘并应用 Kruskal's algorithm 找到最小生成树。 关于迷宫生成算法的最佳讨论: http://www.jamisbuck.org/presentations/rubyconf2011/index.html (几天前在HN)。 |
![]() |
4
4
奇怪的是,通过稍微改变“规范”规则并从随机配置开始, Conway's Game of Life 似乎产生了相当不错的迷宫! (我不记得确切的规则,但这是一个非常简单的修改,倾向于“密集”细胞群…) |
![]() |
5
2
我最喜欢的方法是使用Kruskal的算法,但是当随机选择并删除边时,根据所连接的边的类型对选择进行加权。 通过改变不同边缘类型的权重,可以生成具有许多不同特征或“个性”的迷宫。请参阅下面的示例: |
![]() |
6
1
产生迷宫的方法之一是Prim算法的随机版本。 从满墙的网格开始。 选择一个单元格,将其标记为迷宫的一部分。将单元格的墙添加到墙列表中。 当列表中有墙时: 从列表中选择一个随机墙。如果对面的牢房还没有进入迷宫: (i)使墙壁成为通道,并将对面的单元标记为迷宫的一部分。 (ii)将单元的相邻墙添加到墙列表中。 如果对面的单元格已经在迷宫中,请从列表中删除墙。 要了解更多信息,请单击 here |
![]() |
7
0
以下是用伪代码编写的DFS算法:
创建单元堆栈(LIFO)以保存单元位置列表
当VisitedCells<totalCells
查找当前单元格的所有邻居,所有墙都完好无损
|
![]() |
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 6 月前 |
![]() |
Alisa Petrova · 在有向图中更改一对顶点以创建循环 6 月前 |
![]() |
b39b332d · 使用C++标准库实现高效间隔存储 10 月前 |
![]() |
Paul C · 在维基百科上,将二叉搜索树转换为排序链表的算法是否存在错误? 11 月前 |
![]() |
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 11 月前 |
![]() |
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 11 月前 |