推荐!《第一推动丛书·综合系列》让你看过就回味无穷!

栏目:在线教育  时间:2023-03-27
手机版

  今日推荐:《第一推动丛书·综合系列(涉及未来图景、人工智能、复杂系统等,世界公认的思想家成书。《第一推动丛书》25周年全新集结,套装共7册)》 作者:梅拉妮·米歇尔;约翰·E.梅菲尔德;罗杰·彭罗斯。搜索书名开始观看吧~

  

  -----精选段落-----

  复杂的引擎

  他注意到将意向性赋予无感知无思维的事物往往能正确推论出它们在未来的行为并理解它们为何如此。为什么鸟有翅膀?为了飞。为什么它们要飞?为了觅食和躲避捕食者。为什么外套隔热?为了身体保暖。为什么鱼有灵活的尾巴?为了在水里游得快。所有这些例子都与对环境的某种适应有关。这样的例子数不胜数。为什么有这么多事物都是这样?答案在于这些事物从何而来的认识。换句话说,目的性来源于创造Ⅱ型事物的过程之中。

  虽然指令有产生复杂结构的惊人潜力,宇宙中大部分结构的形成还是没有依赖它们,而且其中一些还相当复杂。一个明显的例子是星系团。第3章还会给出一些例子,但没有一个可以被合理地认为是具有目的性。基于指令的结构的另一个不同之处是它们的形成。它们需要说明书,说明书不能违背自然规律,但自然规律并不提供说明书。指令不违背化学和物理定律,而是利用它们来让本来不可能的特殊结构或过程成为可能。

  目的性很早以前就受到宗教和哲学的关注。它是威廉·佩利1802年论证上帝存在的基础。他认为,如果没有造物主赋予目的,目的性事物(包括人在内)怎么可能存在?对此,道金斯在《盲眼钟表匠》中对进化如何导致目的性出现给出了优雅而有力的论证

  加里·齐科在《没有奇迹》一书中也探讨了复杂事物如何出现的问题

  根据定义,指令和Ⅱ型结果总是成对出现,而指令—结果对总是有某种动机。执行指令得到的产物对象满足了指令的目的,指令则是依某种需求、愿望或可能给出。第4章讨论了螺丝刀的例子。螺丝刀有用是因为它们适应螺丝头和人手操作。螺丝刀与岩石之类的Ⅰ型事物的区别不在于是不是可能有用,而在于如果没有指令,螺丝刀的制造实现是基本不可能的。在螺丝刀的例子中,创造指令是因为人们想拧螺丝。鱼适应水是为了生存和繁殖。在这个例子中的动机是延续生命。

  指令不是碰巧产生,它们的存在需要解释。在科学研究中,说某人(或神)想出了它们是不能被接受的。指令包含了特殊的信息,如果想对世界有深刻的科学认识,就必须研究这种信息的本质和来源。目前所知的唯一能产生新指令的过程就是进化计算。这里说的进化并不仅仅限于生命的进化,而是包含了一系列通过特定计算策略积累有用信息的活动。所有的进化过程,无论是否涉及生命,其背后都有一个不断循环的计算过程,这个过程能够从细微并且通常是随机的变化中提取目的性信息。这种计算的原理在于,基于现有的信息体产生细微的变化,然后根据一致的标准判断并保留能带来好处的变化。

  前面我说过,Ⅱ型事物的复杂性直接源自其指令的复杂性。蛋奶酥比煎蛋复杂恰恰是因为制作所需的步骤更多,其步骤由食谱给出。总的来说,指令集越复杂,产物就可能越复杂。指令引导过程,而过程越复杂,最终的输出通常也会表现出更大的复杂性。

  多步骤过程有天然的低概率性,而引导过程的指令集越长,概率就越低。与此相应的一个观察是,如果有合适的指令和执行指令的手段,产生的结构的复杂程度(和低概率性)会超乎想象。例如现代计算机,要制造这种机器,需要采矿、冶炼,制造半导体以及各种特性的塑料,再用这些材料制造出复杂的芯片和电线、电源、风扇等结构,然后还要精确地组装这些元器件。指令指导这一切:各个元器件的准确成分和设计、元器件的位置、安装顺序以及元器件的连接。只有化学和物理定律不用说明。没有这些指令,就根本不可能有电子计算机。遵循了指令,就自然会产生预设的最终结构。所有的现代技术和制造以及所有重要的人类文化创造,包括音乐、建筑、科学,甚至宗教组织,背后都是基于“指令”的原理,生物也是基于同样的原理。

  在进化系统中,变化以代为单位发生,目的性通过累积选择过程一点一点慢慢地建立。例如,鱼生活在水中,生长发育机制根据DNA编码的信息形成有灵活尾部的流线型身体。编码在DNA中的信息具有让鱼在水中生活和高效移动的目的性。但并不是一开始就是如此。鱼类的祖先曾经非常小,也不是依靠肌肉运动;在水中推进是依靠纤毛,纤毛是细胞上的凸起,运动起来类似桨。这些生物也有DNA,但它们的DNA没有编码鱼的流线型身体、尾巴或肌肉的信息。这类信息之所以出现在鱼的DNA中,是因为DNA在过去的变化如果有利于鱼类适应环境就被保留了下来。原型鱼吃小东西,因此体形大都有进化优势。发生让一些后代体形更大的突变后,更大的个体繁盛起来并因此拥有了更多的后代。但大都带来其他问题。体形大阻力也大,纤毛不再是高效的运动方式。随着时间推移,划水逐渐取代了纤毛运动,从而允许更大的体形。在自然选择的残酷压力下,游泳变得越来越高效。最终,纤毛运动被从鱼的谱系中彻底抛弃。

  效率可以作为对适应性的一种度量,经常会带来更高的繁殖成功率。一旦DNA的随机变化碰巧导致了更高的效率,这种变化就会在DNA的结构中保留下来。通过反复的试错和选择过程,流线型身体、尾巴和肌肉的目的性信息慢慢累积下来,并在鱼类的DNA中逐渐完善。这个过程从没有编码如何高效游泳的信息的DNA开始,最终累积了许多相关的信息。

  从计算的角度看,目的性的科学解释可以从创造指令的方式中找到。反过来,这种解释也意味着,不需要指令的事物没有目的性。它们也许会有某种用途,但它们不是为了某事而被创造出来。而指令是有目的性的,这是它们的根本定义和它们的形成方式决定的,因此它们所描述的事物也是如此。

  指令的来源是进化计算,我称之为复杂引擎,在对此进行深入探讨之前,我们需要进一步探讨计算的本质以及计算、物理过程和结构形成之间的关联。

  第2章计算

  什么是计算?

  当你在早上启动汽车,发动机会“决定”多少汽油和空气进入气缸;随着发动机升温,油气比例发生变化。踩下油门,比例再次改变。这是怎么实现的?当你听音乐或上网时,所用的设备又是怎样的原理?所有这些事情的背后都是计算机在起作用。今天已经很难摆脱计算机的影响。计算机计算账单,无需胶卷生成照片,追踪你的喜好,预测天气。计算机是操作信息的机器,计算机科学则是研究这种活动的局限和潜力的学科。这一章我们会探讨计算的概念。我希望你能认识到计算不仅仅是计算机中发生的事情,许多物理活动都与计算密不可分。

  计算机科学的基础是信息。信息可以被编码为符号,通常是向某人或某物传递意义的序列。第1章介绍了信息的一种度量:香农信息。这种度量对于一些目的很有用,比如确定存储一些你感兴趣的信息需要多少物理空间,或将其远距离传送需要多大带宽。这一章我还会介绍另一种度量——算法信息,它对计算机理论也特别有用。

  理解计算的概念的一个可行途径是将所有计算都视为一个过程,过程以编码模式(通常是符号序列)为输入,经过一系列变化,最终产生输出。输出可能有输入所不具备的用途。这个大致的思想表示在图2.1中。

  这引出了几个问题:操作信息是什么意思?计算中会损失信息吗?新的信息来自哪里?计算机要能“操作信息”的必要条件是什么?要回答这些问题,我们需要一些背景知识。

  我们从物理中“系统”的思想开始。系统是具有边界的某种事物。虚空不是系统;数学上的点或几何平面这类抽象思想也不是。宇宙可能是也可能不是系统,取决于其是否有边界。所有比有限宇宙小比亚原子粒子大的事物都是系统,也是更大系统的一部分。系统通常由多个部分组成,各部分之间可以有不同的组合方式。我们将组合方式称为系统的“状态”。在第1章我们看到,状态如果可以相互区分,就能够携带信息。至于信息是否有用则是另一个问题,取决于是否存在另一个系统通过与原系统的特定状态互动产生特定的变化。以开车为例,你自己是一个系统,车是另一个系统。两个系统互动。坐在驾驶席上脚踩油门踏板的你处于某个状态。脚踩下去你就变成另一个状态;这个新的状态导致汽车系统转变成一个新的更快的状态。你的某些状态就对汽车系统有意义;还有一些比如闭上一只眼睛或挥动左手则没有。在物理的世界里,意义来自系统状态的互动。如果没有互动,就没有意义。要具有意义,一个系统的特定状态必须对另外的系统有特定的影响。

  在信息科学中,意义经常与表示的概念联系到一起。计算的背后有一条原理是一个状态可以表示为另一个状态。这里的状态不必是在同一个系统。举两个例子,你在键盘上敲的字可以表示为计算机里的电压和电流;人类艺术家演奏的音乐可以表示为DVD上的银点样式。当某种表示影响到了你,它就对你有意义。

  计算机程序是由能导致计算机内部发生特定的状态序列并产生输出的命令组成。在计算机科学中,完成某件事的命令序列被称为算法。在其他场景中可能被称为食谱或指令。指令和算法表示完成任务的方法。大部分计算机算法都接受数据输入并产生针对某种场合的输出。数据和算法都包含信息。数据可以视为外部世界某方面的表示。这样来看,计算就是将对方法的表示(算法)作用于对世界某方面的表示(数据)产生内部表示(机器状态)的序列,并得到最终的表示(输出)

  计算的现代概念已经发展了几十年。在有计算机之前,人们通过演算解数学题,数学家和哲学家则希望能用机器模拟这个过程。20世纪30年代后期,年轻的英国数学家阿兰·图灵建立了现代计算机科学的数学基础。数年后他领导一个英国团队成功破解了德军密码。图灵对第二次世界大战的贡献很重要但鲜为人知,以至于在战后很难找到工作。直到他在1954年自杀后,他对战争的贡献才被广泛认可。图灵最大的科学成就源自对人如何解算术题的仔细分析。例如用58432除以83。大部分人都可以不借助计算器通过一些简单步骤演算出结果。小学就教了这个。表2.1列出了20个步骤,只要照着做就能得到正确答案。就连我这样在小学时讨厌长除运算的人都记得这些冗长的步骤。如果你不想一行行读这张表,就不用读它。

  任何人只要遵循这些步骤就能得到正确答案。他们无需“理解”他们在做什么,也无需具有在第3、第11和第14步一猜即中的天赋。他们只需知道判断一个数比另一个数大还是小,以及做乘法和减法。如果他们不知道乘法,也可以将乘法还原成重复相加(步骤会增加)。图灵认为任何计算,无论多复杂,都能通过顺序执行极为简单的步骤解决——甚至比表2.1中的步骤还要简单。由于这些步骤很简单,不需要什么聪明才智,因此可以设计一台(不会思维的)机器来执行这些步骤。然后他展示了如何设计一台这样的机器。为了纪念他,他提出的这个想法现在被称为图灵机,所有计算机专业的学生都会学。现代计算机的设计已经有了很大变化,但仍然是基于图灵的思想。原则上,图灵机可以通过顺序执行适当的无需思维的简单步骤来解决任何可计算的问题。

  第一台实用的计算机在第二次世界大战期间被建造,通过反复解数值问题计算炮弹弹道,通过系统地对数百万种可能性进行测试破译军用密码。无论具体的设计和执行计算的细节如何,所有计算机执行的都是一长串极为简单的步骤。它们的优势在于能高效准确地执行这些步骤。

  表2.1给出的20个步骤就是一个算法。算法的一个显著特征是它们的逻辑结构超越了对它们进行编码的物理系统。这意味着算法的结果独立于执行算法的机器。用丹尼特的话说,无论是“在纸上、在羊皮上、在计算机里……还是在天上”,长除问题的答案都是一样的

  计算机接受的程序(算法)是用由顺序排列的符号组成的语言写出来的。输入符号的顺序驱使机器做特定的事情。例如,在许多计算机语言中,命令“x=3”会使得计算机将数字3存储在标号为x的存储器中,随后的命令“print x”就会使得计算机将x的内容(例如3)送到打印机或屏幕上。符号的顺序决定一切;“rpint x”或“x print”都无法让数字3出现在屏幕或打印纸上。

  计算的概念不限于编码为符号序列的信息。2维和3维样式也可以被视为信息。不过,大家包括计算机专家在内都喜欢1维,因此几乎所有人造的计算机都是基于对顺序符号序列的操作。

  操作信息是什么意思?

  在计算的过程中,计算机产生一系列内部状态,每个状态都由之前的机器状态和新的输入决定。状态链条从输入数据、算法(规则)和机器的初始状态开始。所有这些,输入、规则、内部状态和输出,都编码信息。由于信息最终都位于状态中,计算机就可以视为一个状态(输入)与另一个状态(当前机器状态)互动产生最终状态(输出)的设备。所有状态都依约定表示什么。最简单的计算只涉及两个状态,初始状态和最终状态。

  计算机通过历经由算法和输入数据决定的机器状态序列执行计算过程。字处理软件体现了这个思想。我逐次键入字母和空格(输入),然后看见它们成行成页出现在屏幕上(输出)。每一次键盘敲击与机器当前状态的互动导致形成新的内存和处理器状态,继而又导致屏幕上的特定状态。改变输入就会导致不同的内部状态产生不同的输出,但过程始终完全由输入、程序和机器的设计决定。

  计算的广义概念涵盖了范围广泛的活动,可以分为3个宽泛的类别:可逆的、确定性的和随机的。每个类别都各有特点。你的计算机是确定性的并且是不可逆的。因为是确定性的,每次你运行同样的程序都会得到同样的输出。可逆计算指的是既能往前也能往后运行的计算。这意味着可以根据输出得到输入。前面我们考虑了除法问题58432÷83。解决这个问题得到答案704的过程是不可逆的。如果只知道数字704,无论是计算机还是你都无法重构出具体的问题。要让计算可逆,答案就必须包含重构所需的足够信息。比如“704是某数除以83的答案”就能通过适当的算法重构出原来的问题。

  随机计算每次运行都会产生不同的输出。至少要有一条规则具有随机行为。随机计算既不可逆也无法重复。但它们能产生你想要的一切,只要你愿意运行计算足够长时间。现代数字计算机是确定性的,设计者花费大量心力就是为了确保这一点。如果一台计算机对相同的输入每次都得出不同的输出,则对大部分应用都不会很有用。

  数字计算机之所以可以实现,是因为可以制造出能基于是/否、通/断或电平高/低的顺序组合执行逻辑运算的物理设备。在计算机中,从输入和初始的设备状态开始,顺序产生出设备状态(电平高低或开关通断的组合)的链条。将高电平作为1,低电平作为0(反之也行),就能用状态表示数字,计算机就能通过序列的高低电平逻辑操作实现数学运算。每一步操作都是图灵定义的作为所有计算的基础的简单步骤,引用名为逻辑门的电路实现。

  图2.2展示了两种逻辑门以及由它们组成的一个简单逻辑电路。电路用高低电平分别表示1和0,可以执行简单的逻辑运算。上面的符号代表XOR(异或)门,中间的是AND(与)门。两者都通过输入线(图中标为A和B)接收高低电平。AND门的两个输入如果都是1(高电平),输出就为1,否则就输出0(低电平)。XOR门的两个输入如果有且只有一个为1,输出就为1,如果两个输入都为1或都为0,输出就为0。如果将这两种逻辑门像下图那样连接起来,电路就能正确执行两个1和0的各种组合(0+0、0+1、1+0和1+1)的加法。如果输入A是1,B是0,上面的输出就是1,下面的是0。十进制数1的二进制表示是01(参见表2.2)。如果两个输入都为1,输出就为10(十进制数2)。这个简单的加法器不能输出11(十进制数3);它只能加到2。这个支配加法器功能的“规则”隐含在电路的物理结构中。更复杂的逻辑电路可以执行多位数的加减乘除

  计算机也可以建造成不需要通过硬连线而是以可编程的方式实现逻辑运算。也就是说图2.2中的XOR门和AND门不用像图中那样固定,而是可以与其他门用各种方式组合起来完成不同的逻辑运算。在这样的机器中,逻辑由程序决定。

  可以将逻辑和要操作的信息都作为输入,此时一般将输入分为两部分:程序和数据。程序可以视为由机器内建的(基础性的)规则集组成的规则。计算过程中根据程序规则操作数据。现代数字计算机通过编程基本可以实现任何逻辑运算。具有这种特性的机器称为通用机。其他计算机能够执行的计算,通用计算机都能通过编程实现。通用性定义了很宽泛的一类操作,称为可计算数学函数,其中涵盖了几乎所有已知的数学。这就是为什么电子计算机的用途如此广泛。

  计算机科学如何定义和度量信息?

  对于确定性计算,输出中呈现的信息必然也以某种方式呈现在输入中——信息必须来自某处。计算机不会产生信息;它们被重排、计算、复制和删除,但不会无中生有。古谚“太阳底下无新事”道出了确定性计算的精髓。第1章曾说过,对字符串信息量最简单的度量是长度。不过这个简单的度量没有反映出确定性计算不会产生信息的事实。显然许多计算产生的输出要比输入长。

  有一种被计算机学家广泛使用的度量,它来自一个认识,就是有许多方式都可以计算出特定的输出。实际上,有无穷多种方式。如果你不信,想一想有多少算术题的答案为8。4+4=8,2+6=8,12-4=8,440-432=8,还有很多,要多少有多少。但是对于任何给定的输出(答案),使用指定的语言,至少有一个最短的输入,即没有更短的输入能产生同样的输出。可能有几个最短输入,都有同样的长度,但总存在一个最短长度,没有长度比它低的输入能产生给定的输出。

  为了让你信服,考虑上面的例子,答案为8的所有算术题。显然,4+4(3个符号)比12-4(4个符号)或440-432(7个符号)短。有10个3符号的算术题的输出为数字8:0+8,1+7,2+6,3+5,4+4,8-0,9-1,1×8,2×4和8÷1。它们的长度一样,并且没有比这更短的。如果用二进制编码,这10个表达式的长度不一样,但上面的原理仍然成立:对任何输入,给定计算机和语言,存在某个输入长度,低于这个长度没有输入能产生给定的输出。

  20世纪60年代末,苏联数学家柯尔莫哥洛夫将这个认识形式化,并据此给出了不同于香农度量的信息定义。这个度量被称为算法复杂性或柯尔莫哥洛夫复杂性,其基础是通用计算机。前面说过通用计算机是可编程的,因此,它能执行其他计算机能执行的任何计算。你的电脑就是一台通用计算机。功能简单的计算器则不是。

  大体上,一个二进制串(0和1组成的串)的算法信息量就是输出为这个串的特定通用计算机的最短输入的长度。这个输入的长度依你选择的计算机和语言的不同而有所不同,但柯尔莫哥洛夫从数学上证明了这个长度的差异不会超过一个常数,这个常数只取决于选择的电脑,与输出无关。这意味着对于很长的输出(远远大于常数),无论采用什么通用计算机(和语言),得出的算法信息量基本是一样的。如果我们选择的机器接受自然语言命令,输入程序“重复1000次01”产生的输出由2000个交替的0和1组成(2000比特长)。这个程序如果直接转化成二进制大约需要50个0和1(50比特)。因此我们可以确定这个2000比特的输出的算法信息量不超过50比特。如果选择其他语言,上限可能可以降低,但绝不会低于15比特,因为重复的串(01)、命令“重复”和数字1000都对算法信息量有贡献。

  算法信息与香农信息的共通之处是确定性计算不能创造信息。输出的信息量可以比输入少,但绝不会多。因此算法信息符合我们的直觉,即信息无法无中生有。

  如果用一个对象的长度减去其算法信息,差值就是信息的“冗余”或“可压缩性”。这表明一个巧妙的对象表示可以比对象本身短多少仍可以通过适当的确定性计算恢复出对象。压缩文档比原文档短,但可以恢复出原来的0和1的排列。

  随机性的概念很难给出精确的数学定义,算法信息提供了一个有力的定义。如果算法信息量和符号序列的长度相等(准确说是差异小于由使用的计算机决定的一个小常数),则序列的结构被认为是算法随机的。这意味着任何确定性计算如果要将这样的序列压缩得更短,都会不可逆地损失一些信息。具有这种属性的序列没有冗余,被认为是随机的。

  这种随机性定义揭示出算法信息一个有趣的特性。当比较两个相同长度的序列时,最接近随机的那一个具有最高的信息量。当我们考虑复杂事物时,通常不会认为它们是随机的,而是具有复杂的特定结构。为了认识随机性与复杂性的关系,想一想重现一个特定的序列需要准确说明每一个符号。序列0101010101……(重复1000次01)有许多重复成分。因此可以写一个很短的程序输出这个序列。随机事物缺乏重复性,因此要输出一个特定的随机序列的程序就必须以某种方式包含序列本身。复杂事物的特点是有许多细节,要产生所有这些细节需要很长的程序,因此复杂的事物其算法信息度量有可能也高,但并不总是如此。

  简短程序能产生大的复杂性吗?

  对逻辑运算的数学分析揭示了确定性计算能做什么和不能做什么的基本限制。以下3条原理很重要:

  原理1:简单输入和简单变换规则能(但并不必然)导致输出具有大的复杂性。

  原理2:如果简单变换规则作用于简单输入产生大的复杂性,则变换需要很多计算步骤。

  原理3:许多复杂对象的形成需要复杂的程序。这类对象无法通过简单规则作用于简单输入产生,无论多少计算步骤也不行。

  沃尔弗拉姆深入研究了原理1,并在《新科学》一书中展示了他的许多发现

  图2.3到图2.6展示了4个NKS系统。这些例子被称为元胞自动机(CA),其状态是根据一些简单的规则随时间逐步变化。有许多NKS系统并不是基于元胞自动机,但这种计算能很好地说明这个原理。元胞自动机是元胞(不是生物学意义的细胞)组成的1维、2维或3维阵列,其状态定期变化。在图2.3中,规则集由左边图示的8条规则组成。每条规则由1个大格子中的4个小格子描述。左边显示的规则相对右边的计算区域旋转了90度。第1条规则的意思是,如果某一步相邻的3个元胞都是白的,则中间元胞下一步是白的。第2条规则的意思是,如果3个相邻元胞最右边的是黑的,则中间元胞下一步会变成黑的,以此类推。根据这8条规则,显然只要3个元胞有1个是黑的,中间元胞下一步就是黑的,只有3个元胞都是白的,下一步的中间元胞才是白的。

  从第1行元胞开始用规则集执行计算。你可以从任意的黑白图样开始。图2.3右边的初始行只有1个黑元胞,其余都是白的(第1步)。然后应用规则集254。产生的行有3个黑元胞,其余都是白的(第2步)。

  继续执行,会基于第2行产生出第3行元胞图样(第3步)。这一行有5个黑元胞。计算可以一直继续下去。可以看出,从这个简单的输入数据开始(第一行),应用这个简单的规则,结果很简单,就是一个生长的黑三角形。规则集254无法产生出比输入行明显更复杂的图样。图2.4展示了用不同规则集实现的一个更有趣的元胞自动机。这个例子也是从只有一个黑元胞,其余全白的初始行开始。产生的图样被称为塞平斯基填充,这是数学中一个经典的分形图形。继续更新,会产生越来越大的三角形以及各种大小的小三角形。

  如果元胞限于2种颜色(黑和白),并且每个元胞的颜色由上面的3个相邻元胞的颜色决定(如图2.3和2.4中的例子),则覆盖所有可能需要8条规则,因此总共有28=256种规则集。这些规则集大部分都只能产生简单图样,或是在第1行之后根本没有图样。少部分会产生更复杂的图样。

  图2.5展示了规则110作用于只有单个黑元胞的输入行的结果,产生的图样规则与不规则并存。令人吃惊的是,规则110是通用性的。意思是说通过让规则110一遍又一遍作用于适当的输入行可以构造一台通用计算机。这个理论结果证明了通用计算逻辑上可以很简单,简单规则也能产生大的复杂性。

  如果将元胞的颜色增加到3种(白、黑和灰),全部规则的数量从8条增加到27条,规则集的数量则增加到700多万种;但是同样,只有小部分规则会产生复杂的图样,大部分还是只能产生简单输出。

  稍微改动一下方案,让元胞的颜色由上面3个相邻元胞的灰度均值决定。3个元胞的颜色均值有7级灰度,因此需要7条规则组成规则集:白(3白)、浅白灰(2白+灰)、白灰(白+2灰或2白+黑)、灰(3灰或白+灰+黑)、黑灰(2灰+黑或白+2黑)、深黑灰(灰+2黑)和黑(3黑)。这样总共有37=2187种规则集。同样,使用这种规则集的元胞机大部分都只能产生简单输出,但少数会产生相当有创意的图样。图2.6展示了规则集1635作用于只有一个黑元胞,其余全白的初始行产生的图样。

  这4个简单的元胞机例子体现了简单规则反复作用于极为简单输入(这里是只有1个黑元胞,其余全白)会发生什么事情。显然对这一节标题中提出的问题的答案是,一些简单规则作用于简单输入能产生显著的输出复杂性。计算机学家设计了各种系统来测试将简单规则作用于简单输入,结论都是简单规则和输入的结合能产生显著的复杂性,但并不普遍,即便是在那些能产生复杂性的系统中,大部分规则集都只能产生简单结果

  图2.6说明了我们讨论过的几个信息度量并不符合我们日常的复杂性观念。所有人都会同意图中的图样很复杂。图2.6靠近底部的一行元胞似乎编码了很多信息,因为很复杂很长。但我们知道它的算法和香农信息度量很低,因为产生它的规则集和输入数据(1个黑元胞)很简单。因此,我们讨论过的这些信息度量并不是人类观察者所认识的复杂性的可靠指标。

  NKS系统的行为通常用计算机进行探索,但我们看到的这4个例子也可以通过在桌上排列黑白灰卡片完成。后面我们会看到在试管中也有类似行为的系统。可以将其视为是通过自组装名为分子砖的小单元执行计算。这种计算的输出是物理结构。

  物理结构能够计算吗?

  在现代的科学世界观中,是很少的一些相对较简单的规则作用于简单的初始条件,经过漫长时间的演化,产生出大量的复杂事物。物理系统同计算系统一样受限于规则,但这里的规则是化学和物理定律,而不是来自人的设计。如果物理定律没有逻辑可循,数学就无法刻画自然,也不会有物理学这门科学。规则在计算和物理系统中的同等地位引发了长期的争议,人们怀疑是不是可以将宇宙视为一台计算机。这一节并不想尝试回答这个问题,而是阐释为什么不可能在物理过程和计算之间划分明确的界线。

  加州理工学院的埃里克·温弗里与其同事创造了行为类似于1维元胞机的物理系统

  扁平砖块只能通过边结合形成1维或2维结构,形成3维结构则需要3维砖块。图2.7a上面一行展示了4个扁平砖块

  图2.7b展示了端部有4个结合点的3个砖块。这个例子中结合点有4种类型:A、B、C和D。基本规则是A与B结合,C与D结合。同样不允许倒置的结合。这些砖块上每个标有字母的结合点都有特定的形状。结合点的特定组合可以形成交错的结构,就像下面的3个砖块那样。

  在图2.7c中用了给出的4种砖块建造一个生长的结构。只有互补的形状才能结合。如果规则要求只有一端的两个结合点都能匹配的砖块才能结合,那图2.7 c上面的砖块就不能生成任何结构,因为这些砖块相互之间都无法结合。

  为了解决这个问题,必须从一个模板或种子行开始组装过程。图2.7c下面展示的生长结构从模板行开始,模板中间部分有一个灰色的结合点。Ⅰ型砖块可以在模板的任意位置结合,只有那个用星号标记的灰色位置除外。这个位置只有Ⅲ型砖块可以结合。在模板上组装的第1行砖块上面又可以形成第2行。第2行大部分也是由Ⅰ型砖块组成,但是在第1行唯一的Ⅲ型砖块上面相邻的是Ⅲ型和Ⅵ型砖块。第2行上面又可以组装第3行,可以一直进行下去。每一行都是由下面那一行的样式决定。如果将Ⅰ型和Ⅱ型砖块填成灰色(如图所示),将Ⅲ型和Ⅳ型填成白色,则白色砖块的生长样式为塞平斯基填充。与图2.4元胞机规则集90计算出的样式一样。模板上唯一的Ⅲ型结合点在物理拼砌系统中起到的作用与图2.3到图2.6的1维元胞机中唯一的黑色元胞一样。

  图2.7 c是画出来的。图2.8中展示的塞平斯基填充则是在试管中由DNA短链砖块自发形成的微观物理结构。这些物理砖块是图2.7c中设计的砖块的化学版本。图2.8中的结构是通过在适宜的盐水中加入混合的DNA砖块和少量模板形成的。原则上,适当设计的砖块和模板组成的分子拼砌系统能生成任何想要的序列。这意味着,理论上,电子计算机能实现的任何算法也能通过适当的砖块集合和模板的组装实现。这也意味着,只要有适当的砖块集合和模板,任何可以构想的2维结构都可以通过自组装创建出来。推而广之,“物质可以通过编程从简单的成分自我组装成有用的结构”

  埃里克·温弗里在他的博士论文中研究了砖块组装的潜在计算能力,他证明了可以设计出能执行(通用)图灵机计算的砖块集。这表明电子计算机能计算的原则上分子砖也能计算。

  目前的拼砌系统由于错误率很高,实用性还很有限。分子系统不像电子计算机那样表现完美,因为分子结合有时候会出错。尤其是两个结合点必须绑定到一起砖块才能形成大的结构的规则很难保证遵守。在图2.8的实验中就出现了一系列错误。在简单的自组装系统中,错误的传播会摧毁组装的确定性,从而限制能够成功形成的结构的复杂性。不过我们知道,还是有可能通过自组装形成非常复杂的结构。毕竟生物体就是这样的结构。

  错误传播的问题并不是只有分子砖组装系统才有,实际上所有形式的确定性计算都会有。你的计算机通过将错误率降到极低水平,有时候还结合纠错策略,从而避开了这个问题。纠错指的是在继续进行下一步之前检查上一个步骤是否执行正确的机制。在分子尺度的过程中,热噪声是无法避免的。因此许多基于分子组装的计算实现都必须有纠错机制。生命系统的存在依赖于复杂结构的分子自组装,因此也具有许多类似的策略。其中许多还无法有效地在人工的试管自组装系统中实现。

  物理对象的自组装的特点是通过砖块设计来物理体现计算规则。可以通过图2.7c与图2.9的对比说明这一点。图2.9中标有1和0的方块形成了交错的行。在图2.7 c中砖块基于互补形状形成行。图2.9展示了计算规则:“如果下面的2个砖块有1个为1就添加1块1型砖,如果下面2个砖块都为0或都为1,就添加1块0型砖。”这就是图2.2中用逻辑门实现的“异或”(XOR)逻辑函数。塞平斯基填充就是从一个单独的1开始,通过反复应用XOR逻辑函数得到的。规则集90(图2.4)是XOR逻辑函数的另一个实现。图2.8中分子结构的建构则是在化学上重复应用同样的XOR逻辑函数。这个规则没有明说,而是隐含在砖块的设计中。不同的砖块设计能实现其他逻辑函数并形成其他结构。

  图2.9也能帮助我们理解种子序列的作用。塞平斯基三角形的生长是通过将XOR函数作用于包含一个1其余全为0的初始行。如果种子行由隔得很开的1组成,则每个1都会长出塞平斯基三角形图样。最终,三角形图样会碰到一起,图样相互干扰,变得很复杂。由0和1的复杂样式组成的初始种子序列会导致后续的0和1样式同样复杂。通过巧妙地安排种子序列,只需用XOR函数作为规则,就能计算出特定的复杂序列。但XOR规则还不足以实现通用计算。你需要规则集110(图2.5)那样特殊(并罕见)的规则。

  想象一下人类活动尺度的砖块自组装,假设在拼图的每一块的边缘特定位置附上小磁铁。磁铁的强度被设置成只有两对磁铁正确对齐才能精密绑定到一起。这种特殊的拼图具有魔术般的特性,只需将图块放在平面上,所有面朝上,然后水平摇晃,让图块跟着晃动但不翻转,就能组装起来。最终,图块会以合适的角度相遇并结合到一起。慢慢地拼图就会自行组装。图2.10展示了这样的例子。

  在图2.10中黑色的小块是磁铁,摇晃的强度使得单独一对磁铁无法长期绑定在一起;只有当两对或更多磁铁在相同时间接触到一起,图块的结合才会牢固。只有图块1和图块2符合条件,可以无需其他图块的帮助结合到一起。一旦图块1和图块2结合到一起,图块3就能同它们结合,图块3结合后,图块4就能结合,然后是图块5,然后是图块6。图块6结合后,图块7和图块8就都能结合,而图块7和图块8都加进来后图块9才能结合,从而完成拼图。

  自组装将通常被区分开的物理过程和计算的概念连接到了一起。最终,物理结构的形成和计算都能通过状态之间随时间的互动来认识。确定性数字计算构成了一个极端,状态只由(0和1)两种组分形成,并且采用的规则总是被遵循(没有错误)。物理系统也是计算,但它们通常有许多组分,并且有噪声,因此错误很常见,即便知道规则也往往无法详细预测确切的结果。

  为什么需要长程序?

  我们大部分人在思考计算时,不会想到自组装砖块或NKS系统,甚至不会想到任何基于简单规则的物理系统;相反,我们想到的是需要长程序的应用,例如字处理软件和电子表格。根据我们的经验,大部分有用的计算机应用都需要长程序。通过研究一切可构想计算的所有可能的输出,数学家证明了大多数都需要长输入才能产生。考虑到计算和物理组装的密切关联,有理由认为我们想得到的许多事物也会需要长程序。对于NKS和拼砌系统,由于规则和砖块类型有限,这意味着大多数可能的行(输出)如果没有复杂的种子行就无法实现。因此虽然元胞机规则集90、110和1635产生的行很复杂(图2.4、图2.5和图2.6),如果种子行简单,大多数可构想的行永远也无法通过这些计算产生。大部分时候,要得到一个特定的行,你需要从一个仔细设计并且已经很复杂的种子行开始。种子行的细节决定了任何给定规则集的产出。再次强调前面说过的,计算机理论告诉我们,如果输入(规则和种子)简单,大多数可构想的结果都无法通过确定性过程产生。

  好的一面是,在符号语言的领域内只要有合适的长程序似乎就能生成一切。经常使用电脑的人对此有经验。长程序能产生令人炫目的输出,字处理、电子表格、网页编辑和计算机游戏只是一小部分例子。大多数日常计算机应用就是无法用短程序实现,再巧妙的设计也不行。

  这个简单的原理几乎肯定对物理世界有效。想一想生命和许多人类技术产品的形成。生物和汽车的产生都需要长而且复杂的指令。根据计算机科学的原理,我们可以想见,如果只依靠化学和物理定律,没有附加的信息,这类事物是根本不可能出现的。这就是指令的作用。

  总结一下这一章给出的许多概念,计算可以被认为是逻辑规则作用于已存在的状态产生新状态的过程。至于状态是发生在计算机电路里,还是含有分子砖的试管里,或是活细胞里,抑或是自组装的拼图,并不重要。

  系统的状态之间如果可以相互区分,系统就能携带信息。系统状态可以表示其他系统的状态,这一点很重要。这样意义就能从一个系统传递到另一个系统。信息和意义的概念与日常用法纠缠不清。在第1和第2章我们遇到了定义和度量信息的3种方法。用长度度量很简单,但无法体现全部;香农信息是基于状态的概率;算法信息则是基于过程(产生对象的计算)。在确定性计算中长度可以增长,但算法信息和香农信息不会。所有这3种都可以归结为计算的结果。还没有人提出过意义的量化度量。

  计算的一个重要原理是显著的复杂性可以通过简单规则反复作用于简单初始条件产生。NKS和DNA拼砌系统提供了实在的例子,化学和物理定律反复作用于物质简单的初始状态形成的物理结构也说明了这一点。下一章我们会看到这种结构的一些例子。

  计算机科学的另一个重要原理是一些复杂事物无法通过简单输入和简单规则的计算产生。生命以及许多生命的产物,包括人类社会和技术,似乎都需要长程序。长指令在物理世界扮演的角色就好像长程序在计算世界扮演的角色。没有它们,一些复杂的对象和行为就不可能产生。第4章我们会看到一些这样的例子。

  第3章免费的结构

  如果物理过程是计算,程序在哪?

  想象一个水分子飘浮在空气中,自由运动,直到碰巧遇到了一片正在生长的雪花。如果条件合适,它可能会粘上去,也有可能会弹开,继续漂浮。这个看似随意的过程不断重复,直到产生出一个美丽而规则的结构。想想流经岩石的河流。水分子无数次地碰撞,形成流向水底的漩涡。再想想规模宏大的氢气云在虚空中通过引力的互相吸引聚拢形成亿万颗恒星和行星组成的旋转星系。最后,想一想上一章讨论过的DNA砖块根据其化学形状组合到一起形成规则的三角形图样。

  这些过程有什么共同之处?都是自发形成。都有某种类型的基本成分:原子、分子或分子砖块,根据简单的规则相互作用,形成结构的过程都无需智能的参与。都有某种吸引力法则在起作用。一旦形成,结构之间的互动就会导致新的结构。结构形成结构,成型后又作为种子形成新的结构。如果沿着事件链条回溯,结构之前还有结构,最终模块本身作为规则作用的产物涌现出来。天文学家告诉我们,一切都源自137亿年前。已故的英国宇宙学家弗雷德·霍伊尔在一个广播节目中提出了大爆炸一词,以区别“稳态”理论(他喜欢的)和有明确开端的理论(目前被绝大多数宇宙学家所接受)。根据大爆炸理论,整个宇宙开始于无穷小无穷致密无穷热的点;物理学家称之为奇点。

  这就是目前关于宇宙的主流科学观点。自然规律无处不在;它们在所有尺度上,在所有时间和地点都起作用。时间、空间,也许还有规律本身都是起源于大爆炸。规律并没有写在什么地方,但是它们可以被人类观察者发现和描述。

  物理定律大部分是数学化的,可以用它们来计算宇宙从最开始又小又热的状态如何演化成现在的样子,但定律并不能解释它们自身的来源。现代宇宙学的圣杯就是找到能解释这些定律的自足的理论。对这个问题感兴趣的读者可以参考注释中给出的文献

  一些定律是确定性的,也就是说,在相同条件下它们总是会导致相同的结果。一些则是随机的,即使条件相同也会导致不同的结果。我们还知道在有些情形下确定性定律的作用会产生混沌,这时无法精确预测长期的结果。由于随机性和混沌,有时候无法准确预测未来的细节;因此虽然遵循的定律是一样的,每一片雪花却都不一样。

  第2章我们看到了通过简单计算产生的结构。这些例子表明简单规则作用于简单输入有时候会产生极为复杂的结构。系统的研究表明,许多(可能大多数)简单规则和简单输入的组合都不能产生复杂的结构

  类似于计算机的输出,物理结构的形成是不确定的,也就是说有许多途径可以形成特定的事物。可能很难发现具体是哪条途径产生所研究的事物。幸运的是,理解一个结构并不需要知道它到底是如何形成的;只要知道它可能的形成途径即可。再次以雪花为例。水分子从不同的角度接近生长的结构,并附着于表面不同的位置;每一个分子的碰撞细节决定了雪花的唯一性,但我们无需知道这些细节也能大体上了解雪花的形成过程。虽然每片雪花的形成细节都不同,但雪花形成的原理基本是一样的。

  当考虑形成某种事物的可能场景时,必须承认有随机创造的可能性,组分被偶然地放到一起。结构可以也的确会偶然产生,但随着组分数量的增加,出现特定构造的概率变得越来越小。即使是组分数量不太多的构造,特定的有序结构产生的概率也会小到宇宙的生命期内都不会出现。我称这个为概率问题。如果在某个场合遇到了概率问题,就需要另外的解释。

  第1章说过事物可以分成两种结构类型:I型(基于简单规则)和II型(需要复杂规则)。有一种完全不同的对结构分类的方法来自热力学的研究。根据这种分类方法,一些事物的形成是当系统接近热力学或化学平衡态时,另一些事物的形成则是当系统远离热力学或化学平衡态时。近平衡态结构的例子包括水晶和太阳系。除非有外力改变系统,否则这种结构会一直维持下去。这种结构总是处于特定的平衡态,处于系统的最低能态。远离平衡态结构的例子包括流体中的漩涡,湖中的波浪和太阳。这类结构被认为处于稳态而不是平衡态。例如,生物体就是稳定的非平衡态。非平衡态结构的存在也有赖于力的平衡,但它们的形成只有在有能量稳定流经系统时才有可能。例如当你给某个设备插电或当风刮过湖面形成波浪时。如果能量流停止,就会失去稳定性,结构溃散。简而言之,在平衡态,只有在改变结构时才需要能量,而在非平衡态,维持结构就需要能量。

  还有一种分类方法是分为静态结构(不动的)和动态结构(动的)。无论是平衡态还是非平衡态结构都有运动。例如,太阳系中行星围绕太阳转,卫星围绕行星转,就是运动的平衡态结构。这种运动不需要来自太阳或其他地方的持续能量输入。相应的,当你将浴缸中的水放掉时则是静态非平衡态结构,虽然水分子在排下去时在转圈。在水流进下水管时,漩涡的形态基本保持不变。必需的能量流是由水释放的势能提供的。

  让事情变得更复杂的是自然界充满了短暂存在的结构。这类事物持续时间不长,形成了系统的暂态。在长期结构和暂态结构之间没有明确的区分。太阳系对我们来说似乎很久远,但相对于银河系的生命却很短暂。在非平衡态结构中,经常有结构从一种形态变成另一种形态,但并不溃散。

  让物理结构成为可能的是相反的力的平衡。在特定的条件下物理定律描述的力相互作用。一些物理定律描述物质聚拢的趋势,另一些则描述远离的趋势。在引力和斥力之间自然而然会有平衡点。平衡就会产生结构。我称之为免费的结构

  下面我们来举两个例子,看看吸引和排斥律的相互作用是如何导致结构的自发形成。两个例子中结构都是通过系统达到热力学平衡而形成,不需要指令。

  如何解释一粒盐?

  食盐由钠和氯组成。同其他原子一样,钠原子和氯原子也是由组分组成:带正电的质子,带负电的电子,以及电中性的中子。质子和中子在原子的中心被强大的核力紧紧束缚在一起,电子则在外围。我们的宇宙有一条定律是正负电荷互相吸引。引力与带电物体距离的平方成反比,这就是著名的库仑定律。这条定律可以表述为10个符号的简单代数关系式:

  库仑定律精确描述了带正电的质子与带负电的电子之间的引力,以及两个质子或两个电子之间的斥力。根据这个定律,大部分原子最喜欢的状态是相同数量的电子和质子尽可能紧密地结合在一起。钠原子有11个质子和11个电子,氯原子则各有17个。如果原子的质子和电子的数量一样多,我们就说原子是电中性的。不过,原子有可能有不同数量的电子和质子。这时原子就具有净电荷,或正或负,我们称之为离子。

  根据库仑定律,电荷越接近,作用力就越大。如果只有这条定律起作用,则钠原子中的11个电子和11个质子就会挤碎在一起,也就不会有我们知道的钠原子。这一切之所以没有发生是因为量子力学和被称为泡利不相容原理的规则。量子力学也是可以表示成简单方程的规则

  量子力学的一个特点是,有2、10、18、36、54和86个电子的原子特别稳定。由于钠的电子数量11,将一个电子拉离原子(变成10个电子)所需的能量很少。一旦失去了第11个电子,就变成了钠离子,具有11个质子,10个电子,和+1的净电荷。氯原子的情形也类似,每个低能级上各有2个电子,能级九上则只有1个电子。由于中性氯原子有17个电子,而18个电子特别稳定,也就意味着氯原子倾向于接受一个额外的电子。这使得氯原子变成氯离子,总净电荷为-1。量子力学、库仑定律以及数字的相互作用赋予了每种化学元素独有的特征。

  当等量的钠原子和氯原子混合到一起,就会发生自发的反应,使得系统转变成新的平衡态。这个化学反应会释放热(能量),每个钠原子失去一个电子,每个氯原子获得一个电子。根据库仑定律,带正电的钠离子和带负电的氯离子相互吸引,但不能距离太近,因为填充的能级(化学的轨道)不能相互渗透。当所有钠离子都被氯离子包围,氯离子也被钠离子包围,形成非常规则的3维结构,相抵触的规则之间就会达到最优平衡。能级的物理维度决定了离子之间的最优距离。钠离子和氯离子具有不同的大小,能平衡物理和几何不同需求的状态是一个规则的网格,每个氯离子周围有6个钠离子,每个钠离子周围也有6个氯离子。这个规则的立方体结构向各个方向延伸,从而形成我们所熟悉的盐晶;在适当的温度和浓度条件下钠离子和氯离子相遇就会自发形成这种结构。当钠离子和氯离子溶解在水里并且水缓慢蒸发时这尤其可能发生。

  盐晶是室温下钠和氯离子的低能(平衡)态。维持它不需要能量流,结晶过程中也不需要外来的能量源。晶体是免费结构的简单例子。3个简单规则——库仑定律、泡利不相容原理和量子力学——的相互作用决定了其结果。盐晶的形成可以通过有合理可能性的初始条件(例如,溶解于水的钠离子和氯离子以及逐渐失去水)和3个规则得到解释。其他化学成分的存在可能让情况变复杂并导致其他结构的形成;但适合盐晶形成的条件并不是那么罕见,岩盐(氯化钠晶体)在地球上也是很常见的矿。

  结晶是计算吗?在第2章我们看到,DNA砖块根据简单规则的结合就能“计算”结构。在这两种情形中都没有常规意义上的算法,但都是规则作用于初始结构(输入)产生出了最终的结构(输出)。这与第2章图2.4中用元胞自动机的计算创造出各种大小的三角形从而形成结构有多大区别吗?在这些例子中都不存在明显的程序,作用于结构的规则决定了发生的事情。

  太阳系是怎样形成的?

  运动的平衡态结构的一个例子是太阳系。我们的太阳系大部分也可以视为三个作用定律的产物,分别是能量守恒、动量守恒和引力。能量守恒定律说的是能量既不能创生也不能消灭,只能转换形式。常见的例子包括化学能转换成火的热能,跳伞时势能转换成动能,发电机将机械能转换成电能。动量守恒说的是运动物体除非受到外力作用,否则会一直保持运动速度和方向。引力定律的经典形式说的是两个物体会互相吸引,吸引力正比于两者质量的乘积,反比于两者距离的平方。引力定律的表达式类似于库仑定律,只不过吸引的是质量而不是电荷,并且质量从不互相排斥

  如果不在意细节的话,太阳系的形成很容易理解。故事大致是这样。在宇宙中不断有恒星诞生。在太阳出现之前,空间中有气体和尘埃组成的云。云中大部分是氢和氦,但也包含碳、氧、氮、铁等在现在的太阳系中找得到的元素。氢和氦大部分在宇宙大爆炸最初的几分钟里形成,其他元素则在恒星中形成,恒星在超新星爆发后将其组成物质抛散到空中变成尘埃微粒。这些超新星很重要,因为它们创造了重元素,并且爆炸产生的物质流会导致附近的尘埃和气体云运动,分布变得不均匀。

  空间中不均匀的气体云是不稳定的。引力定律决定了所有原子、分子和尘埃会相互吸引。结果原子向原子运动,物质块向物质块运动。动量就是对这种物体相对运动的度量。

  对于运动的粒子,如果最初没有朝质心运动,动量守恒会阻止它们直接相向运动。动量守恒和引力定律的交互作用会使得粒子围绕高密度的中心旋转。

  能量也必须守恒。当粒子相互旋转时,它们的速度会增加,因为引力势能会转换成动能。随着相互吸引的气体和尘埃粒子旋转得越来越近,它们的速度也会越来越快,发生碰撞越来越频繁。碰撞后会发生什么取决于粒子的化学性质。一些碰撞是弹性的,粒子就好像台球相互弹开。一些碰撞是无弹性的,粒子就好像橡皮泥一样粘到一起。无论哪种碰撞都必须遵守能量守恒和动量守恒。

  碰撞还会产生热,以红外辐射的形式放射。粒子碰撞、弹开和黏合到一起的结果是黏合的粒子越来越多,并且所有粒子的运动变得协同一致。所有粒子聚拢并降低速度,导致热能损失。由于旋转,气体云会变成盘状。大部分尘埃和气体会在中心附近,少量在外围。能量和动量守恒使得中心附近的粒子和气体运动得最快,最外面的物质则运动得最慢。随着分子越来越接近旋转中心,碰撞也越来越频繁。碰撞越多释放的热量也越多,中心也变得更加热和致密。最终云团中心变得如此热和致密,以至于开始出现热核反应。这又会产生更多热和辐射。辐射将原子和分子外推,与向内的引力相互抵消。

  当辐射导致的外推与引力的向内拉相互平衡,就会形成稳定的结构;我们称之为恒星或太阳。这时外部的气体和尘埃盘变得引力不稳定,因为大块环绕物质的引力会改变附近物体的轨道。改变的轨道相交,导致的碰撞形成更大的物体,对附近的聚集体、气体和尘埃的引力也越来越大。变大的物体相互吞噬,最后只留下少数大的聚合体(行星)。行星围绕太阳形成稀疏有序的结构,相互之间的距离遥远,不会相互干扰。如果它们靠得太近,就会相互拉扯偏离轨道并最终相撞。

  大致就是这样。实际的细节极为复杂,但三个简单规则的交互确保了,只要存在规模合适的、运动的和不均匀的气体尘埃云,就会形成有序的太阳系结构。太阳系的具体细节取决于初始气体云的大小和成分“黏合”规则(量子力学)和热核反应的规律。不过只要考虑三条简单规律——引力、动量守恒和能量守恒——就能大致理解太阳系有序结构的形成。由于宇宙中有大量的气体和尘埃云,可想而知太阳系必定很常见,虽然最近才开始对它们有所认识。运动在太阳系中扮演了重要角色,因为只要物体在运动,就要遵循动量守恒。只要质量块不是直接相向运动,动量就会对抗引力,行星轨道就是沿直线运动的趋势(动量)和相向运动的趋势(引力)之间平衡的结果。

  太阳系体现了两种结构。行星的稳定轨道是平衡态结构。行星的持续运动和分布不需要能量输入,只要没有摩擦和外力,太阳系会永远运转下去。太阳中心的结构则不同。如果核反应堆耗尽,太阳就会缩减到目前直径的百分之一。如果质量足够大,就会变成黑洞。恒星需要热核反应提供的持续能量来维持其稳定结构。它是非平衡态结构。

  非平衡态结构如何形成?

  不均匀加热的流体和气体是另一种自发形成结构的例子。这种结构比吸引和排斥的简单平衡形成的结构要难理解一些,但也更为引人入胜。

  烧水就能观察到非平衡结构。如果从底部加热一盆水,就会发生惊人的变化。如果加热不剧烈,不会发生什么值得注意的事情。在亚微观层面上,与盆底碰撞的水分子会加速反弹,通过与活跃振动的盆底原子碰撞获得动能。能量通过碰撞在水中传递。如果加热不剧烈,表面的水会比底部的水温度低,但不会低很多。如果提高供热,更多热量会被传递给盆底,剧烈的碰撞会增多。同时表面和底部的水温差别会增大。

  热水比冷水的密度低,因此当加热到一定程度时,就会出现高密度的冷水在上面,低密度的热水在下面的不稳定情形。当容量相同,高密度冷水会比低密度热水受到更大的地球引力,如果受力差别大到一定程度,上面的冷水就会通过对流和热水交换位置。水分子在液体中不停的碰撞,因此活动并不那么自由,而是协同运动。在一些区域,水会一致往下流,另一些区域则会一致往上走。在特定条件下,从底部往表面传送热量的最佳方式是一种被称为对流环的协同运动。如果液体很薄,就可以观察到特别有趣的情况。这时表面张力压制了浮力,如果盆很平,热量传递很均匀,就会自发形成非常规则的六边形对流环,这被称为贝纳德流(图3.1)。在这种结构中,水从每个环胞的中心上升,在环胞边缘下降。如果条件没有严格满足,环胞就没那么规则。如果将液体限制在两块平板中间,顶部不开放,就会形成翻滚(称为瑞利—贝纳德卷)而不是六边形环胞。

  这些规则运动很稳定,只要对盆底的供热量合适(不太多也不太少)就会一直保持。供热太快,就会变混乱。供热太慢,协同运动就会停止。

  对流环胞是非平衡态结构的经典例子,大量分子自发协同运动,无需指令告诉它们怎么做。这个特性使得一些科学家提出远离平衡态的自组织有可能为生命系统的许多复杂性提供解释。这个问题还悬而未决。贝纳德流还不是特别复杂。同晶体类似,它们也是源自简单规则的交互作用。对于上表面敞开的薄液层(贝纳德流所需的条件),起作用的是黏性、表面张力(分子之间的吸引力)和热运动(扩散)

  有一个基于对流的更复杂的结构是雷暴。暴风雨在许多方面类似于贝纳德流,不过是发生在大气中而不是液体中,浮力是驱动力,只是环境不像火上的平底盆那样规整。大气对流还有其他特点,空气上升会变冷,密度降低,当温度降到凝点以下水蒸气会凝结成水。同时水凝结时会释放热量。上升的湿空气凝结产生的热量会让空气升得更高,从而进一步冷却。

  热带风暴开始于晴热的早上,低空大气中有许多水蒸气。太阳光加热地面或海面,反过来加热低空大气。低空大气逐渐变得越来越热。最终大气变得不稳定,底层的热空气上升,上层的冷空气下沉,很类似贝纳德流,但水蒸气的存在让事情变得不同。根据理想气体定律,上升的空气扩张冷却。当冷却到一定程度,水蒸气凝结成水滴,释放热量。释放的热量加热空气,导致其进一步上升,并继续扩张冷却;这反过来又导致进一步冷凝和释放更多热量。空气上升后,附近的低层温暖湿空气流入补充,产生更多水滴。小水滴碰撞聚集成大水滴。

  最终,上升的空气无法支撑不断增大的水滴,水滴开始下降。水滴在下降过程中会裹挟空气分子产生向下的气流和雨滴。水滴会聚集自由电子,带有水滴的风在云的不同区域产生大的电离,放大了云层和地面的电位差。当电离大到一定程度,就会通过集中的电流中和,也就是我们看到的闪电。这种电流会让空气局部剧烈升温,引发声光现象。含有水的空气的上升下降也会产生水平方向甚至旋转的风。风暴通过不断补充湿热空气和降雨(冷到一定程度就降雪)排出冷水维持。一旦没有了上升的湿空气,风暴就结束了。这一般是因为太阳下山了,也有可能是因为流入的是干空气,或者风暴遇到了高空暖气流。

  类似于晶体,贝纳德流和雷暴也是少量简单规则作用于不是特别罕见的初始条件形成的。

  结构必须有永久部分吗?

  风刮过水面会形成波浪,风越大,浪就越高。水波是非平衡态结构,它们的形成有些类似于贝纳德流,不过能量的来源是风。类似于雷暴,形成波浪的分子也只是暂时参与。它们短暂地成为一个长期结构的一部分,结构离开时并不带走分子。从这个角度来说,波浪和雷暴独立于它们的组成成分(分子)。许多结构都有这样的特点,包括我们自己的身体。为何会这样?

  水波提供了一个很好的例子。当风刮过平坦的水面,空气分子与水面的分子碰撞,导致它们运动。液体分子相互牵制,因此无法运动很远。由于微观的不均匀性,风的分子与部分水分子的接触更多。这导致它们“堆叠”,就像贝纳德流一样,这种运动是大量分子的协同运动。最初的堆叠只是涟漪,一旦形成涟漪,迎风面的分子受到的风力就会大于背风面。由于分子不断相互碰撞,能量沿着水面在分子之间传递。由于水很难被压缩,每次运动都必然伴随着补充运动。在各种限制下,自发出现的协同运动是分子沿垂直方向的环运动。大量垂直的环形运动的总和就是波浪。随着波浪经过,分子前下后上转圈(图3.2)。

  位于波浪顶部的顺着风向运动,位于浪中间的则反向运动。所有分子都有节奏地前下后上运动,但不会运动很长距离,虽然波浪可能会走得很远。这种协同满足了随风力运动和“补充”浪顶向前运动的水的要求。表面的分子没有离开表面;水面则随着分子的环形运动起伏。表面下层的分子也作环形运动,但越深圆环越小。

  大量水分子高度协同的运动组成了动态非平衡结构。风刮得越大越久,环就越大,产生的波浪结构也越大。一旦风停了,有组织结构就会逐渐耗散,波浪也越来越小。运动的计算很复杂,但决定波浪形成和推进的规律很简单,只不过是黏滞性(水聚在一起)、不可压缩性、风传递给水的能量以及水分子之间的能量传递(守恒)。分子对波浪结构的参与是暂时的;它们参与一次循环然后退出。结构本身就好像是一个对象。这里同样是简单规则作用于平常的初始条件就自然形成结构。

  行为是一种结构形式吗?

  物理事物由规则作用于3维空间的物质产生;行为则由规则作用于时间的结构产生。水波有节奏的变化,方式很简单。如果系统可以储存势能并间歇释放,则能产生更复杂的行为。一些会有不规则但有特点的行为。闪电就是这样的例子,另外还有陡峭山坡上不稳定的积雪。一旦大意的滑雪者震动了雪堆,积雪就会通过一系列复杂的运动沿山坡崩塌。储存的势能通过这种运动释放,然后再次累积至临界态。

  物理学家在实验室用沙子研究了产生崩塌的系统的行为。结果发现,仅仅只是缓慢堆积沙子,其他什么也不做,沙堆也会表现出复杂得惊人的行为。随着沙子逐渐累积,沙堆越来越高,坡度也越来越陡。最终,再增加一点沙粒就会导致崩塌。继续堆积沙子,会重建沙堆,直到再次发生崩塌。有趣的是,崩塌的规模大小不定。有时候会出现大规模崩塌,但规模越小的崩塌越频繁。如果仔细测量,会发现崩塌的规模遵循所谓的“幂律”

  许多现象都表现出幂律。其中包括许多看似不相关的事物,例如地震的大小和频度,挪威海岸线上峡湾的大小和数量,英语词汇的使用频度和排名,生物灭绝的规模和频度,以及城镇和城市的大小和数量。佩尔·巴克在《大自然的运作原理》一书中对此有更详细的讨论

  毫无疑问自组织临界态是一些非平衡态系统的特点,但目前仍不清楚自组织临界态对于复杂性的全面认识有多重要。就好像开车,你的里程表从1开始增加,直到10,里程表的第一位变成0,第二位增加1。这是一种崩塌,第一位记录的前9千米被舍弃,代之以十位的1。这个模式不断重复,直到100千米,这时会发生更大的崩塌,前两位的记录被舍弃,代之以第三位的1。如果将里程表翻转的规模与各种规模的翻转次数的对数描出来,就会得到一条表现出幂律行为的直线。里程表表现出某种自组织临界性,但并不能给复杂性问题带来多少认识。沙堆的例子吸引人的地方在于,简单系统通过表现出不同规模的崩塌能产生显著的行为复杂性。崩塌的发生在统计上具有可预测性,但除非你跟踪沙堆里的每一粒沙子,否则具体的一次崩塌是不可预测的。

  崩塌可以用计算机模拟吗?

  在第2章我们看到,在计算和物理过程之间没有明确的界线。同样,沙堆的思想也很容易通过计算机来体现。同物理沙堆一样,算法沙堆产生的复杂结果也具有统计幂律性。

  图3.4给出了一个例子。原理如下。计算机程序在一个有25个(虚拟)格子的“板子”上随机堆积(虚拟)沙粒,图中每一个大方块就是一块板子,填有数字的小方块就是格子。每个格子能堆3粒。一旦堆到4粒,就会散落出去,周围4个格子每格1粒,原来的格子变成空的(图中的0)。如果板子边缘的格子有4粒,1粒就会从板子边缘“掉下去”,离开系统。

  从空板子开始(全0),沙粒逐渐累积,直到一些格子有3粒,如图左上的板子所示。如果3粒沙的格子再堆1粒,就会触发一系列动态过程,具体的发展取决于板子上所有格子的状态。在图3.4的板子2中,中间格子堆了第4粒沙。4粒沙散开,导致两个相邻格子有了4粒沙(板子3),继续散开又导致另一个格子有了4粒沙(板子4)。这个过程一直持续,直到所有格子都没有4粒沙(板子9)。这个过程就是崩塌,这次崩塌包括9个格子的10次散落事件。这个过程中,中间格子散落了两次。板子9中没有格子有4粒沙,并且标出了所有曾发生散落事件的格子。

  堆一粒沙导致的后果取决于堆放的位置和板子上所有格子的状态。如果沙粒被堆放到没有3粒沙的格子,则不会发生崩塌;如果沙粒堆放的格子有3粒沙,但相邻格子都没有3粒沙,则崩塌规模为1;如果相邻格子有3粒沙,则会发生更大规模的崩塌。如果生成随机初始状态的板子,反复玩这个游戏,并描出崩塌规模与崩塌次数的对数关系,结果将是一条表现出幂律的直线。崩塌规模的上限由板子大小决定。板子越大,能产生的崩塌就越大,但总是越大的崩塌发生的频度越低。

  这个基于计算机的系统再次阐释了什么是自组织临界性。除非有格子堆了3粒沙,否则就不会产生崩塌。所有格子都不到3粒沙的板子是亚临界的。一旦有格子有了3粒沙,系统就是临界的,就有可能发生崩塌,但崩塌何时发生,规模多大,取决于系统的具体状态和下一粒沙落在哪里。系统不能越过临界态,因为4粒沙的格子是不被允许的。因此,只要有新的沙粒落到板子上,系统就必然“自组织”成临界态。结果的幂律分布反映了导致特定规模崩塌的状态的潜在可能性。也就是说,可能产生大规模崩塌的状态要比可能产生小规模崩塌的状态出现的可能性低得多。

  这个系统证明了,幂律型复杂性可以通过简单规则作用于特定初始状态产生。计算沙堆和真实沙堆唯一的区别在于“粘连”规则不一样。对于真实沙堆,是物理定律决定了沙粒在掉下来前可以堆多高,而对于算法沙堆,则是程序决定了一个格子可以堆多少粒沙。

  免费的结构从何而来?

  结构和行为可以通过简单规则作用于特定初始条件自发形成,第2章讨论的《新科学》和拼砌系统,以及这一章讨论的盐晶、太阳系、贝纳德流、雷暴、波浪和崩塌,只是其中一小部分例子。不是所有条件都会产生结构,但有一些会。无论是计算机中的程序,还是平衡态物理结构,或是非平衡结构,原理是一样的。这些细节不会为我们从总体上理解这些结构如何形成带来多大区别。它们都揭示了一个结构形成的基本原理:一旦适当的简单规则作用于特定的情境,结构就会作为交互作用的规则的结果而产生。这并不意味着只要是简单规则和情境的结合就能形成结构——大部分都不会——但能产生某种结构的规则组合也不是那么罕见。它们存在于自然界,并且通过人工系统得到也不是很困难。

  对于这一章讨论的6个系统,如果从微观层面上去跟踪结构形成过程中单个原子或分子的行为,细节会非常复杂,但如果后退一步,从宏观上来研究其行为,就会看到只需少数规则交互作用于特定但不罕见的初始条件就会导致结构的自发形成。贝纳德流、波浪和雷暴都需要通过系统的持续能量流;晶体和太阳系则不需要。对于雷暴,是附近大气的异常导致了结构的不断变化。当沙粒堆积到沙堆上,就会产生统计上可预测的结果,虽然具体的时间很难预测。沙堆算法表明不可预测性来自沙粒之间的大量互动。在临界态,系统所有部分都相互影响。一旦出现这种情况,行为就变得复杂。

  这一章讨论的所有例子的特点是:其作用的简单规则和条件都是有可能的。值得注意的是,尤其是对于非平衡态结构,在很短的距离内相互作用的分子(10-8cm)形成的结构和行为的尺度从纳米级到数亿千米都有,取决于系统;并且都无需任何的预先计划。没有蓝图;只需简单的初始条件以及化学和物理定律就可以。这是真正免费的结构。

  在这一章的开头我提出了以下问题:如果物理过程是计算,程序在哪?反思这些例子,都是物理定律作用于初始条件产生新的结构。因此,初始条件以及物理和化学定律就是“计算”的输入。不存在预先设计的程序,也没有指令,只有作用的规则,但这些输入就足以产生显著的结构。

  下一章我们将继续讨论依赖于物理定律的结构,但不同的是它们需要附加的,并且经常是很复杂的局部规则。这些规则的概率极低,不可能通过随机的方式产生。它们需要特别的解释。

  第4章目的性结构

  用不免费的指令能得到什么?

  假如你是一位发明家和企业家,想到了一个创意。你用木构件和绳子制作了一个原型,看上去似乎能行。你该怎样做才能用铝合金和塑料大量生产呢?你不会去请一位理论计算机专家替你设计只需摇晃就能自行组装成产品的简单构件。你也不会去请一位纳米工程师替你设计微型机器人,只需简单编程就能放到装有铝和塑料块的箱子里,自行将构件组装成产品。你要做的是画出设计图,写出熟练机工和模具工能明白的指令,以及如何组装零件的指令。有了合适的指令,你就能制造这个新产品的许多份拷贝。

  上一章我们看到简单规则(化学和物理定律)作用于简单条件就能自发形成结构。我称之为“免费的结构。”包括雪花和太阳系在内许多神奇的事物都是这样形成的。但是免费结构的概念(短程序反复作用于简单输入)无法解释草木、贝多芬交响曲和计算机。

  世界上有许多事物无法用简单规则作用于简单初始条件产生。从计算的角度来说是需要长程序。从物理的角度来说,长程序的形式可以是用于完成特定任务的指令、方法和设计图。它们编码目的性信息。指令并不限于人类活动,可以是任何指导事物形成的规则。只要遵循这些规则,就能得到预先设定的结果。结果具有某种目的性,并且生成结果所需的特定规则(指令)不同于一般的物理定律,这些规则只在某种背景下起作用。例如,DNA(脱氧核糖核酸)和RNA(核糖核酸)编码的指令只在活细胞中运作,设计图只对机工或建筑工程师有意义。指令并不是要替代化学和物理定律,而是利用它们,并且它们总是具有目的。我们以一种常用工具的制造过程为例,来看一看这种信息的特殊之处。

  很少有工具像螺丝刀一样简单而又实用,做事的人都少不了它,但很少有人会自己做一把。虽然很常见,但所有人都知道螺丝刀是人类活动的产物。我们可以肯定,没有哪把螺丝刀是自然定律自发作用于天然形成的组件的产物。为什么呢?让我们看看制造螺丝刀的细节。

  大二工科学生内特·约翰逊在艾奥瓦州立大学的机械工程入门实验课上做了这种工具。螺丝刀由两部分组成:一根硬杆,一端是平的,以便插入螺丝头部的槽,以及直径粗一些的手柄,适合握在手里。粗手柄利用杠杆原理,这样用适度的力转动手柄就能在平头部分产生很大的扭矩。刀头有多种形状,但这不会改变螺丝刀的基本特性。图4.1是内特在课程作业中的设计图和计算机生成的效果图

  设计图为制造者提供视觉指导,但要利用设计图内特还需要设计一系列制造步骤。表4.1列出了制造步骤,遵循这些指令,就能制造出图4.1中描绘的螺丝刀。

  在制造螺丝刀的过程中,同盐晶的形成过程一样,内特也依赖化学和物理定律。两者都是从初始状态开始形成结构,但与盐晶不同的是,螺丝刀的结构不会自发形成,概率太低了。指令的作用是说明一系列低概率的状态。在这里指令表现为步骤,每一步都设置一个状态,生成的结果作为下一步的条件。设计图的阅读者必须将图转化成步骤。而内特作为制造者也是这些状态的组成部分。一旦设定,状态就会引发一系列完全由化学和物理定律决定的事件过程(免费的结构)。

  我们仔细来看第一步。钢杆本身就是很特殊的状态,在离一端10厘米的地方被压在运动的锯片上。离端部的距离与物理无关,但一旦钢杆被压在迅速运动的锯齿上,结果就由物理定律决定。锯齿在钢杆表面撕扯。单个金属原子之间的化学键被机械力拉开,将金属屑从深切槽的表面切削下来。具体的细节取决于施加的力、金属的硬度以及锯齿的硬度、锐度和速度,但只要金属棒被压在快速运动的硬金属锯齿上,就必然会挖出锯齿宽的槽并最终截断钢杆。一旦杆被压在运动锯齿的切削面上,初始状态被设置好,之后的变化就取决于化学和物理定律。这部分过程是免费的结构。

  表4.1中大部分步骤都涉及各种切削工具的使用,只是初始配置状态不同。最后一步有点不同。内特将钢杆的非刀口端插入手柄上钻出的8毫米粗的孔,并捶打手柄的另一端。动量和能量守恒确保力从锤子传递到手柄,导致钢杆改变孔的内表面。如果力足够大,变形会导致塑料挤在钢杆被压扁处,手柄就会和钢杆固定在一起,螺丝刀就做好了。锤子施加的力度很关键。力太大钢杆会击穿手柄;力太小钢杆又和手柄结合不紧。制造者可以通过反复敲打来调整总共施加的力。重要的是一旦钢杆被放入手柄的孔中,并且挥动了锤子,之后的结果就是完全是由物理的力以及手柄和钢杆的材料特性决定。

  表4.1中给出的每个步骤都表现出同样的基本模式。建立一个特定的状态,然后物理定律作用于状态就会产生特定的结果,结果由状态的细节以及物理和化学定律预先决定。这9条指令步骤编码了一个掌握了必要工具知识的人以正确顺序配置必需的状态所需的信息。设计图包含了附加的信息,可以帮助制造者解读指令。也可以用语言描述图中所有的相关信息,但是没这么方便。重要的是,没有简单规则或公式能够预先确定或描述整个过程。在制造螺丝刀时,制造者总是遵循一个算法(复杂的规则)来实现所期望的结果。

  表4.1中列出的9个步骤并不是全部。制造螺丝刀所需的信息还包括如何制造两个杆,制造所使用的各种工具和机器,以及操作机器的方法所需的所有信息。完整的指令表还必须包括采矿、炼钢、塑料生产和成型,制造所有的工具,以及制造这些工具的原材料。穷尽所需的指令会非常长;但原则上还是有可能列出制造螺丝刀所需的所有指令。

  就算完成了指令表也还是不够。我们目前为止讨论的所有指令都需要由人来阅读、理解和完成。制造螺丝刀对人的要求包括:能够安排材料和使用工具的人体以及能够指挥身体、理解指令、解释设计图、理解任务和将理解转化为行动的大脑。现代分子遗传学已经发现了人体本身也是指令的产物。这些指令以DNA分子的化学结构的形式存储在我们身体的每个细胞中。现代神经科学还发现,阅读指令、解读设计图、理解和使用机器以及指挥身体的动作的内部信息编码在我们大脑的神经连接和通信模式中。指令、设计图、DNA序列和神经连接模式都编码了目的性信息。

  现在我们能清楚认识到一块岩石和螺丝刀的区别。螺丝刀很特殊,是因为说明其形成所需的特定的低概率状态序列需要附加信息。只有发生特定的事件序列,我们才能制造出一把螺丝刀。岩石、盐晶、雪花、贝纳德流和太阳系的形成都不需要附加信息,因为它们形成所需的初始条件出现的概率足够高,到处可见。

  没有钟表匠会有钟表吗?

  想象一块老式怀表,里面有发条和很多齿轮的那种。许多零件的协同运动使得精确的时间呈现在表盘上。要让钟表工作,就要让机械部件正确匹配,要做到这一点,每个零件都必须符合严格的规范并正确安装。活细胞要比钟表更加复杂,但它们也需要准确构造的部件正确匹配到一起。细胞的部件不是金属齿轮和发条,而是蛋白质,生命必需的大分子。细胞比钟表更复杂,部件也更多,功能更多样,但每个蛋白质都必须有正确执行功能所需的属性。

  钟表匠的比喻有很长的历史。1802年神学家威廉·佩利记述了穿过一片灌木时捡到钟表的经历。他比较了钟表和旁边的岩石,他知道岩石是一直在那儿的。他想知道的是为什么钟表会出现在这里。如果认为钟表也像岩石一样从最开始就一直在这里,显然很荒谬,钟表必定有制造者,而且基于同样的逻辑,人类必然也是这样。理查德·道金斯在他的《盲眼钟表匠》一书中采用了这个著名的比喻

  要彻底理解道金斯的观点,我们需要了解细胞的运作原理,以及蛋白质的生成。在现代世界之前,所有蛋白质都是由活细胞生成。要认识生命就必须认识细胞。这些微小的结构单元有一些基本的特性,如表4.2所列。每一项都依赖于蛋白质的活动。

  蛋白质通过与某物结合产生效用。同所有极微小的事物一样,它们是化学物质,并且同所有化学物质一样,它们的表面有原子尺度的特征,能够与其他物质原子尺度的特征产生吸引或排斥。这意味着如果某种蛋白质与另一种分子能够精确匹配并且表面的特征相互吸引,两者就可以黏合在一起。如果形状不匹配并且相互吸引的化学特征无法对齐,结合就不会发生。准确结合需要单个原子尺度上的空间位置能匹配,比钟表齿轮的啮合还要精密得多。细胞是怎样生成这种结构的呢?

  在蛋白质的合成过程中,存储在DNA中的信息在细胞中扮演的角色同人类钟表匠执行的指令一样。用DNA写出的指令引导细胞中的机构准确组装特定的蛋白质分子。这个策略十分巧妙。许多步骤涉及自组装——免费的结构,但没有DNA中编码的指令,完整的过程就不会发生。

  蛋白质是由名为氨基酸的小分子通过化学键连接到一起组成的链,就好像珠子串成的项链。氨基酸是相对简单的化学分子,有10到27个原子(比较一下,水分子有3个原子,乙醇有9个原子)。所有生物的所有细胞都基于同样的20种氨基酸,典型的蛋白质由数百个氨基酸组成,大蛋白质有数千个。

  氨基酸都具有共同的可变结构部分,称为侧链。侧链的化学特性决定了氨基酸的特点。在一条链上氨基酸的相互作用(结合)会导致链向自身折叠,使得蛋白质在整体上具有特定的形状。这种形状及其表面的氨基酸的化学性质,决定了蛋白质可以与什么结合以及结合多紧密。图4.2展示了由129个氨基酸组成的还没有折叠的链,图4.3则是链折叠后自然形成的3维形状。

  在自然界,所有蛋白质都以同样的方法合成。DNA中编码的信息决定每条蛋白质链上氨基酸的顺序,顺序又决定了形状。图4.2和4.3中展示了溶菌酶蛋白质都具有同样的氨基酸序列和同样的形状,暴露在表面的也是同样的侧链。就算只改变一个氨基酸,形状和表面的细节也会有所不同。

  一些蛋白质催化(加速)小分子的化学反应。具有这种特性的蛋白质称为酶。酶的功能是与参与反应的小分子结合。一些蛋白质的功能是与DNA结合,还有一些是与特定的蛋白质结合。所有结合都很精确,并且蛋白质的氨基酸序列的任何变化都有可能改变其表面结构的细节,从而无法与预定目标结合,也许会与其他东西结合。人类细胞能生成数千种不同的蛋白质,都能以高度的特异性与细胞内部或外部的某种物质结合。

  细胞的运转依赖于大量精确的蛋白质结合事件,因此正确的蛋白质合成对所有生命都很重要。这是通过微小的分子机制实现的,而这种机制本身又是依靠蛋白质和RNA, RNA是与DNA关系密切的大分子。RNA的合成需要蛋白质酶,蛋白质的合成又需要RNA。因此细胞合成蛋白质的机制也依赖蛋白质。

  蛋白质合成是从DNA开始。与蛋白质类似,DNA分子也是由微小单元组成的链。蛋白质是由氨基酸组成,DNA分子则是由核苷酸组成。核苷酸有4种不同类型,一般简记为A、G、C和T。核苷酸可以以任意序列组链。因此,DNA分子可以用字序列描述,例如ACGATTCAAAGTCTCAG,其中每一个字母都代表DNA链中的一个核苷酸。这些字母携带了对细胞有意义的信息,就好像文字可能携带对你有意义的信息一样。细胞中的DNA分子很长,通常包含100万(1·106)到1亿(1·108)个核苷酸。核苷酸组成基因,每种基因编码一种蛋白质。

  细胞中的DNA由两条核苷酸链相互缠绕连接而成,形成双螺旋结构。能够形成这种结构是因为A核苷酸可以与T结合,G核苷酸可以与C结合。这种配对使得双螺旋中的两根单链具有互补性:一边是A另一边就是T,一边是G另一边就是C。这种冗余使得损伤可以修补,DNA分子也可以被复制。

  合成蛋白质的第一步是复制DNA单链上的特定部位合成RNA。RNA的化学结构类似DNA,但使用的核苷酸有些不一样。它们也有单字母缩写,分别是A、G、C和U。一种名为RNA聚合酶的蛋白质负责合成RNA,合成的RNA的核苷酸链与选取的DNA段序列相同,不过DNA上为T的地方,RNA上为U(图4.4)。大多数复制的RNA是信使RNA(mRNA),但也有一些RNA具有其他功能。

  mRNA分子可以与核糖体分子结合。核糖体的作用是将氨基酸按mRNA中核苷酸的顺序连接起来合成蛋白质。这样DNA中核苷酸的顺序就间接而准确地决定了蛋白质中氨基酸的顺序。RNA核苷酸只有4种而氨基酸有20种,因此并不是一种氨基酸对应一种核苷酸。mRNA链中3个连续的核苷酸组成的三联码对应蛋白质链中的一个氨基酸。4种核苷酸3个一组总共有64种排列(AAU, ACU, GAU,……);每种三联码称为一个密码子。64种密码子中有61种都对应特定的氨基酸。还有3种是“终止”密码子。这个合成过程称为转录,意指核苷酸编码的信息被“转译”成氨基酸编码的信息。

  氨基酸与核苷酸的结合效率不高,还需要名为tRNA的适配器分子在核糖体中将正确的氨基酸与对应的mRNA密码子对齐(图4.5)。这种适配器确保氨基酸与每3个核苷酸对齐。这个过程的正确性很重要。一旦出错,生成的蛋白质就会有错误的氨基酸序列,从而可能折叠成错误的形状并且无法正确执行功能。

  越来越多的氨基酸被合成后,会从核糖体伸出来,氨基酸相互作用,使得尚未成形的蛋白质开始折叠成由序列决定的3维形状。大多数蛋白质在合成结束时就已经成形了;有一些则需要后续修饰,还有一些要等到与目标物结合时才会最终成形。

  自发折叠是理解氨基酸链编码的信息如何转换成3维结构的关键。氨基酸会相互作用,因此链会寻找优化所有相互作用的总能量的形状。过程的这个部分是免费的结构。存在大量可能的蛋白质形状,因为有大量可能的氨基酸序列,每种都会折叠成不同的形状。这就是蛋白质的生成过程,细胞的正确运作需要准确生成的蛋白质。每个蛋白质的生成都遵循编码为DNA的指令。正是DNA序列确保了正确的蛋白质被生成出来。改变序列,就会改变蛋白质。生物不是钟表,而且要复杂得多,但它们的出现无需钟表匠的介入。

  DNA编码的指令如何说明比单个蛋白质更复杂的结构?

  我们继续钟表的话题,不过现在想象一种机械装置,不是由钟表匠组装,而是将零件放在箱子里摇晃就能自行组装。滑稽吗?能不能设计出这种零件放在一起摇晃就能自行组装的钟表?需要什么样的零件?当然我们所知的钟表零件做不到,但病毒的确是这样形成的。

  病毒是像钟表一样复杂的生物装置,但要小得多。病毒的分子组装就类似于在箱子里摇零件。这是如何做到的?首先,零件都很小,一旦悬浮在水中就会由于热运动自发跳动,这是所有极微小事物的特点。第二,零件是蛋白质,我们已经看到,所有蛋白质都有很精密的形状。第三,它们的表面具有能与其他病毒蛋白相互作用的分子特征。一旦适配,蛋白质之间就会紧密结合。

  病毒能够繁殖,但并不生长,也没有独立于宿主细胞的化学代谢。在存在的大部分时间里它们都完全不活动,介于生命和非生命之间。病毒的繁殖很像塑料玩具的组装,零件的凸起与其他零件的凹槽相嵌。区别在于没有爸爸或妈妈来组装。同其他蛋白质一样,所有病毒蛋白质的形状都是由特定的氨基酸序列决定。形状(以及相应的表面特性)决定了它能结合什么样的形状。将一个病毒蛋白质放到正在成形的病毒的正确位置上所需的所有信息都编码在其结构的细节里。

  可能没有哪种活细胞能抵抗一切病毒的感染。幸运的是,病毒具有高度的特异性,任何特定的病毒都只能感染有限种类的细胞。感染细菌的病毒尤其容易研究。它们被称为抗菌素或噬菌体。名为T4的抗菌素是被研究得最多的细菌病毒之一。它完全由蛋白质和DNA组成。这种病毒相对较大也较复杂,很适合用来说明自组装的潜力。T4的DNA编码了274个基因,分别对应病毒组装和繁殖所需的274种不同的蛋白质。其中一些蛋白质是改变受感染细菌细胞的代谢的酶;一些则是合成T4的DNA所需的酶;还有一些参与274个基因的表达。大约有50种蛋白质用于建造其怪异的外壳,当病毒从一个濒死的细胞中释放出来时,外壳可以保护其DNA。这个外壳还用于在遇到下一个适合的细菌细胞时对其进行感染。T4的外壳由40种3500多个蛋白质分子组成。图4.6画出了它的结构。DNA隐藏其中,缠绕在“头部”。幸运的是这种病毒不会感染人类细胞。

  与其怪异的结构相比,它的形成更让人吃惊。并没有什么小精灵围着它用微小的锤子将所有零件装到一起。这个结构是自组装的。其中的3500个蛋白质都只能与特定的伙伴分子匹配。这本身倒没什么;毕竟,汽车零件就是以特定的方式组装到一起。但汽车无法自组装。汽车零件的设计并不是让你可以将它们放到一个大箱子里摇晃,然后就能组成一辆车。蛋白质很小,受周围快速运动的水分子影响,会不断跳动。当相互匹配的形状发生接触,就会结合到一起。每一次结合都会产生新的结合点,可以让另一个蛋白质结合。这建立了一个组装顺序。只有前两个蛋白质结合到一起,第三个蛋白质才能结合,然后第四个才能结合,依次进行。这样蛋白质就以特定的顺序被添加到生长的结构上;从而从随机混合的蛋白质溶液中就能自发出现特定的结构。

  这种组装通过3条并行的“组装生产线”进行(图4.7),头、尾和长尾纤分别组装,最后才组装到一起形成完整的噬菌体。在头部与尾部相连之前,它会利用被感染细胞提供的能量装入T4的DNA。

  这个过程很像图2.10中的自组装拼图游戏,但结构是3维的,图块是蛋白质。拼图和病毒的形成都有赖于让形状能以预先确定的方式精确组合的目的性信息。对于拼图,设计图块的信息是由人的大脑创造。对于T4,信息编码在病毒的DNA中。如果没有说明这些组块细节的指令,病毒(或自组装拼图)就永远都不可能出现。

  自组装病毒与第2章讨论的分子砖块以及新科学(NKS)系统都属于同一类活动。这类系统通过组装计算物理图样和结构。计算的规则——程序

上一篇:第一届海丝泉州文学周25日拉开序幕
下一篇:双随机 一公开丨温州市苍南县开展校外培训机构专项检查行动

最近更新在线教育