Wilson 演算法:完整指南、與 EOQ 和定理的差異

最後更新: 十月14 2025
  • 威爾遜演算法使用循環刪除步行將迷宮生成為均勻隨機樹。
  • 威爾遜模型(EOQ)計算需求和價格穩定的最佳批量,但不考慮折扣或季節性。
  • 威爾遜定理用 (n−1)! ≡ −1 (mod n) 來描述質數,並且有經典的推廣。

Wilson演算法及相關概念

在網路上,人們使用「Wilson」一詞的用途非常不同,這很容易讓人混淆:有用於生成迷宮的Wilson演算法,用於庫存的Wilson模型(或EOQ),以及數論中的Wilson定理。在本文中,我們將澄清所有問題,從迷宮中的原始用法開始,並仔細區分其他含義,因為 它們並不相同,也不適用於同一領域.

如果您看過迷宮自行「生長」的演示或小程序,那麼您可能已經遇到過威爾遜演算法。您也聽過用來計算經濟訂購量的威爾森模型,甚至聽過用階乘來刻畫素數的定理。這裡有完整的解釋和示例,您可以 您可以識別每個概念並正確使用它.

威爾遜迷宮演算法是什麼?

Wilson 演算法是一種基於循環擦除隨機遊走的迷宮產生方法。它最大的優點在於,它能夠在網格上產生均勻的隨機生成樹:簡單來說, 每個可能的迷宮出現的機率相同,不偏向特定的方向或模式。

其核心思想是,路徑會被添加到已構建的集合中,但當隨機遊走與自身相交時,循環會被“刪除”,路線會從中斷處繼續。這項細節可以防止創建冗長、冗餘的路徑或循環,從而保持樹狀結構連接所有單元。最終結果是一個「公平」的迷宮: 沒有一條走廊或轉彎比其他走廊或轉彎具有統計優勢.

社群創建了一些專案和小程序,以視覺化且極具娛樂性的方式展示了該演算法的實際運作。其中,Cruz Godar 開發的一些小程式特別突出,你可以選擇網格大小並進行設置,觀察迷宮是如何一步步出現的。觀察它的運作有助於你理解其中的原理。 循環擦除使機率均等 在圖的每個延伸中。

建造和解迷宮雖然看起來像遊戲,但實際上與搜尋和優化問題密切相關。設計迷宮需要在清晰度和趣味性之間取得平衡,避免瑣碎的解決方案或死胡同; 探索有限的空間 具有巨大的組合。因此,無論是在紙面上還是在數位模擬中,它們都作為 很好的邏輯、機率和耐心的練習.

工作原理(實際操作)

以下是該演算法的高階描述,雖然沒有程式碼,但包含理解其行為的基本機制。記住,目標是建造一棵連接所有單元的樹(無環),使得 任一對點之間只有一條簡單路徑.

  • 它從一個空網格開始:隨機選擇一個單元格並將其標記為樹的一部分。
  • 隨機選擇另一個單元格,開始逐步隨機遊走,如果路徑與自身相交,則立即刪除循環(循環擦除)。
  • 當步行到達已經生成的樹時,整個細化的路徑(沒有循環)就會「黏」到樹上。
  • 它重複:我們選擇一個新的未連接的單元,循環刪除並加入樹。
  • 最後,所有單元格都連接起來,迷宮是一個均勻隨機生成樹,因此 沒有方向或拓樸偏差.
  超級運算、人工智慧和數位孿生:西班牙語完整指南

與其他方法(如 Aldous–Broder、 拘謹的 或適用於迷宮的 Kruskal 演算法),Wilson 演算法因其生成樹採樣的均勻性而脫穎而出。在典型的網格上,它的計算成本合理,最重要的是, 確保每個解決方案都具有相同的機率,在學術和模擬環境中受到高度讚賞。

其他意義:威爾遜模型或 EOQ(庫存)

在物流領域,「威爾遜模型」(也稱為 EOQ,即經濟訂購量;或 CEP,即經濟訂購量)與迷宮無關。它是一種經典的確定最優訂貨量的方法,目標是最小化總庫存成本。該模型由 R.H. Wilson 於 1934 年推廣,儘管 第一個提議是由福特惠特曼哈里斯於 1913 年提出的.

