Miklix

威爾遜演算法迷宮生成器

已發佈: 2025年2月16日 晚上7:34:56 [UTC]
最後更新: 2026年1月12日 上午9:03:28 [UTC]

迷宮生成器使用威爾遜演算法生成完美迷宮。該演算法以相同的機率產生給定大小的所有可能迷宮,因此理論上可以產生多種混合佈局的迷宮。但由於短走廊的迷宮比長走廊的迷宮更多,所以你更常看到短走廊的迷宮。

該頁面是由英語機器翻譯而來的,以便盡可能多的人可以訪問。不幸的是,機器翻譯還不是一項完善的技術,因此可能會出現錯誤。如果您願意,可以在這裡查看原始英文版本:

Wilson's Algorithm Maze Generator

威爾遜演算法是一種循環消除隨機遊走方法,它產生均勻生成樹用於迷宮生成。這意味著給定大小的所有可能迷宮的生成機率均等,因此它是一種無偏的迷宮生成技術。威爾遜演算法可以看作是奧爾德斯-布羅德演算法的改進版本,因為它生成的迷宮具有相同的特徵,但運行速度更快,所以我在這裡沒有實現奧爾德斯-布羅德演算法。

完美迷宮是指從迷宮中的任意一點到另一點都只有一條路徑的迷宮。這意味著你不會最終陷入繞圈的境地,但你會經常遇到死胡同,迫使你轉身返回。

這裡產生的迷宮地圖包含一個預設版本,沒有任何起點和終點位置,因此您可以自己決定:從迷宮中的任何點到任何其他點都會有一個解決方案。如果您想要靈感,您可以啟用建議的開始和結束位置 - 甚至可以看到兩者之間的解決方案。


生成新迷宮








關於威爾遜演算法

威爾遜演算法(Wilson's algorithm)是一種利用循環消除隨機牆生成均勻生成樹的演算法,由大衛·布魯斯·威爾遜(David Bruce Wilson)創建。

威爾遜最初在 1996 年研究機率論中的隨機生成樹和馬可夫鏈時提出了這種演算法。儘管他的研究主要集中在數學和統計物理領域,但由於演算法能夠產生完全均勻的迷宮,因此已被廣泛應用於迷宮生成。

威爾遜演算法如何產生迷宮

威爾遜演算法透過使用隨機遊走,從未訪問的單元格中迭代地開闢路徑,從而確保最終的迷宮完全連通且沒有任何迴路。

步驟 1:初始化

  • 首先畫一個佈滿牆壁的格子。
  • 定義所有可能的通道單元格清單。

步驟 2:選取一個隨機起始儲存格

  • 隨機選擇一個儲存格並將其標記為已存取。這將作為迷宮生成過程中的起點。

步驟 3:循環消除的隨機遊走

  • 選擇一個未造訪過的儲存格,開始隨機遊走(向隨機方向移動)。
  • 如果路徑到達已造訪過的儲存格,則刪除路徑中的任何循環。
  • 一旦路徑連接到已訪問區域,則將路徑上的所有儲存格標記為已存取。

步驟 4:重複此步驟直至訪問所有細胞:

  • 繼續選擇未造訪的單元格並進行隨機遊走,直到每個單元格都成為迷宮的一部分。

進一步閱讀

如果您喜歡這篇文章,您可能也會喜歡這些建議:


分享至 Bluesky在 Facebook 分享在 LinkedIn 分享在 Tumblr 上分享分享至 X在 LinkedIn 分享固定在 Pinterest 上

Mikkel Christensen

關於作者

Mikkel Christensen
麥可 是 miklix.com 的創建者和所有者。他有超過 20 年的專業電腦程式設計師/軟體開發人員經驗,目前全職受僱於一家歐洲大型 IT 公司。不寫部落格時,他會將業餘時間花在各種各樣的興趣、愛好和活動上,這在一定程度上反映在本網站所涵蓋的主題的多樣性上。