APP下载

混沌的计算

2017-06-23陈凯

中小学信息技术教育 2017年6期
关键词:二进制积木樱桃

陈凯

“我是谁?”——这个问题被称为世界三大终极哲学问题之一,至今都不存在一个被普遍认同的答案。“我是谁?”——从这个问题可以引申出另一个诡异的问题:当人们自问“我是谁?”的时候,究竟是谁在问这个问题?又是谁在回答这个问题?虽然回答者总是可以回答“是我”,但提问者却可以继续追问,先前答案中的“我”是谁,以至于最终回答者不得不承认,其实自己是无法真正认清究竟是谁在问、或者究竟是谁在回答这个问题,因为“认清我是谁”的过程被包含在形成自我的过程之中了,一旦“是谁”的答案形成,那个做出回答的“我”就已经不是答案中的“我”了。当某个解决问题的过程中包含有过程本身的时候,就出现了称为“自我指涉”的现象,学习程序设计的朋友们大概很快能认出,这其实就是递归。“我是谁?”或“谁在问”这类问题之所以难解,其实是因为只要坚信“自我”的存在,这个递归就没有出口——就像俄罗斯套娃,当前的娃娃外面(或里面)还有娃娃,那个最大的娃娃——调用所有层级思考程序的主程序究竟在哪里?看来即便耗尽脑力(耗尽内存)也无法想透彻。若要从递归中退出,除非设定所谓“自我”其实是“非我”精心编织出来的幻象,然而这样虽然能从无穷无尽的套用中退出,但问题是,人们从心底里十万分地不认同这一点。能否既维持“自我”的存在感,同时又避开无法自圆其说的悖论?本篇文章将利用“计算思维”来试着对以上问题给出一个解答,虽然方法很奇怪,但笔者会在严谨的证明和天马行空的想象之间划出一条明显的标志线。

计算是什么

“计算思维”是个热门词语,“如何在教学中培养学生的计算思维能力”是个问题,然而,讨论以上问题的前提是要明白什么是“计算思维”,而讨论“计算思维”的前提是要明白什么是“计算”,这是个被许多人忽视的大问题。更糟糕的是,大部分人只是自认为明白这个问题的答案。那么先来看一个小问题,8加9等于多少?为什么会得出答案是17呢?其一,对大部分成人来说,8加9得17是被深深刻在头脑中的知识,与其说是算出答案,不如说是记得答案,其实是根据索引从存储区域中提取了信息,虽然说需要存储的信息包含了所有一位数相加的值;其二,对于幼儿来说,他(她)可能会拿出8块积木,然后再拿出9块积木,然后数一下,嗯,总共17块积木,有一些所谓“最强大脑”使用到类似的方法,754933加578043是多少,他们可以直观地看到答案,而不是算出答案;其三,也可以这样来算,先把8换成8块积木,然后,把9换成9块积木,连续排在一起后,将10块积木换成1,把剩下的7块积木换成7,最后合并得到17,这个方法既用到了数字符号的变换、替代,也用到了存储中的规则,并且,存储规则的数量少于第一种计算方法。

如果人们要制造一台机器来进行计算,那么前面所说的三种方法,哪一种是可行的?第一种方法,要求机器拥有无穷无尽的存储空间来存储尚不知道的应对规则,这让人想起了博尔赫斯小说中,为了最详尽画出帝国地图乃至宣称制作出和帝国疆域一般大小的地图的绘图员;第二种方法,因为难以描述具体工作过程而无法制造;于是只剩下第三种方法,换成比较严谨的描述就是,用尽可能少的规则,将一些符号替换成另一些符号。

如果想要造一台机器来进行计算,其实需要解决这样一系列的问题,首先,是如何将现实世界中的对象抽象成符号;第二,如何设计一套可行的规则,将一些符号替换成另一些符号;第三,在没有人干预的情况下,将替换过程持续下去。为简便起见,下面将借用一个具体的例子来说明问题:怎样把数量转换成二进制符号。

