阅读更多
学概率的时候提到有这样一个“无限猴子定律”:一个具有无限生命的猴子(它不懂人类的语言)随机的敲击打字机,总有一天它会打出一本莎士比亚的书来。
这只猴子能打出任意的书来,有意义的无意义的,无意义的远多于有意义,猴子定律只是指出了得到这种有意义的书的可能性,不保证他的现实性,也许整个宇宙从诞生到现在的时间,这只猴子仍然打不出来,但是在接下来的时间里,总有那么一天完成这个任务。
个人理解,这个猴子定律说的是以概率的角度看,什么可能都会发生,从无序中能得到有序。生命也是一种有序的组织,它是如何诞生的,达尔文的进化论科学的解释了这一问题。
攻击进化论的人一个重要理由是:生命如此复杂,它的产生几乎是一个概率为零的事件。他们从概率计算认为,从宇宙诞生的时间算起,也无法自发生成一个细胞。
计算是对的,结论是错误的,原因是他们忽略了自然选择对这一过程的干预。如果没有干预,什么都在发生,也就什么都不可能发生。
从低级到高级,从简单到复杂,高度复杂的生命是由更为简单的生命一步一步地通过选择形成。突变是随机的,但是在自然选择的作用下,随机性大大降低。无序的没有意义的被自然剔除,剩下的进一步选择,一步一步,高级生命就这样诞生了。这样的高级生命也许不是最完美的,但确实最适合环境的
上帝是否掷骰子?上帝当然掷骰子,但是它也提供了一个甄别的手段,就是说上帝认为某种结果是合理的,合理的结果就留下了,不合理的就忽略了,在合理的结果中继续甄别。。。。。
上帝需要操心生命具体如何进化吗,他需要对生命的各方各面(组成物质,细胞结构,器官等等)进行设计吗?也不需要。只要提供了甄别,随生命怎么随机变异,他只负责对变异的结果进行赠别就行了,若干年后,当年简单的有机物变成了现在高度复杂的生命。
遗传算法模拟上帝创建生命的这一过程
计算机算法是指完成一个任务所需要的具体步骤和方法。也就是说给定初始状态或输入数据,经过计算机程序的有限次运算,能够得出所要求或期望的终止状态或输出数据。
算法也可简单描述为:给出一定的输入,得到合理的输出。一些算法我们可以在了解它的原理下计算出来,典型的如数学计算。但许多情况下数学模型很难精确求最优解,对于这些复杂问题,能够得到次优解就很满意了
遗传算法从代表问题可能的潜在解集合开始,模仿了自然进化模型,如选择、交叉、变异、迁移等过程。计算开始时,一定数目N个个体(即初始解集合)随机的初始化,计算每个个体的适应度(供选择的量化指标),选出适应度最高的个体,第一代就这样诞生了,然后得到的子代按一定概率变异,加入下一次选择,再变异,再选择。。。。。这一过程循环往复,直到满足求解条件为止。
也就是说,使用遗传算法我们不需要详细了解算法原理,数学模型,我们只要给出进化手段(变异手段,选择手段等),和足够的时间,遗传算法总能给我们找到一个次优解,尽管可能不是最优解
所以某种程度上遗传算法几乎是一个万能算法
但是为什么不容易得到最优解?所谓最优解,只会有一个,如果有两个就不叫最优解了。
回头看看地球上的生物进化。总的趋势是从低级到高级,从简单到复杂。我们把进化出理性生命看做最优解,是否必然只产生像人类,而不是别的什么理性生命呢?
注:这里提到的上帝是一个比喻,也就是常说的斯宾洛沙的上帝,即大自然,而不是圣经中那个具有人格的上帝
参考:
http://www.bullog.cn/blogs/fangzhouzi/archives/17777.aspx
http://www.bullog.cn/blogs/fangzhouzi/archives/17776.aspx