爱爱小说网 > 其他电子书 > 阿基米德的报复 >

第12章

阿基米德的报复-第12章

小说: 阿基米德的报复 字数: 每页3500字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



的程序。换句话说,耗时的穷举搜索程序没有简捷的方法。这种下棋问题,即使我们知道已有解法,也总是会使计算机的分析落空。

    下面4章,我们将从理论和实践两个方面考虑计算机的能力与局限性。

    第八章  图灵的通用计算机艾伦。马西森。图灵是一位非凡的数学家、计算机科学的先驱者、破译纳粹的著名密码谜的关键人物。  1952年 2月,他以“粗野的下流言行,触犯了1885年刑事法修正条例第八条”的罪行,在英国曼彻斯特市被捕。在此之前不久,图灵的家被盗,盗窃犯是他的朋友阿诺德。默里,一位19岁的无业青年,图灵与他曾有过性关系。当图灵向警察报告盗窃案时,曾把他与默里的关系告诉了警察,他天真地认为,皇家委员会即将使同性恋合法化。两个月后,他因6次进行性骚扰受到审讯,并因总共 6次的性骚扰被判有罪,将送往监狱。他接受定期服用两性化女性激素药物的方案,进行“有机疗法治疗”,因此给他一年缓刑。1954年6月7日,41岁的图灵吃了半个浸在氰化物溶液中的苹果自杀。①在人工智能领域,图灵取得了基本概念方面的两项不朽成就:图灵检验法和图灵计算机。图灵检验法是他确定计算机能否思考的方法。检验要求把计算机和任意选出的人与提问者分开,提问者要通过中间物向他们提出数量不限的问题。图灵认为,如果提问者未能区别两者之间是计算机还是人,那么就意味着计算机正在思考。换句话说,如果计算机被认为是有智能的,那么它就是智能型计算机。

    要对图灵通用计算机的概念进行解释,需要一些基础概念。当图灵在英国剑桥大学时,1935年他就是在那里成为英国皇家学院的一名研究员,他受到了物理学革命性发展的影响,该发展推翻了因果律和决定论的传统概念。按照牛顿的世界观,如果在自然体系方面掌握了足够的知识,那么整个未来都将是可以预测的。

    1795年,法国数学家、同时又是牛顿迷的皮埃尔…西蒙。拉普拉斯是这样论述智能的:“假如某一时刻有一种智能,这种智能可以包含所有的力量,并由此使自然界生气勃勃,而且使组成自然界的各种生命都有各自的位置——智能的强大足以使许许多多数据服从于分析——它可以使最大物体的运动与最轻原子的运动都包含在同一公式之内;对于智能来说,没有不能断定的事物,而且未来也和过去一样,都将出现在其眼前。”

    然而,本世纪初,量子力学的提出,使未来完全根据现在和过去来决定的说法宣告结束。在30年代,由于量子力学,特别是由于观察者总是影响着观察结果的原理,使哲学界发生了大混乱,而英国剑桥大学正处在这种混乱的中心。图灵发现这种概念是不稳固的,而且他也被引向数学,因为看来它所涉及的是绝对的实体,与观察者无关。正如剑桥大学数论学家G。H。哈迪所说的,317是一个素数,不是因为我们想它是个素数,或者说我们的想法是以某种方式而不是另一种方式形成的,而是因为它就是一个素数,因为数学的实体性就是那样建立的。

    图灵致力于解答某个疑难问题的工作,该问题切中了数学实体性的本质核心:是否有一机械方式确定数学中任何已知语句是正确的还是错误的?为了回答这个问题,他终于提出了“通用计算机”,即图灵计算机的概念,这种概念可以例行地回答数学的问题。图灵引入了能够运算数学的计算机概念,目的在于强化数学作为与人类事物无关的学科的地位。然而可笑的是,图灵发现,数学的某些问题是不能由计算机或人用机械的方法来解题的,例如,涉及非重复小数的数产生问题。

    图灵计算机是一个非凡的概念。不过从其一系列性能的观点来看,它却是非常有限的。即使你对计算机的程序设计一无所知(或许整个主题会使你吃惊),但图灵计算机的如此有限性能,也会使你很快地理解它的“内部”工作情况,从而高兴地为它编写程序。然而,从计算的观点看,它是能够进行任何运算的,换句话说,数学家能够进行的任何运算,想象的最大功率计算机也能够进行运算。如果说,这种说法不是相当惊人的话,那么让我再隐晦地补充一句:图灵计算机,不管它叫什么名字,不一定是一部计算机。它可以是一个人或一组人。

    那么,这种图灵计算机的基本原件是什么?首先,它有一条长带,设想它是一条窄窄的纸带,纸带上划有许多竖线,把它分成许多方形单元。

    如果已知某单元不是空白的,那么它就含有有限字母符号中的某一种符号。图灵计算机,能够一次扫描纸带的一个单元,通常都是从含有符号的最左边单元开始。如果所扫描的单元是空白的,那么计算机就会让单元的空白留下,或者在单元中打印一个符号。如果所扫描的单元含有符号,那么计算机就可以让单元的符号留下不变,擦掉该符号并在该符号的位置上打印另一个符号,或者擦掉该符号并让单元留下空白。然后计算机停机,或者立即扫描到左边或右边的单元。

    计算机对所扫描的单元要做些什么,下一个要扫描的是两个相邻单元的哪一个,这取决于计算机的状态或内部构形,状态数与符号数一样,必须是有限的。计算机的状态像一种思维状态,即计算机在“思维”些什么。要了解图灵计算机的运算,用不着对其状态的本质进行精确的、形而上的思考(或更抽象定义)。计算机的“程序表”规定了计算机对于符号与状态的每一种可能组合将要做出的反应。

    举两数相加一例,将会非常清楚地阐明这些抽象概念。假定我们以“一元”的记号写出一些数字,其中整数 n用一串  n个*号来表示,在n个相连的单元内每单元一个*号。据此,**号表示2,*****表示5。一元记号的优点是只有一种符号*号,不需要10个不同的数字来表示任何已知的正整数。若要2加5,只要把**号和*****号打印在纸带上,它们之间有一个空白单元,这样两串*号就可以区别开。

    带有图解的程序表说明了计算机如何进行两数相加的运算。但在讨论程序表的特点之前,先要概括地描述加法的过程。聪明的计算机先找到两个数之间的空白单元,在空白单元打印一个* 号(那么在纸带上留有一串的8个* 号),而后继续下去,找到一串* 号的结束单元,并擦除掉最后一个* 号。这样,在纸带上就留有*******号,按一元记号,它就是7,即2加5的和。

    现在让我们再来看程序表。计算机的状态通常列在最左边的一栏内。在这个程序表内,共有3个状态,编号分别为0、1和2。符号(和表示空白单元的词“空白”)通常横列在程序表的上方。在这个表内只有一个符号*号。

    计算机在0状态中开始,按照惯例,扫描纸带上最左边的符号(换句话说,扫描**号中的第一个*号)。程序表描述了计算机如何运算状态0与符号*号的组合。计算机让符号留下不变,扫描到右边的下一个单元,并停留在状态0中,那么,计算机如何运算这个单元?由于计算机仍然处在状态0中,而且单元中的符号还是一个*号,计算机仍按前面所述进行运算:只让符号*号留下,扫描到右边的下一个单元,并停留在状态0中。

    现在换到空白单元。程序表中状态0与空白符号的组合说明了计算机是如何进行运算的。它打印了一个*号,再扫描到右边的下一个单元,即进入状态1。这时,这个单元中还是一个*号,而状态1和符号*号的组合就描述出计算机的行为:扫描到右边的下一个单元,并停留在状态1中。这个步骤要重复4次,因为每次都是一个*号继续出现。当计算机扫描到一串5个*号结束处的空白单元时,它会回到左边的一个单元,并进入状态2。这个单元中有一个*号,计算机会擦掉它。然后计算机停机,处于一种完成状态。这种方法的作用是:相同的程序表都可以生成任何两数的和,无论数的大小如何,只要以一元的记号写出,两数间有一个空白单元,就能算出。在状态0,计算机只是扫描第一个数的每个单元,一直扫描到空白单元,再在其上打印一个*号。在状态1,它则是扫描第二个数的每个单元,直到空白单元,再回扫,并停留在最后一个*号的单元上。在状态2,它只是擦掉这个*号。于是,纸带上就立即有了答案。

    这种加法是众所周知的有限数法,因为程序表包括数量有限的状态和数量有限的符号。然而这种有限数法却可以生成范围无限的数。图灵计算机要运算可以想象的任何数之和,纸带的长度就必须是无限的,也就是说,如果纸带仅有1,000个单元长,而它就不能运算大于1,000的数。

    在图灵计算机用这种方法完成两数相加的运算时,纸带将只有答案,而没有原来的两个数。如果有人试图编写一个带有原来两数的程序表,那么他一开始就应该想到,图灵计算机需要“计算”在两串*号中的8个*号。然而令人感到意外,图灵计算机不能进行这种计算。设想它扫描第一个*号时,就会跳入状态1。每当它扫描另一个*号时,就会跳入下一个状态。这样下去,在它扫描第五个*号后,计算机就已处在状态5中,扫描第二十三个*号之后,就处在状态23中。看来用这种方法,图灵计算机似乎能够计算任何*号的数;即当它扫描完所有*号时,它的状态数就相应于它的*号数。但是,这种方法是行不通的。你知道这是为什么吗?

    问题就在于这个方法不是有限数法。这种方法需要数目无限的状态。比方说,如果计算机仅有5个状态,那么它就不能计算多于5个的*号,因此它将被限制在和为5或小于5的数之内。如果它有50,000个状态,它也不能计算多于50,000个的*号。换句话说,对于有限数状态n,它不能计算多于n的*号。这种方法行不通,是因为我们所要寻找的是在任何情况下都可用于任何加法的方法。

    如果允许数字状态是无限的(或者符号数是无限的),那么程序表就编写不出来。而要求编写出有限数字的程序表,按照惯例,需要用机械的方式。

    现在需要探讨一个令人感兴趣的说法,即图灵计算机不必是一部机器,而是程序表(如果你愿意的话,可以叫它软件),那就是图灵计算机的定义。任何一个实体,它可以是一部计算机、一个人、一条美人鱼、一个游魂、或是克里姆林宫,只要它能够按照程序表进行运算,就是一部图灵计算机。如果你能够按照加法图表中的程序表在纸带上进行两数的加法运算,那么你就是一部图灵计算机。在一篇卓越的论文中,图灵在理论上和实践中已经能够证明;图灵计算机无法做到的,数学家和计算机都无法做到。一部超级计算机能够非常迅速地解出的问题,动作迟缓的图灵计算机也同样能够做出解答。

    掌握图灵计算机的实质和具备有限数法的解题能力,最佳的方法是自己编写程序表。我想提出一个建议,请你编写一种程序表,使它可以用于图灵计算机的一元记号的减法运算。但要提醒你,在编写程序表时,应让计算机以某种方式知道它已完成计算,并把该方式写入程序表中。否则,由于纸带的长度可以任意长,常常可能使计算机一直连续扫描许多空白单元。下图显示出了减法用的程序表。当然,其他程序表也可以进行运算。

    第二个问题是为计算机编写一种程序表,可用于检验编写在纸带上的符号P和Q顺序是否是回文式的,即正读与反读的顺序都一样。一种方法就是使计算机能够对第一个符号与最后一个符号进行比较,第二个符号与倒数第二个符号进行比较,以此类推。但要记住,这种方法必须是有限数字。如果顺序是回文式的,可以让计算机打印一个Y,如果不是,则打印一个N。这种方法是安德鲁。霍奇斯在为英国《新科学家》周刊撰写的一篇文章中采用的。这种方法如图所示。

    霍奇斯方法的缺点是,尽管程序表只有6个状态,但计算机要浪费许多时间沿一串符号来回移位。如果计算机在拿第一个符号与最后一个符号进行比较之后,拿倒数第二个符号与第二个符号进行比较(而不是拿第二个符号与倒数第二个符号进行比较),然后拿第三个符号与倒数第三个符号进行比较,再拿倒数第四个符号与第四个符号进行比较,以此类推,那么它就可以节省时间。这种方法的程序表如下图所示,它需要 10个状态。要缩短计算时间,必须以较长的程序作为代价。

    最后一个建议是为图灵计算机编写一种程序表,可供计算机用于检验由空白单元分开的两串P和Q符号是否变移位置式的。而且,Y符号同样代表“是”,N符号代表“否”。这里需要提示一下,在计算机解题时,计算机会打印出一个假符号字母R。有一种可能的答案似乎是正确的。

    _______① 关于图灵最后几年的悲剧性详情,在安德鲁。霍金斯著的同情性传记文学曾做报道,《艾伦。图灵:谜》(西蒙…舒斯特出版社,纽约, 1983)。

    第九章  威利。洛曼无辜地死去了吗?

    从某种基本意义上讲,计算机和数学家只是不容易识别的图灵计算机,知道这一点也许令人泄气。但在另一方面,从表面上看过于简单的图灵计算机,由于证明能够解各种各样的计算问题,从而又可被认为是鼓舞人心的。数学家与计算机之间理论上的相似性不仅适用于他们能解出的各种问题,而且也适用于他们不能解出的各种问题。

    工业上每天都出现许多计算问题,若用任何已知的方法去解,则太费时间,现在都例行地由计算机去着手解决。然而工业需要的是对这些问题的解法,而计算机常常牵扯到程序设计人员的水平,他们往往不能编出最佳程序。其中有许多是众所周知的使旅行推销员感到为难的问题;已知一个城市与公路网络,要找一条推销员在往返旅程中到每个城市去一次的最短路线。仅有一种已知的算法用来解这种旅行推销员问题,就是可靠的逐步试探法,这种方法费力,缺乏预见性,只是对每一种可能性都进行尝试。看来,数学并未减轻威利。洛曼的烦恼。

    过去15年内,数学家们都感到迷惘,他们寻求巧妙的、较快的算法都告失败,这是由于他们无知呢,还是这种问题本身存在内在的困难?按照当前的知识水平,暂时还没有较快的算法,甚至在理论上也没有。目前还没有人能够证明这一点。对证明的研究已是理论计算机科学中最为热门的课题,而且在这个领域中工作的数学家已被公认为是复合型理论学家。

    当数学家们谈到保证解题方法时,他们的意思就是指算法。不要由于“算法”(algorithm)这个英语单词的发音令人生畏而摈弃它,它是9世纪波斯数学家阿布。贾法尔。穆罕默德。伊本穆萨。阿尔霍瓦里米的姓氏音译转讹而来的,他的语义遗产还包含有单词代数(algebra)在内。算法的音难读但不难懂。你早已了解什么是算法的直观概念。

    你可曾记得,在你读小学时,你的英语老师让你制定出一整套令人厌烦的规定,去做诸如系鞋带一类枯燥无味的琐事,然后老师叫约翰尼。怀斯盖严格按照你的规定去系他的鞋带(与此同时,这个

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的