陈凯
当人们计算“1加1等于几”时,头脑中究竟发生了什么呢?对于这个问题,脑神经科学还无法给出一个确定的答案。但是显然绝大多数人都知道,人们可以依赖机器,如加法器、电子计算机等——来做加法或其他各种运算,可是很少有人问:为什么机器可以进行计算呢?
从重写系统(Rewriting System)的原理来看,其实机器很容易通过字符串的重写来实现计算,如在做1加1等于多少的时候,机器所要做的就是把“1加1”这串字符串变成“2”这个符号。人们可以制定这样一个规则,只要看见“1加1”,就替换成“2”。而任何计算,都可以通过替换字符串这样简单的方法来实现。人们在创造某个能够进行计算的机器时,常以某些物体的外在状态,如水位、齿轮的齿的位置、电压值或者其他什么来代表某个字符串符号,然后通过改变物质状态来表示符号的改变。可以将机器想象成一个“中文屋”(Chinese room),屋子里的人根据外部输入的字符串符号,通过查阅“词典”得到转换规则,然后根据规则进行替换并输出新的字符串符号,这就实现了所谓的计算。
然而问题是,这样的替换方式看上去无法适应各种不同的运算(除非赋予机器的替换规则无限多,或是“中文屋”里有着可储存无限多“词典”的空间)。例如,不能为每一个加法,如“-1加4”、“-2加5”,都制定一条单独的规则,当然更无法解决诸如“将9开平方”这样的新问题,那么,能不能找到某些简单的,但能适用于所有计算的规则呢?
罗素说:“逻辑是数学的青年时代,数学是逻辑的壮年时代”,这话其实给出了很重要的思考线索。若想让一台机器做数学运算,先要让它做逻辑运算。这里就来介绍一个小实验,利用“替换”来实现逻辑运算,这个实验可以用纸笔来完成,看上去更像是游戏。不过,必须连续做完以下4个实验,才能说明实验的目的究竟是什么。
◇实验1。
有一个20个字符的字符串:00120000000012000021,这串数据用来输入,然后写下第二行数据用来输出,从输入数据到输出数据的替换规则是:“看见120就换成012,看见021就换成210,看见1221就换成0000”,然后,将第二行数据也作为输入数据,重复运行刚才的替换过程可见:
00120000000012000021
00012000000001200210
00001200000000121200
00000120000000000000
00000012000000000000
……
00000000000000000012
◇实验2。
第二个实验的初始输入数据与刚才的实验略有区别,具体替换过程就不都列出了。
输入:00120000000000000021
……
结果:00000000000000000000
◇实验3。
输入:00000000000012000021
……
结果:00000000000000000000
◇实验4。
输入:0000000000000000021
……
结果:2100000000000000000
上述几个实验其实模拟了一个逻辑运算,若是将逻辑符号的输入端,输endprint