按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
爸战帷!。ㄎ颐羌堑茫我惶ㄕ分该鞯耐剂榛亩皇际墙鼋鲇桑埃保埃保保埃保保保昂停保保保保白槌傻男蛄校虼怂话人母觯备嗟男蛄小U庋绻鸗n是正确指明的机器,则111110的发生的确表明数n的描述已终结。)按照我们上面的规定,跟着它的每一件东西简单地是代表m的磁带(也就是,紧跟二进位数m的是1000…)。这样,这第二个部分简单地就是Tn假设要作用的磁带。
作为一个例子,如果我们取n=11和m=6当作U要作用的磁带,其记号序列为…000101111111011010000…
这是由以下组成的:…0000(开始的空白带)
1011(11的二进位表示)
111110(终结n)
110…(6的二进位表示)
10000…(余下的磁带)。
在Tn作用到m上的运算的每一接续的步骤,图灵机U要做的是去考察n的表达式中的接续数位的结构,以使得在m的数位(也就是Tn的磁带)上可进行适当的代换。在原则上(虽然在实践中肯定很繁琐)不难看到人们实际如何建造这样的一台机器。它本身的指令表会简单地提供一种,在每一阶段读到被编码到数n中的“表”中,应用到m给出的磁带的位数时,合适元素的手段。肯定在m和n的数位之间要有许多前前后后的进退,其过程会极为缓慢。尽管如此,一定能提供出这台机器的指令表,而我们把它称为普适图灵机。把该机器对一对数n和m的作用表为U(n;m),我们得到:
U(n;m)=Tn(m)。
这儿Tn是一台正确指明的图灵机6。当首先为U提供数n时,它准确地摸拟第n台图灵机!因为U为一台图灵机,它自身也必须有一号码;也就是说,我们有U=Tu此处号码u待定。u究竟是多少呢?事实上我们可以准确地给出u=7244855335339317577198395039615711237952360672556559631108144796606505059404241090310483613632359365644443458382226883278767626556144692814117715017842551707554085657689753346356942478488597046934725739988582283827795294683460521061169835945938791885546326440925525505820555989451890716537414896033096753020431553625034984529832320651583047664142130708819329717234151056980262734686429921838172157333482823073453713421475059740345184372359593090640024321077342178851492760797597634415123079586396354492269159479654614711345700145048167337562172573464522731054482980784965126988788964569760906634204477989021914437932830019493570963921703904833270882596201301773727202718625919914428275437422351355675134084222299889374410534305471044368695876405178128019437530813870639942772823156425289237514565443899052780793241144826142357286193118332610656122755531810207511085337633806031082361675045635852164214869542347187426437544428790062485827091240422076538754264454133451748566291574299909502623009733738137724162172747723610206786854002893566085696822620141982486216989026091309402985706001743006700868967590344734174127874255812015493663938996905817738591654055356704092821332221631410978710814599786695997045096818419062994436560151454904880922084480034822492077304030431884298993931352668823496621019471619107014619685231928474820344958977095535611070275817487333272966789987984732840981907648512726310017401667873634776058572450369644348979920344899974556624029374876688397514044516657077500605138839916688140725455446652220507242623923792115253181625125363050931728631422004064571305275802307665183351995689139748137504926429605010013651980186945639498(或者至少是这等数量级的其他的可能性)。这个数无疑是极其巨大,但是我似乎没有办法使它变小许多。虽然我的图灵机编码步骤和号码指定是相当合理和简单的,但是在一台实际的普适图灵机的编码中仍然不可避免地导向这么大的一个数7。我曾说过,实际上所有现代通用电脑都是普适图灵机。我并不是说,这种电脑的逻辑设计必须在根本上和我刚刚给出的普适图灵机的描述非常相似。其要点可以简述为,首先为任一台普适图灵机提供一段适当的程序(输入磁带的开始部分)可使它摸拟任何图灵机的行为!在上面的描述中,程序简单地采取单独的数(数n)的形式。但是,其他的步骤也是可能的,图灵原先方案就有许多种变化。事实上,在我自己的描述中,已经有些偏离图灵的原型。但是对于我们当前目的,这些差别中没有一个是重要的。希尔伯特问题的不可解性我们现在回到当初图灵提出其观念的目的,即解决希尔伯特的范围广泛的判决问题:是否存在某种回答属于某一广泛的、但是定义得很好的集合的所有数学问题的机械步骤?图灵发现,他可以把这个问题重述成他的形式,即决定把第n台图灵机作用于数m时实际上是否会停止的问题。该问题被称作停机问题。很容易建造一个指令表使该机器对于任何数m不停。 (例如,正如上面的n=1或2或任何别的在所有地方都没有STOP指令的情形)。也有许多指令表,不管给予什么数它总停(例如n=11);有些机器对某些数停,但对其他的数不停。人们可以公正地讲,如果一个想象中的算法永远不停地算下去,则并没有什么用处。那根本不够格被称作算法。所以一个重要的问题是,决定Tn应用在m时是否真正地给出答案!如果它不能(也就是该计算不停止),则就把它写成Tn(m)=□。
(在这记号中还包括了如下情形,即图灵机在某一阶段由于它找不到合适的告诉其下一步要做什么的指令而遇到麻烦,正如上面考虑的伪品机器T4和T7。还有不幸得很,我们粗看起来似乎成功的机器T3现在也必须被归于伪品:T3(m)=□,这是因为T3作用的结果总是空白带,而为使计算的结果可赋予一个数,在输出上至少有一个1!然而,由于机器T11产生了单独的1,所以它是合法的。这一输出是编号为0的磁带,所以对于一切m,我们都有T11(m)=0。)
能够决定图灵机何时停止是数学中的一个重要问题。例如,考虑方程:
(x+1)w+3+(y+1)w+3=(z+1)w+3。
(如果专门的数学方程使你忧虑,不要退缩!这一方程只不过是作为一个例子,没有必要详细地理解它。)这一特殊的方程和数学中著名的或许是最著名的未解决的问题相关。该问题是:存在任何满足这方程的自然数集合w,x,y,z吗?这个著名的称作“费马最后定理”的陈述被伟大的十七世纪法国数学家皮埃尔?德?费马(1601―1665)写在丢番都的《代数》一书空白的地方。费马宣布这方程永远不能被满足①8。虽然费马以律师作为职业(并且是笛卡尔的同时代人),他却是那个时代最优秀的数学家。他宣称得到了这一断言的“真正美妙的证明”,但那里的空白太小写不下。可惜迄今为止既没有人能够重新证明之,也没有人能找到任何和费马断言相反的例子①!很清楚,在给定了四个数(w;x;y;z)后,决定该方程是否成立是计算的① 记住我说的自然数是指0,1,2,3,4,5,6,…。我写成“x+1” 和“w+3” 等等,而不写成费马断言的更熟知的形式(xw+yw=xw,x,y,z>0,w>2)的原因是,我们允许x;w等等为从零开始的所有自然数。
① 普林斯顿大学的英籍数学家安德鲁?怀尔斯在1993年6月23日宣布证明了费马最后定理(译者)。事体。这样,我们可以想象让一台电脑的算法一个接一个地跑过所有的四数组,直到方程被满足时才停下。(我们已经看到,存在于一根单独磁带上,把数的有限集合以一种可计算方式编码成为一个单独的数的方法。这样, 我们只要跟随着这些单独的数的自然顺序就能 “跑遍” 所有的四数组。)如果我们能够建立这个算法不停的事实,则我们就有了费马断言的证明。
可以用类似的办法把许多未解决的数学问题按图灵机停机问题来重述。“哥德巴赫猜想”即是这样的一个例子,它断言比2大的任何偶数都是两个质数之和②。决定给定的自然数是否为质数是一个算法步骤,由于人们只需要检验它是否能被比它小的数整除,所以这只是有限计算的事体。我们可以设计跑遍所有偶数6,8,10,12,14,…的一台图灵机,尝试把它们分成奇数的对的所有不同的方法:6=3+3,8=3+5,10=3+7=5+5,12=5+7,14=3+11=7+7,…对于这样的每一个偶数检验并确认其能分成都为质数的某一对数。 (我们显然不需要去检验除了2+2之外的偶的被加数对,由于除了2之外所有质数都是奇的。)只有当我们的机器达到一个由它分成的所有的任何一对数都不是质数对的偶数为止才停止。我们在这种情形就得到了哥德巴赫猜想的反例,也就是说一个(比2大的)偶数不是两个质数之和。这样,如果我们能够决定这台图灵机是否会停,我们也就有了决定哥德巴赫猜想真理性的方法。
这里自然地产生了这样的问题:我们如何决定任何特殊的图灵机(在得到特定输入时)会停止否?对于许多图灵机回答这个问题并不难:但是偶尔地,正如我们上面得到的,这答案会涉及到一个杰出的数学问题的解决。 这样, 存在某种完全自动地回答一般问题, 即停机问题的算法步骤吗?图