黄鼠狼程式
黄鼠狼程式(Weasel program),或说道金斯的黄鼠狼(Dawkins' weasel,或者the Dawkins weasel),是一个思想实验,并且有许多计算机模拟可以解释。 这个实验的重点是澄清一个演化系统 — 随机的突变混合上一些非随机的天择 — 与纯粹的随机几率是不同的。
这个思想实验是由理查德·道金斯提出,并且也是由他写出第一个模拟。各种其他的程式模拟则是由其他人写出。
概观
[编辑]在道金斯的著作The Blind Watchmaker里面第三章,他介绍了以下程式, 并且提到了著名的无限猴子定理:
I don't know who it was first pointed out that, given enough time, a monkey bashing away at random on a typewriter could produce all the works of Shakespeare. The operative phrase is, of course, given enough time. Let us limit the task facing our monkey somewhat. Suppose that he has to produce, not the complete works of Shakespeare but just the short sentence 'Methinks it is like a weasel', and we shall make it relatively easy by giving him a typewriter with a restricted keyboard, one with just the 26 (capital) letters, and a space bar. How long will he take to write this one little sentence?
这个情境是说,对于任何一个无意义的字串,假设里面有随机的28个字母,那么所有可能的组合就有2728, 或者说大约是1040,所以一只猴子产生出正确答案的几率是非常非常小的。这里无论哪种特定顺序,且是28个字母的字串作为答案时,其正确的几率都跟道金斯选择的目标"METHINKS IT IS LIKE A WEASEL"一样的小。
我们可以使用借由一个高速产生字母和空白组合的计算机程序,来模拟道金斯假说中的猴子。但是即使我们以每秒钟几百万个组合的速率,并且给予宇宙的年龄这么长的时间去尝试,我们还是几乎不可能正确的产生"METHINKS IT IS LIKE A WEASEL"这个目标字串。[1]
道金斯想借由这个范例来解释对演化一个常见的误解,这个误解是,演化认为像是DNA或者像蛋白质这类有机物,这些东西是大自然中由原子随机组成这么复杂的形式。根据这些计算显示,要随机排列出任何蛋白质的氨基酸序列都是极度不可能的。
道尔金之后证明了有累积效应的天择会大量减少到给定目标所需的步骤。根据道尔金的说法:
We again use our computer monkey, but with a crucial difference in its program. It again begins by choosing a random sequence of 28 letters, just as before ... it duplicates it repeatedly, but with a certain chance of random error – 'mutation' – in the copying. The computer examines the mutant nonsense phrases, the 'progeny' of the original phrase, and chooses the one which, however slightly, most resembles the target phrase, METHINKS IT IS LIKE A WEASEL.
批评
[编辑]一个常见的批评是这类程式必须要倚赖"锁住"已知正确的字母才能运作。 创造论者宣称"一旦字母落入属于它的位置,道尔金的程式就确认这字母不会因突变而被改掉。",[2]但是,如下面的范例所表示的,这个限制其实并不存在。
算法范例
[编辑]虽然道金斯本人没有提供他的程式码,但是一个"黄鼠狼"式的算法可以操作如下:
- 从一条具有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