其目的是找到平衡訂貨成本和庫存成本的批量Q。根據年度需求量(D)、每筆訂單成本(K)以及每單位每期的倉儲成本(G),在假設框架內,得出一個量: 降低總庫存成本.

最常見的公式是 Q = √(2 D K/G)。由此可得出批量大小;由此可得出年度訂單數量 D/Q,並由此推導出時間節奏。設定再訂貨點(考慮前置時間)和安全庫存也很重要,以避免缺貨,儘管 基本公式沒有考慮不確定性 明確地。

典型應用:用於原料或任何能夠可靠地確定採購和倉儲成本的商品。實際上,如果已知D、K和G,且可靠性足夠高, 該公司可以調整批次大小並安排供應 具有更好的控制力。

威爾遜模型的假設、優點和局限性

假設對於結果的有效性至關重要。 EOQ模型假設需求恆定且已知,單價保持穩定,倉儲成本已知且取決於庫存水平,供應時間恆定,此外, 不考慮批量折扣.

  • 穩定、獨立的需求,沒有季節性或突然的高峰。
  • 在分析期間內,購買價格固定或幾乎沒有變化。
  • 已知每單位和每期間的儲存成本。
  • 無數量折扣,且不立即或持續補貨。

主要優勢:它易於實施,應用廣泛,並有助於根據自身情況最大限度地降低訂購和庫存成本。其優點包括減少庫存積壓,降低缺貨風險(如果設定了再訂貨點和安全庫存),以及提高採購計畫的清晰度。許多組織重視它,因為 提供簡單的數位基礎來決定訂購多少.

缺點:它不適用於季節性或不規則需求,忽略批量折扣,並假設立即(或固定)補貨,這在許多供應鏈中是不切實際的。因此,在豐田集團等企業中,EOQ公式已被更強大的系統(如看板或準時制)所取代,這些系統 它們能更好地處理實際變化 以及連續流動。

EOQ 的實際例子(Wilson)

範例 1(典型):一家年產量為 10.000 單位的公司購買了 1.000 公斤原料。假設每筆訂單成本為 200 歐元,年度總倉儲成本為 2.000 歐元,則應用公式 Q = √(2 D K/G),其中 D = 1.000,K = 200,G = 2.000,得出 Q ≈ 14,14。這意味著批次為 14 公斤,每年約有 71 份訂單。這是一個說明性練習,透過適度的數字,我們可以看出 批量如何平衡訂單和庫存.

  專案管理和技術使用

範例 2:Sillas Grandes World SL 經銷 6.000 張椅子 (D),每份訂單成本為 300 歐元 (K),每件家具每年的倉儲費為 5 歐元 (G)。應用公式 Q ≈ 848,52,則該公司每年約有 7,07 份訂單。按此批量,該公司 趨向於更有效率的庫存水平,在不增加訂單準備成本的情況下降低倉儲成本。

除了公式之外,計算再訂貨點時最好考慮交貨週期和安全庫存,因為純模型沒有考慮不確定性。它也沒有估算批量折扣的影響,而批量折扣有時會 可以抵銷股票成本 如果使用更大的批次。

不要與威爾森定理(數論)混淆

威爾森定理屬於 模運算 其本質是說整數 n > 1 為質數當且僅當 (n − 1)! ≡ −1 (mod n)。 “若 n 為質數,則 (n − 1)! ≡ −1 (mod n)”這個蘊涵式通常被嚴格地稱為“威爾遜定理”,其逆蘊涵式也成立。歷史上,愛德華·沃林 (Edward Waring) 將此結果歸功於約翰·威爾遜 (John Wilson) (1770),儘管已知的第一個證明是由拉格朗日 (Lagrange) (1771) 給出的,事實上, 配方可追溯到 11 世紀的阿爾哈森.

具體例子:對於 p = 11,將集合 {1, 2, …, p − 1} 中的每個元素與其乘法逆元組合在一起,總乘積為 ≡ −1 (mod p)。除 1 和 p − 1 外,所有因數均等地抵消,即 g g^{-1} ≡ 1,因此 10! ≡ −1 (模 11)此方法利用了 p 為質數,(Z/pZ)^× 是乘法群,每個元素(1 和 p − 1 除外)都有不同的逆。

