1700268130
由于她另有要务,我只好写一个计算机程序,仿真一个随意敲键的孩子,或猴子,这里也有一些例子可以参考。
1700268131
1700268132
WDLDMNNLT DTJBKWIRZREZLMQCO P
1700268133
1700268134
Y YVMQKZPGJXWVHGLAWFVCHQYOPY
1700268135
1700268136
MWR SWTNUXMLCDLEUBXTQHNZVJQF
1700268137
1700268138
FU OVAODVYKDGXDEKYVMOGGS VT
1700268139
1700268140
HZQZDSFZIHIVPHZPETPWVOVPMZGF
1700268141
1700268142
GEWRGZRPBCTPGQMCKHFDBGW ZCCF
1700268143
1700268144
这个程序就这样不断制造产品—将随机敲到的28个键在银幕上显示出来(或打印)。要花多少时间才能敲出“我觉得像一只黄鼠狼”呢?想想所有可能敲出来的字母串共有多少—每串是任意按28个键的结果。我们必须做的计算与前面做过的血红蛋白分子一样,结果也是同样大的数字。敲第一个键时,有27种选择(不区分空位键与字母键,26个字母键加1个空位键),敲到正确字母的概率是1/27。头两个键都碰巧正确的机会是1/27乘以1/27,等于1/729,因为第二个键敲对的概率,与第一个键相同,可是头两个键都要正确的话,得在第一个键敲对了之后才算第二个键。这个句子全部28个字母都正确的概率,因此是1/27的28次方,就是1/27自乘28次。结果是一个非常小的数字,难以想象的小,以分数表现的话,分子是1,分母是1后面跟着40个0。说得委婉些,这个句子要花很久才敲得出来,什么《莎士比亚全集》就算了吧。
1700268145
1700268146
随机变异中的“单步骤选择”已经谈得够多了,让我们回头谈谈“累积选择”。“累积选择”会更有效率吗?效率能提升多少?答案是:有效率多了,即使我们开始觉得这是一个很有效率的过程,也可能低估它的效能。但是只要你仔细再想想,就会发现惊人的效率几乎是必然的结果。我们要再度使用电脑替代猴子,但是我们会对程序做一个关键的修改。一开始这个程序会随机按28次键,例如:
1700268147
1700268148
WDLMNLT DTJBKWIRZREZLMQCOP
1700268149
1700268150
然后从这一个随机序列“繁殖”下去。电脑不断复制这个字母序列,但是复制过程容许某种程度的随机变异—“突变”。电脑会检查这些复制出来“子序列”,从其中选出最接近标的序列Methinks it is like a weasel(我觉得像一只黄鼠狼)的一个,不论相似的程度多么薄弱。第一个这样选出来的“子序列”与标的序列实在不怎么像:
1700268151
1700268152
WDLMNLT DTJBSWIRZREZLMQCO P
1700268153
1700268154
但是这个程序会重复下去,电脑开始复制这个赢家,并容许同样程度的随机变异,并选出一个新的赢家。如此这般,10“代”、20“代”之后的赢家,可能仍然必须凭信心才能看出它们与标的“很像”。但是,到了30“代”,相像就不再是想象的产物了。到了40“代”,银幕上出现的字母序列,只有一个字母是错的。正确的结果在第43“代”产生。
1700268155
1700268156
第二次重跑这个计算机程序,正确的结果在第64“代”产生。第三次重跑,第41“代”就产生正确的结果了。
1700268157
1700268158
电脑实际花了多少时间繁衍出符合标的的那一代,并不重要。如果你真的想知道,电脑第一次完成整个程序,是在我出去吃午餐的时候。大约半个小时。(计算机玩家也许会认为这实在慢得蹊跷。原因是我的计算机程序是用BASIC写的,这种语言在计算机程序语言家族中相当“幼齿”。我改用PASCAL语言重写这个程序后,11秒就完成了一回合。)电脑做这种事比猴子快一些,但是速度的差异其实不大。真正重要的时间差异,是“累积选择”需要的时间与“单步骤选择”需要的时间。同一部电脑,以同样的速度,执行“单步骤选择”程序的话,要花的时间是:1后面加30个0,单位是年。学者估计的宇宙年龄大约是100亿年(1后面加10个0)。我们不必细究1后面加30个0等于宇宙年龄的多少倍,比较适当的说法是:与猴子或电脑要花的巨量时间比起来,宇宙的年龄实在微不足道—在我们这种粗略的计算方式必须容忍的误差范围之内。但是同一部以随机方式按键的电脑,只要加入“累积选择”的条件,达成同样的任务所需的时间,我们人类以常识便可以了解,在11秒与吃一顿午餐所费的时间之间。
1700268159
1700268160
现在我们可以看出:“累积选择”(这个过程中,每一次改进,不论多么微小,都是未来的基础)与“单步骤选择”(每一次“尝试”都是新鲜的,与过去的“经验”无关)的差别可大了。要是演化进步必须依赖“单步骤选择”,绝对一事无成,搞不出什么名堂。不过,要是自然的盲目力量能够以某种方式设定“累积选择”的必要条件,就可能造成奇异、瑰丽的结果。事实上那正是我们这个行星上发生的事,我们人类即使算不上最奇异、最让人惊讶的结果,也是最近的结果。
1700268161
1700268162
让人惊讶的反而是:类似前面所举“血红蛋白数字”的例子,却一直被用来反驳达尔文的理论。那些这么做的人,往往在本行中是专家,像是天文学或什么的,他们似乎真诚地相信达尔文理论纯以概率(巧劲儿)—“单步骤选择”—解释生物的组织。“达尔文式的演化是‘随机的’”这个信念,不只是不真实而已。它根本与真相相反。在达尔文演化论中,“巧劲儿”只扮演次要的角色,最重要的角色是“累积选择”,它根本就是“非”随机的。
1700268163
1700268164
天上的云无法进入“累积选择”过程。某种特定形态的云不能通过某种机制生产与自身相似的子女。如果有这种机制,如果云像黄鼠狼或骆驼一样,能够繁衍模样大致相似的世系,“累积选择”就有机会发生。当然,有时云朵的确会分裂、形成“子女”,但那还不足以让“累积选择”发生。必要条件是任何一朵云的“子女”应该与“父母”相似,不像“族群”中的其他“老爹”。这个差别极为紧要,最近有些哲学家对自然选择理论发生了兴趣,可是他们有些人很明显地误解了这一点。还有一个必要条件是:任何一朵云生存、繁衍复本的概率,与它的形态有关。也许在某个遥远的星系中,这些条件都发生了,而且经过了数以百万年计的时光,结果是一种虚无缥缈的生命形式,只是寿命短暂。这个题材也许可以写成一部很棒的科幻小说,题目我都想好了,就叫《白云记》吧;但是就我们所想讨论的问题来说,电脑模型是比较容易掌握的,像猴子/莎士比亚模型一样。
1700268165
1700268166
虽然猴子/莎士比亚模型用来解释“累积选择”与“单步骤选择”的差别很有用,它却在重要的面相上误导了我们。其中之一是:在选择繁衍的过程中,每个世代各突变个体都以它与最终标的(“我觉得像一只黄鼠狼”)的相似程度判生判死。生物不是那样。演化没有长期目标。没有长程标的,也没有最终的完美模样作为选择的标准,尽管虚荣心让我们对于“人类是演化的最终目标”这种荒谬的观念,觉得挺受用的。在现实中,选择的标准永远是短期的,不是单纯的存活,就是—更为广义地说成功繁殖率。要是在很久很久之后,以后见之明来看生命史像是朝向某个目标前进,而且也达成了那个目标,那也是许多世代经过短期选择后的附带结果。“钟表匠”—能够累积变异的自然选择—看不见未来,没有长期目标。
1700268167
1700268168
我们可以改变先前的电脑模型,将这一点也考虑进去。在其他方面我们也可以使模型更逼近真实。字母与文字是人类特有的玩意儿,我们何不让电脑画图?说不定我们甚至可以看见类似动物的形状在电脑中演化,机制是在突变的形状中做累积选择。我们一开始不会在电脑中灌进特定的动物照片,免得电脑有成见。它们得完全以累积选择打造—累积选择在随机突变中运作的结果。
1700268169
1700268170
实际上每个动物的形态都是胚胎发育建构的。演化会发生,是因为连续的各世代每一个胚胎发育都发生了微小差异。这些差异是因为控制发育的基因发生了变化(即突变,这就是我前面说过的整个过程中的小角色—随机因素)。因此我们的电脑模型也该有些特征,相当于胚胎发育与能够突变的基因。设计这样的电脑模型,有许多方式。我选了一个,并为它写了一个计算机程序。现在我要描述这个电脑模型,因为它能给我们一些启发。要是你对电脑没有什么概念,只要记住电脑是机器,会服从命令干活儿,可是结果往往出人意表。程序就是给电脑的指令单子。
1700268171
1700268172
胚胎发育是个非常复杂的过程,无法在小型电脑上逼真地模拟。我们必须以一种简化的玩意儿做模拟。我们必须找到一个简单的画图规则,电脑很容易照办,然后它也可以在“基因”的影响下发生变化。我们要选择什么样的画图规则呢?电脑科学教科书经常以一个简单的“树木发育”(tree-growing)程序,说明所谓“递归”程序设计法(recursive programming)的威力。一开始电脑画出一条垂直线。然后这条线分出两条枝杈。每一条枝杈再分出两条小枝杈。每条小枝杈再分出两条小小枝杈。这是个“递归”过程,整棵树因为继续在局部应用同一条规则(以这个例子而言,就是“分枝规则”)而不断地发育。无论树木发育到多大,同一条分枝规则继续施用于所有新生枝条的尖端。
1700268173
1700268174
“递归”的“深度”指枝杈分枝的“次数”;就是一条树枝长出后,可以继续以同样的方式分枝多少次。这个次数程序中可以事先规定,次数一满新生枝头就停止分枝了。图2显示了“深度”对“递归”结果的影响。比较“深”的递归树是个颇为复杂的图案,但是你仍可以看出那是同一条分枝规则创造出来的。当然,真正的树就是这样分枝的。一棵橡树或苹果树的分枝模式看来很复杂,其实不然。基本的分枝规则非常相似。因为同一条规则不断地施用于整棵树的生长尖端—主干分出主枝,主枝分出小枝,小枝分出小小枝,等等,树才长得又大又繁茂。
1700268175
1700268176
1700268177
1700268178
1700268179
图2
[
上一页 ]
[ :1.70026813e+09 ]
[
下一页 ]