(1)将现实世界中的对象抽象成符号

假设有一堆樱桃,现在需要设计一台机器,输入的是这堆樱桃,输出的是代表樱桃数量的二进制符号,人们可以用“o”符号代表樱桃,“ooo”是三个樱桃,“ooooo”是五个樱桃,大家知道,二进制需要两种符号,所以“o”这一个符号看来不够,但其实并不需要引入第二种符号,因为可以把“o”看成二进制符号1,把空看成二进制符号0,比如“oo o”就是“1101”,“ooo”就是“111”。

但若这样,“o o”中究竟空了多少,就很难看出,所以需要引入其他符号“|”来代表二进制中的“位”,人工运算时,“|”可以用樱桃梗或其他东西来代替。“|”右侧有“o”代表“1”,“|”右侧无“o”代表“0”,于是“|o|o|”就是“110”,而“|o||o”就是“101”。

(2)设计一套可行的规则,将一些符号替换成另一些符号

为了设计一套规则,计算出樱桃数量的二进制值,只需要将代表樱桃的“o”放在许多“|”符号右侧(究竟有多少“|”是无所谓的,稍微多一些就可以),比如“||||||||oooooo”表示有6个樱桃,“||||||||oooooooooo”表示有10个樱桃,至于替换规则也十分简单,只要将“|oo”符号串替换成“o|”符號串就可以了。这个规则的意义是:1加上1等于10。比如,对于符号串“||||||||oooooo”按“|oo-->o|”规则进行替换,则原来的符号串就变成了“|||||||o|oooo”。

(3)设法将替换过程自动持续下去

以上替换规则只能将两个樱桃变成“10”,对于6个樱桃的转换,就需要将以上过程不停地持续下去。这就需要使用到递归。请看以下伪代码(当然也可以换成任何程序语言代码):

Proc1:

|oo-->o|

Proc1

以上伪代码过程中,第一步是按替换规则将“|oo”替换成“o|”,第二步是,执行该过程自身。当然这个过程会永远执行下去,但没关系,符号串“||||||||oooooo”不停替换后会停留在唯一的状态,就是“||||||o|o|”,这串符号就代表着“110”。如果初始的时候有10个樱桃,就是“||||||||oooooooooo”,那么替换到最后,符号串会保持在“|||||o||o|”,就表示“1010”,这正是10个樱桃所对应的数量的二进制值。而所谓代码,就只需要寥寥几行就可以了。

混沌与通用计算

以上案例,说明了可以用符号的替换与递归一起来实现某种运算。实际上,除了递归,若将递归换成迭代,也可以产生同样的效果,限于篇幅,本文只讲递归。下面将要深入解释一个问题,何以简单的符号替换就能具有某种计算能力。

针对符号串“*#oooooooooooooooooooooooooooooooooooooooooooooooooooooooo|ooo@”构造如下符号串替换过程(有多少个“o”取决于任务复杂度):

Proc1:

#ooo-->o#oo

#oo|-->|#o|

#o|o-->|#|o

#o||-->|#||

#|oo-->o#oo

#|o|-->|#o|

#||o-->|#|o

#|||-->o#||

#ooo@-->*oo@

o*-->*o

|*-->*|

**-->*o#

Proc1

以上過程包含了12个替换规则以及一个递归,对于初始符号串,若每隔120左右次的替换后,把符号串的状态打印出来,就能得到如下图样:

图样的发展有以下奇妙特点,其一, 图样的发展对于符号串的初始值极其敏感;其二,对于某些特定的初始符号串,只要发展空间足够(左侧的o够多),符号串变化永远不会出现重复模式;其三,虽然说每一步的变化都是确定的,但无人能提前n步预测到未来图样可能变化成什么模样。这种系统中的不可重复和不可预测性,被称为混沌。虽然不能立即严格证明所谓的计算过程其实等同于一个混沌的演化过程,但可以发现,任何计算过程,都具有混沌系统演化的特征,首先,任何计算过程都对初始条件敏感;其次,对于某些初始值的计算过程,计算结果将永远进行下去且无法找出变化模式(如圆周率的计算);其四,虽然计算过程的每一步都是确定的,但人们无从预先n步获知计算的结果——否则又为什么需要计算呢;其五,混沌和计算系统都可由某个巧妙设计的递归过程获得。

