计算机科学如何加入?
伽利略之后,数学成了刻画自然规律的通用语言。我们对物理现象的认识大部分都被写成数学语言,数学也被广泛用于预测将来的结果。生物学和社会科学似乎没有遵循这项惯例,这通常被归因于它们极端的复杂性。许多人都认为找到合适的数学支撑生物学或社会工程只是时间问题。我的观点是合适的数学已经找到了,就是计算机科学。
计算机科学及其相关的理论可以帮助认识传统数学对于理解复杂过程的作用。计算机输入的是程序和数据,程序操作数据中包含的信息,操作的结果称为输出。
物理世界可以用类似的方式理解。如果将物理定律视为宇宙的程序,物理结构就是输入输出。雪花是化学和物理定律作用于温度低于凝点的含有过量水蒸气的空气(输入)的结果(输出)。广义上我们可以将物理过程视为计算,自然规律作用于输入状态产生输出状态。
计算机理论所揭示的输入输出的关系对于理解各种复杂事物很重要。一个非常重要的原理就是,简单的规则作用于简单的输入可以产生极为复杂的事物。当输出作为下一轮计算的输入时尤其如此。有了合适的规则,重复过程运作得越久,输出就会变得越复杂。一个典型的例子是通过简单操作产生复杂图像的计算,反复用每一轮的输出作为下一轮的输入。图1.1展现了用这样的过程得到的图。物理宇宙中的许多事物也可以通过反复应用简单规则得到。雪花、星系和火山就是简单物理定律反复作用的产物。
图1.1 计算机反复应用简单规则生成的图形
计算机理论中还有一条不那么明显但同等重要的原理是,一些复杂事物无法通过应用简单规则得到,无论过程执行多长时间。这类事物只能通过应用复杂规则即长程序得到。由于化学和物理定律,以及传统数学中的大部分,都是处理相对简单的关系,通过计算机理论我们可以知道,应当有一些结构的形成无法表述为简单的数学关系。现代计算机技术提供了大量这样的例子。想一想用来创造这份文档的计算机程序。微软的WORD提供了各种服务,包括保存、格式、查找、语法检查和拼写检查。告诉我的计算机该如何做这些事的基本程序文件占据了8.4 M硬盘空间。因此,将我敲的字转化为格式化文档的“规则”比这本书(大约1 M文本)还长。越简单的字处理软件程序越短,但没法缩减到只有几条规则。没有哪个数学分支能为文档的格式化计算提供工具。同厨师烹制蛋奶酥一样,格式化最简单的方法是遵循一长串规则。之前给出的食谱就是现成的例子,不可能为蛋奶酥写出简单的做法。
如果输入和输出之间的关系可以用数学表示,输出就往往是可计算的。数学的威力在于提供捷径。如果存在简单关系,则经常无需通过执行具体的物理过程来得到输出。一个例子是行星未来位置的计算。如果关系不简单(程序很长),则往往没有捷径,如果要知道结果就只能老老实实地执行过程。计算机科学的确可以模拟自然过程,但如果条件复杂,过程又长,则精确仿真所需的计算会与被仿真的现象一样复杂。这类例子包括天气、经济,以及机翼在高速状态下的性能。
如果要考虑输入输出之间的所有可能关系,复杂的会远远多于简单的。没有人知道物理宇宙是否也是这样,但这至少说明我们也许会发现不能通过简单数学认识的现象。生命、生态和大多数社会现象可能都属于这一类。
在对规则的讨论中,大部分关注的是相同初始条件导致相同输出的确定性规则。然而,大多数物理过程和一些计算机程序遵循的规则都允许随机事件。如果有随机成分,即使规则简单,也无法预测具体的结果。当这样的过程被反复执行,每次的结果都会不一样。幸运的是,在许多这类情形中,可以通过统计平均来预测,我们可以称之为总体性预测。雪花就是很好的例子。预测下一个雪花的细节是不可能的,但雪花的特征在总体上却可以预测。在某种程度上生物进化也与此类似。进化过程允许某种程度的随机变化,虽然过去或未来具体的结果无法预测,大致的趋势却可以预测出来。