2007年9月26日 星期三

[演算法]迷宮產生器參考連結

前一陣子教集訓同學走迷宮問題。那自然需要範例的迷宮檔案,以前都偷懶用亂數產生迷宮裡的牆,再手動修一下來使用。

今年花了點時間研究迷宮產生器的寫法,在 google 上搜尋後,找到以下兩個很有用的連結:

MyChat 數位男女 > 程式設計 的這篇討論裡,有唐老鴨寫的現成程式,稍微修改就可以跑了。基本上,是使用「挖通道」的方式,寫遞迴函數來挖迷宮。判斷原則是:「如果牆的另一邊沒有通道,則把牆挖穿,並挖出通道;否則就退回換個方向再試。」

另外,「也是回顧」的 tu 寫了很多關於迷宮的文章,讓我獲益良多。雖然沒有現成的程式可以參考,但是在「產生迷宮的另一種方法」裡所提出的用 set Union 方法產生迷宮,讓我搞清楚了 ( 單一解 ) 迷宮的本質:所有的通道都是相通的,都屬於同一個集合。這樣,我也搞清楚了為什麼唐老鴨的程式挖通道時,碰到通道就不挖了的原因。

再深入研究後,發現要產生單一解的迷宮其實非常的簡單。這篇文章只是先記下以上兩個連結,免得以後忘了。我的迷宮產生器寫法待整理好了再拿出來獻醜吧。

沒有留言:

張貼留言