然而,更强大的是,可以将符号的替换与递归一起使用,来实现通用计算(通俗来说,能代替一台运行其他程序语言代码的智能计算机)。上述案例中,符号串的替换其实模拟了110号元胞自动机的演化过程,而数学界已经证明,可以110号元胞自动机来模拟通用图灵机的运算过程。换而言之,以上12条替换规则和1次递归调用,实际上就创造出了一台功能完备的智能通用计算机。通俗来说,如果人们需要分支、循环语句,用刚才这个系统就能模拟出来;若需要变量、数组,用刚才这个系统也能模拟出来;需要一个下围棋的程序,它当然也能模拟。当然,人们一般不这么做(也暂时没有能力这么做),而是一层层往上模拟,比方说,会先用这个系统来模拟出一个马尔科夫重写系统,然后用马尔科夫重写系统逐渐模拟出一个机器语言运行环境,然后逐渐模拟出一个高级语言的编译器(其中跳过很多层)……然而不管上层系统规则多么复杂,其最底层的规则却是异常简洁的。

递归与自我认知

图灵认为,无论人脑的构成是怎样的,在计算的层面,它所做的就是操作抽象符号,本质上和机器所做的没有区别。如果借用计算思维来说明,为什么诸如“我是谁”这样的问题难以解答,那是因为解答“我是谁”的过程被包含到形成“我”的过程之中,从而造成了一个没有出口的递归。假如人脑的运行模式真的如递归函数那样,那也就意味着,每一个我所认识到的“我”都不是真实的我,每个我所认识到的“我”,其实是一个属于过去的计算结果。然而另一方面,那个“我”也恰恰因为这种递归而不断变化着,对于“我”来说,过去的一切都是历史,未来的一切难以预料(因为预料本身产生混沌从而改变了“我”),当下的一切(不仅是自我反思也包含外界环境的变化对自我的触动)都会改变“我”的状态,乐观地说,就是我会成为我所希望的那个我。

然而,若将以上合理的科学推论向更远处延伸,可能会导出让人难以接受,貌似科学幻想般的可能性,其中一个方向,是怀疑整个宇宙的物理法则是不是有可能源自于几个简单规则的不断递归,著名科学家、数学家斯蒂芬·沃尔夫勒姆(Stephen Wolfram)试图在《新科学》一书中证明,宇宙的本质就是计算,当前的复杂世界,可能只是许多层次反复套用下递归的模拟;另一个方向,是全面怀疑人的头脑活动完全是一种计算行为,无论是理性逻辑思考,还是原以为是生物所特有的情感、直觉、洞察力、领悟力,其本质上都是一种计算。这种假设将彻底颠覆人类原先的自我认知,牛津大学哲学教授卢西亚诺·弗洛里迪称其为三次人类革命后的第四次革命。前三次革命分别是:哥白尼革命——发现人类并不处于宇宙中心;达尔文革命——发现人类只是进化长河中的一部分;弗洛伊德革命——发现每个个人都不是其自我意识的绝对主人,第四次革命的核心是,人类的智能并不是独特而无法复制的。然而,如果人类能够不执著于短暂历史对于“人类”一词所赋予的独一无二的幻觉,那么,未来的某一天,人类或许可借助计算中的新世界涅槃重生。

猜你喜欢

二进制积木樱桃
樱桃肉,让年味飘香
用二进制解一道高中数学联赛数论题
这块积木能给我吗
星钻积木
有趣的进度
二进制在竞赛题中的应用
一树樱桃带雨红
吃不到的樱桃
有趣的积木
失踪的樱桃