黃鼠狼程式

黃鼠狼程式(Weasel program)，或說道金斯的黃鼠狼(Dawkins' weasel，或者the Dawkins weasel)，是一個思想實驗，並且有許多計算機模擬可以解釋。 這個實驗的重點是澄清一個演化系統 — 隨機的突變混合上一些非隨機的天擇 — 與純粹的隨機機率是不同的。

這個思想實驗是由理查德·道金斯提出，並且也是由他寫出第一個模擬。各種其他的程式模擬則是由其他人寫出。

概觀 
在道金斯的著作The Blind Watchmaker裡面第三章，他介紹了以下程式, 並且提到了著名的無限猴子定理：

這個情境是說，對於任何一個無意義的字串，假設裡面有隨機的28個字母，那麼所有可能的組合就有2728, 或者說大約是1040，所以一隻猴子產生出正確答案的機率是非常非常小的。這裡無論哪種特定順序，且是28個字母的字串作為答案時，其正確的機率都跟道金斯選擇的目標"METHINKS IT IS LIKE A WEASEL"一樣的小。

我們可以使用藉由一個高速產生字母和空白組合的電腦程式，來模擬道金斯假說中的猴子。但是即使我們以每秒鐘幾百萬個組合的速率，並且給予宇宙的年齡這麼長的時間去嘗試，我們還是幾乎不可能正確的產生"METHINKS IT IS LIKE A WEASEL"這個目標字串。

道金斯想藉由這個範例來解釋對演化一個常見的誤解，這個誤解是，演化認為像是DNA或者像蛋白質這類有機物，這些東西是大自然中由原子隨機組成這麼複雜的形式。根據這些計算顯示，要隨機排列出任何蛋白質的胺基酸序列都是極度不可能的。

道爾金之後證明了有累積效應的天擇會大量減少到給定目標所需的步驟。根據道爾金的說法：

批評
一個常見的批評是這類程式必須要倚賴"鎖住"已知正確的字母才能運作。 創造論者宣稱"一旦字母落入屬於它的位置，道爾金的程式就確認這字母不會因突變而被改掉。",但是，如下面的範例所表示的，這個限制其實並不存在。

演算法範例 

雖然道金斯本人沒有提供他的程式碼，但是一個"黃鼠狼"式的演算法可以操作如下：

 從一條具有28個字母的隨機字串開始
 複製100個相同的字串，然後每個字母有5%的機率會換成另一個隨機的字母
 將每個字串與目標 "METHINKS IT IS LIKE A WEASEL"作比較，給每個字串進行評分(正確的字母出現在正確的位置上此字串得一分)。
 如果任何字串達到28分，也就是滿足條件時，程式停止
 否則，取用分數最高的字串，然後回到步驟2

在這裡，一個"字母"指的是大寫的字母或空白。 在道金斯的書裡面沒有明確指出字串的複製數目跟突變機率，這裡的100個複製跟5%的突變機率只是個範例。另外值得注意的是，正確的字母並沒有被"鎖住"：也就是說，即使一個字母已經出現在正確的位置，還是有可能在下一代突變的時候被改掉。

相關條目 
 遺傳演算法
 垃圾場龍捲風
 無限猴子定理

參考資料 
Dawkins, R. (1986) The Blind Watchmaker Oxford University Press.

外部連結 
 Many examples of Weasel programs in various computer languages 
 Computer Models of Evolution 
 The Weasel Applet (the "weasel program" written in Java)
 Dawkin's Weasel demo applet (in Monash University's Virtual Lab)
 Almost Like a Whale, by Ian Musgrave
 Talk.origins claim CF011_1 Dawkins' WEASEL simulation 
 A simpler, open source, web-based version

理查德·道金斯
人工生命
遺傳演算法
模擬軟體