[转] [博客园] 迷宫生成算法x4
简介 所谓迷宫生成算法,就是用以生成随机的迷宫的算法 迷宫生成算法是处于这样一个场景: 一个row行,col列的网格地图,一开始默认所有网格四周的墙是封闭的 要求在网格地图边缘,也就是网格的边上打通2面墙 所有网格都至少保证网格周围至少有一堵墙打通 所有网格都能通过打通的墙能形成一条通路 博主已实现RecursiveBacktracking(递归回溯),RecursiveSegmentation(递归分割),随机Prim算法,Kruskal+并查集四种迷宫生成算法,这篇文章主要对这四种算法进行简要的介绍 基于Unity的迷宫生成算法代码实现 Github链接 递归回溯算法 复杂度 空间:O(n),时间:O(n),n为迷宫节点数row*col 原理 以一个栈作为辅助的数据结构,用以记录打通区域的顺序,用以回溯 一开始随机在地图中选择一个区域,加入栈。 之后在之前选择的区域周围随机选择一个未打通的区域,将新选择的区域和之前选择区域的墙打通,并把新的区域的加入栈 如果四周的区域都打通,就让栈出栈,将当期所选择的区域设置栈新的栈顶,表示回退到上一个区域 之后递归的按之前的步骤选择下一个区域直到所有区域都被打通 缺点 这种算法实现思路极为简单,但通路过于明显,甚至有可能会出现上图中的迷宫,很尴!!! 递归分割算法 复杂度 递归空间复杂度:O(row * col),最好时间复杂度:O