进化解集(上)(10)
一切似乎都在朝着预期的方向发展,无论是成果还是问题。大约一周后,原点“算出”了1 1=2,依然是凑出来的。接着我将输入改为1 2,又过了五天,原点再度凑出了答案,不过这回,它忘记了1 1=2。
意料之中的瓶颈出现了,为了找出行之有效的解决方法,周五下班后,我召集参与项目的所有人进行了一次开放性讨论。
“一个丝毫不理解问题的吊车尾差生或许能蒙对第一道选择题,但要蒙对所有选择题的答案是不现实的,即使是同样的题目,在下次考试中他也未必能做出正确的选择。而原点的情况比这更糟,因为它做的是计算题而非选择题。”我开门见山简述了目前的困境,最后还特意调侃了一番以期营造轻松愉快的讨论氛围。但这招并没有起到预期的效果,大家早就知道这次会议的目的,从讨论开始前所有人都眉头紧锁面面相觑,毕竟现在谁也想不出解决这一问题的方法。这一回,又是编程的门外汉刘志涛率先提出了自己的见解。
“能不能同时检验1 1和1 2两种情况呢?这样原点就能同时算出1 1=2和1 2=3了。”
刘志涛的提案在会议室里引发了一阵轻轻的笑声。我和小组里的其他成员曾花过几分钟讨论其可行性,结论是治标不治本,不值一试。
“没错,当然可以。”我向刘志涛解释说,“你的想法很好,这样我们甚至能让原点进一步算出1 3=4。可问题是用穷举法让原点学会四则运算太不现实。”
我的话让会场的笑声更响了一些,但刘志涛没有退缩,他继续阐述着自己的观点:“进化就是从简单到复杂的过程。以生命进化的过程作比,原点只能算是氨基酸那样最简单的有机小分子,和拥有复杂生命活动的细胞甚至具有智慧的人相去甚远。所以我们现在要做的正是用看似不可能的方法不断尝试,让氨基酸聚合生成肽链。当氨基酸以特定的序列连接起来后便有可能形成具备一定功能的结构,最有名的例子就是朊病毒,一种能自我复制的蛋白质。”
刘志涛的话忽然启发了我。学习编程十几年来,我已经习惯于寻找最简单的算法去解决问题,就像用求和公式计算数列的和。但很多时候,我们根本不可能轻易找到那样的公式,在祈祷天才如高斯的人为我们提供简单算法前,为什么要想当然地放弃小学生才会用的“笨”办法呢?可回到现实,刘志涛的想法也有其幼稚的地方,没有求和公式,仅靠几个有限数列的和来猜测无限数列的和的规律在很多时候根本是天方夜谭。这般矛盾让我的思考陷入了死循环。
“但我记得病毒这样结构过于简单的生命无法单独存在。”前不久被我拉进来的聂磊向刘志涛提出了不同意见,“如果这样类比的话,我认为想让原点继续进化缺少的不是重复性尝试而是别的什么。”