参考连接:https://www.jianshu.com/p/f643b0a0b887web
随机Prim算法属于打通墙壁生成迷宫的算法,下面我将以集合的角度来描述此算法。算法
首先是初始化,创建一个全部单元格都被墙隔开的迷宫。
以8*8的迷宫为例,将每一个单元格进行编号。使用集合表示路径,集合中的元素就是单元格的编号,表示这条路径通过了哪些单元格。
假设咱们从1开始,按从左到右从上到下的顺序依次对单元格进行编号。又假设迷宫的入口为左上角的单元格,编号为1,出口为右下角的单元格,编号为64。编程
一样是属于打通墙壁生成迷宫的算法,也叫深度优先算法(不撞南墙不回头,哈哈)。dom
属于构造墙壁生成迷宫的算法。
在空白空间随机生成十字墙壁,将空间分割为四个子空间,而后在三面墙上各自选择一个随机点挖洞,保证四个子空间的连通。以后继续对子空间作分割,直至空间不足以继续分割为止。orm
引用一下别人的总结:这三种算法分别适合不一样的迷宫状况,递归回溯适合于那种主线支线明显的游戏(如RPG),而递归分割则适合转角较少的游戏(如FPS和ACT),至于Prim,彷佛适合最标准的迷宫游戏(随机Prim算法生成的迷宫分支较多,总体上更复杂也更天然)。递归