有幾種證明方法。多項式方法考慮 g(x) = (x − 1)(x − 2)···(x − (p − 1)) 和 f(x) = g(x) − (x^{p−1} − 1)。如果模 p,f(x) 不是零多項式,則最多有 p − 2 個根;但根據費馬小定理,所有 1, 2, …, p − 1 都使 f(x) 消失。因此,f(x) 恆等式為 0 mod p,且獨立項可得 (p − 1)! ≡ −1 (mod p).

它不被用作實際的素數測試,因為對於較大的 n 計算 (n − 1)! mod n 成本很高,而且存在更快的測試(例如 Miller-Rabin 或特定範圍的確定性測試)。即便如此,推導有用的屬性還是很有用的:例如,如果 p = 2n + 1 是質數,則我們有 ∏_{j=1}^{n} j^2 ≡ (−1)^{n+1} (mod p)。並且,作為部分推論,如果 p ≡ 1 (mod 4),則 −1 是模 p 的二次剩餘,因為當 p = 4k + 1 時,它可以寫成乘積 1 2 2k 的平方,這 顯示當 −1 為平方時 在 Z/pZ 中。

還有一個實際的「逆」:對任意合數 n > 5,n 能整除 (n − 1)! 為真。 n = 4 的情況是典型的例外(3! 不是 4 的倍數)。理解這一點的一種方法是計算能整除 n 的質數 q 的冪:在 (n − 1)! 中,有足夠多的 q 倍數來覆蓋 n 中出現的冪,除了上述例外,即 除 n = 4 外,得出以下結果.

  企業管理工程的十大關鍵

高斯推廣了這個定理:所有單位模 n 的乘積,∏_{1≤a 它是 2 階元素.

(n − 1)! mod n 的說明表,其中 n = 2…30

下表中可以看到 n 在 2 到 30 之間的具體值。對於質數 n,(n − 1)! 除以 n 的餘數等於 n − 1(即 ≡ −1 mod n)。在合數中,餘數通常為 0。為了方便比較,也包含了 −1 mod n。這些數據很好地說明了威爾森定理在小情況下的表現,並有助於 修復直覺.

n > 1 (n − 1)! (n − 1)! 模 n −1 模 n
2 1 1 1
3 2 2 2
4 6 2 3
5 24 4 4
6 120 0 5
7 720 6 6
8 5040 0 7
9 40320 0 8
10 362880 0 9
11 3628800 10 10
12 39916800 0 11
13 479001600 12 12
14 6227020800 0 13
15 87178291200 0 14
16 1307674368000 0 15
17 20922789888000 16 16
18 355687428096000 0 17
19 6402373705728000 18 18
20 121645100408832000 0 19
21 2432902008176640000 0 20
22 51090942171709440000 0 21
23 1124000727777607680000 22 22
24 25852016738884976640000 0 23
25 620448401733239439360000 0 24
26 15511210043330985984000000 0 25
27 403291461126605635584000000 0 26
28 10888869450418352160768000000 0 27
29 304888344611713860501504000000 28 28
30 8841761993739701954543616000000 0 29

應用、限制和建議

如果您想產生無偏迷宮,請使用威爾遜演算法:它基於隨機遊走和循環刪除演算法,確保樹的均勻性。對於庫存而言,當需求、價格和成本穩定且精確已知時,威爾遜模型非常有用;在波動的環境中,看板、JIT 或高級計劃軟體等方法可能更合適。在數學中,威爾森定理是一顆理論瑰寶,擁有一些有趣的推導過程(例如二次剩餘),但 作為素數測試並不實用 對於大數字。

計算訂貨和倉儲成本沒有「一刀切」的公式:每家公司都必須分解工時、流程、運輸、收貨、人員、租金、能源、保險和財務成本。許多專業人士會估算每道工序的工時,然後採用小時費率來獲利。這種客製化是確保計算出的Q值實用的關鍵,並且,結合合理的再訂貨點和安全庫存, 避免缺貨或庫存過剩.

值得記住的是,搜尋中的「威爾森演算法」通常指的是迷宮生成器,而「威爾森模型」或「EOQ」指的是庫存,「威爾森定理」指的是數論。從一開始就區分它們可以避免混淆,並讓您更好地利用每種方法: 無偏迷宮、現實假設下的最佳批次、質數的優雅表徵 儘管這不是一個實用的素數測試,但它仍然是數學難題中一個有價值的部分。

Kruskal演算法
相關文章:
Kruskal 演算法及其在圖論中的應用