累积选择
作者在这一章中用极简化的模型解释了自然选择的基本过程。首先,作者指出,自然选择是一种** 累积选择 ,也就是说, 每次筛选的结果称为下一次筛选的原料 **。我们可能碰到过这样的状况:你拿着一串钥匙来开一扇门,但是你忘记了是哪一把钥匙,你可能会一次次地尝试,试过的钥匙放在一边,最终很快就能找到正确的钥匙,这里就是一种 “累积选择” ,每次尝试都越来越接近正确的钥匙。
作者在书中用了一个更加有趣的例子来说明累积选择的高效性。有一种说法是这样的:“让一只猴子在打字机上随便打字,并给它无限长的时间,那么总有一天,猴子会‘创作’出人类所有的文学作品。”也许你可能会说这完全不可能,但要注意在** 无限 **长的时间下,这是有可能发生的。
也许无限长难以想象,作者接下来使用了更加实际的例子:莎士比亚作品中有这样一句话:“me thinks it is like a weasel” (这句话的含义并不重要,任何一组特定的字母排列都可以),作者编写了一个简单的计算机程序:让计算机随机敲出28个字符(上面那句话中的总字符数),如果和上面那句话完全一样,程序停止,否则重来。那么计算机要尝试多少次呢?答案是27^28,数量级上大约等于10000000000000000000000000000000000000000次!这就是一种 “单步骤选择” 显然,这样的方法十分低效。
如果稍微修改一下这个程序:每次尝试后** 保留那些正确的字母 **,比如第一次计算机敲出了kezsxvuopjyrih hidf hisdfdv e,对比一下可以发现,第二个字母e是正确的,那么在下一次尝试时,保留第二个字母e,随机敲出剩下的,如此这样不断继续,越来越接近正确答案。使用这样的方法,大概要尝试多少次呢?作者得出的结果是在几十次左右,高效了不知道多少倍!
那么,生物是如何体现累积选择的呢?答案就是生物最重要的特征:** 繁衍 **。每个生命个体都带有上一代的部分遗传信息,从而带有相似的特性,因此,累积选择成为可能!
树枝模型
作者首先用一种简化的画图规则来类比遗传的过程,计算机很容易实现一种 “树木发育” 的程序,一开始电脑画出一条竖直的线,然后这条线分出两条树枝,每一条树枝在分出两条树枝,以此继续。如图:
用这种方式来类比生物胚胎的发育。作者为这些“胚胎”设置了九个参数,每个参数可能会影响每根树枝的长度,角度,等等等等,这些参数就相当于生物的** 基因 **,拥有不同“基因”的树,会有不同的形态:
好了,演化开始。
从最原始的树(假设九个参数为0,0,0,0,0,0,0,0,0)开始,每次随机产生新的5棵树,新产生的树只改变一个参数,并且只在原来的基础上加一或者减一,也就是说,可以是(0,0,1,0,0,0,0,0,0),或者(0,0,0,0,0,0,0,-1,0)等等等等。
这样,第一代后代产生了,原始的树有了5个** 孩子 ,这些孩子的某些方面和原始的树有 微小 **的不同(某个参数加一或者减一)。之后,由计算机前的人类来扮演大自然,自然选择就是此人的喜好:坐在计算机前的人选出一个他最喜欢的后代,并让这个后代继续繁衍,至于剩下的四个,就被淘汰。经过几十代的“演化”,作者得出了十分惊人的结果:
这种模型和实际情况的一大差别在于,自然选择的标准是** 存活能力 **,即所谓的“适者生存”,在树枝模型中,这一标准是“计算机前的人的喜好”。
另一大差别在于,生物的突变率远远没有这么高,不可能在几十代内产生如此大的变化,但是在漫长的时间作用下,单细胞生物最终进化成人类这样复杂的生物成为了可能。