參考連接:https://www.jianshu.com/p/f643b0a0b887web
隨機Prim算法屬於打通牆壁生成迷宮的算法,下面我將以集合的角度來描述此算法。算法
首先是初始化,創建一個全部單元格都被牆隔開的迷宮。
以8*8的迷宮爲例,將每一個單元格進行編號。使用集合表示路徑,集合中的元素就是單元格的編號,表示這條路徑通過了哪些單元格。
假設咱們從1開始,按從左到右從上到下的順序依次對單元格進行編號。又假設迷宮的入口爲左上角的單元格,編號爲1,出口爲右下角的單元格,編號爲64。編程
一樣是屬於打通牆壁生成迷宮的算法,也叫深度優先算法(不撞南牆不回頭,哈哈)。dom
屬於構造牆壁生成迷宮的算法。
在空白空間隨機生成十字牆壁,將空間分割爲四個子空間,而後在三面牆上各自選擇一個隨機點挖洞,保證四個子空間的連通。以後繼續對子空間作分割,直至空間不足以繼續分割爲止。orm
引用一下別人的總結:這三種算法分別適合不一樣的迷宮狀況,遞歸回溯適合於那種主線支線明顯的遊戲(如RPG),而遞歸分割則適合轉角較少的遊戲(如FPS和ACT),至於Prim,彷佛適合最標準的迷宮遊戲(隨機Prim算法生成的迷宮分支較多,總體上更復雜也更天然)。遞歸