蒙特卡罗算法介绍
蒙特卡羅是一類隨機方法的統稱。這類方法的特點是,可以在隨機采樣上計算得到近似結果,隨著采樣的增多,得到的結果是正確結果的概率逐漸加大,但在(放棄隨機采樣,而采用類似全采樣這樣的確定性方法)獲得真正的結果之前,無法知道目前得到的結果是不是真正的結果。
舉例說明,一個有10000個整數的集合,要求其中位數,可以從中抽取m<10000個數,把它們的中位數近似地看作這個集合的中位數。隨著m增大,近似結果是最終結果的概率也在增大,但除非把整個集合全部遍歷一邊,無法知道近似結果是不是真實結果。
另外一個例子,給定數N,要求它是不是素數,可以任選m個小于N的數,看其中有沒有能整除N的數,如果沒有則判斷為素數。這和通常見到的蒙特卡羅例子不同,近似結果往往錯得更離譜,但隨著m增大,近似結果是最終結果的概率也在增大。
把蒙特卡羅方法和另外一類方法——拉斯維加斯方法[1]——對比一下,更容易了解哪些方法屬于蒙特卡羅,哪些不屬于。拉斯維加斯方法是另一類隨機方法的統稱。這類方法的特點是,隨著采樣次數的增多,得到的正確結果的概率逐漸加大,如果隨機采樣過程中已經找到了正確結果,該方法可以判別并報告,但在但在放棄隨機采樣,而采用類似全采樣這樣的確定性方法之前,不保證能找到任何結果(包括近似結果)。
舉例說明,有一個有死胡同但無環路的迷宮,要求從入口走到出口的一條路徑。可以從入口出發,在每個叉路口隨機選擇一個方向前行,到死胡同則報告失敗并回到入口重新試探,到出口則報告成功。隨著試探次數增多,找到一條入口到出口的路徑的概率增大,但除非全枚舉,即使試10000年,也無法保證找到任何要求的路徑。
總結
- 上一篇: 不同网段互PING,对不?
- 下一篇: puppetSvn集成