必读网 - 人生必读的书

TXT下载此书 | 书籍信息


(双击鼠标开启屏幕滚动,鼠标上下控制速度) 返回首页
选择背景色:
浏览字体:[ ]  
字体颜色: 双击鼠标滚屏: (1最慢,10最快)

皇帝新脑

_10 罗杰·彭罗斯(英)
结束 (因为它们所有都用R、L或STOP 来结束),所以我们也可把它 (以
及假想跟在后面的0的无限序列)删去。这可以算作两个小节约。所得到
的二进位数是该图灵机的号码,它在XN+1 的情况下为:
10101101101001011010100111010010
11010111101000011101001010111010
00101110101000110100101101101010
101011010101101010100。
这一特殊的数在标准十进位记号下为
450813704461563958982113775643437908。
我们有时不严格地把号码为 n 的图灵机称为第n 台图灵机,并用T 来表
n
示。这样,XN+1 是第450813704461563958982113775643437908 台图灵机!
我们必须顺着这图灵机的 “表”走这么远,才找到一台甚至只进行如
此平凡的 (在扩展二进位记号上)对自然数加一的运算,这真使人印象深
刻! (尽管在我的编码中还可以有很少的改善余地,但我认为自己进行得
相当有效率。)实际存在某些更低号码的有趣的图灵机。例如,UN+1 的二
进位号码为
101011010111101010
它只是十进位制的177642!这样,只不过是把一个附加的1加到序列 1 的
尾巴上的特别平凡的图灵机 UN+1 是第 177642 台图灵机。为了好奇的原因,
我们可以注意在任一种进位制中 “乘二”是在图灵机表中这两个号码之间
的某处。我们找到XN×2 的号码为10389728107,而UN×2 的号码为
1492923420919872026917547669。
人们从这些号码的大小,也许会毫不奇怪地发现,绝大多数的自然数
根本不是可工作的图灵机的号码。现在我们根据这种编号把最先的十三台
图灵机列出来:
T :0 0→0 0R,0 1→0 0R,
----------------------- Page 63-----------------------
T :0 0→0 0R,0 1→0 0L,
1
T :0 0→0 0R,0 1→0 1R,
2
T :0 0→0 0R,0 1→0 0STOP,
3
T :0 0→0 0R,0 1→10R,
4
T :0 0→0 0R,0 1→0 1L,
5
T :0 0→0 0R,0 1→0 0R,10→0 0R,
6
T :0 0→0 0R,0 1→???,
7
T :0 0→0 0R,0 1→100R,
8
T :0 0→0 0R,0 1→10L,
9
T :0 0→0 0R,0 1→11R,
10
T :0 0→0 0R,0 1→0 1STOP,
11
T :0 0→0 0R,0 1→0 0R,10→0 0R。
12
其中,T 简单地就是向右移动并且抹去它所遇到的每一件东西,永不
停止并永不往回退。机器 T 最终得到同样的效应。但它是以更笨拙的方
1
法,在它抹去磁带上的每个记号后再往后跳回。机器T 也和机器T 一样无
2 0
限地向右移动,但是它更有礼貌,简单地让磁带上的每一件东西原封不动。
由于它们中没有一台会停下,所以没有一台可以合格地被称为图灵机。T3
是第一台可敬的机器。它的确是在改变第一个 (最左边)的1为0后便谦
虚地停止。
T 遭遇了严重的问题。它在磁带上找到第一个1后就进入了一个没有
4
列表的内态,所以它没有下一步要做什么的指令。T 、T 和 T 遇到同样的
8 9 10
问题。T 的困难甚至更基本。把它编码的0和1的串涉及到五个接续的1
7
的序列:110111110。对于这种序列不存在任何解释,所以只要
它在磁带上发现第一个1就被绊住。 (我把T 或其他任何机器T ,它的n
7 n
的二进位展开包含多于四个1的序列称为不是正确指明的。)机器T 、T
5 6
和 T 遭遇到和T 、T 和 T 类似的问题。它们简单地、无限地、永远不停
12 0 1 2
地跑下去。所有T 、T 、T 、T 、T 、T 、T 、7 、T 、T 和 T 都是伪品!
0 1 2 4 5 6 7 8 9 10 12
只有T 和 T 是可工作的,但不是非常有趣的图灵机。T 甚至比T 更谦虚,
3 11 11 3
它在第一次遇到1时就停止,并且没有改变任何东西!
我们应该注意到,在表中还有一个多余。由于T 和 T 从未进入内态
6 12
1,机器T 和 T 等同,并在行为上和T 等同。我们既不必为这个多余,
12 6 0
也不必为表中的图灵机伪品而烦恼。人们的确可以改善编码以摆脱许多伪
品和大大减少重复。所有这些都是以使我们可怜的普适图灵机变得更复杂
作为代价。普适图灵机必须把所读到的号码 n解码并假装成图灵机 T 。如
n
果我们可以把所有伪品 (或者多余量)取走,这还是值得做的。但是,我
们很快就会看到,这是不可能的!这样,我们就不触动我们的编码好了。
例如,可方便地把具有
…0001101110010000…
----------------------- Page 64-----------------------
接续记号的磁带解释成某个数字的二进位表示。我们记得0在两端会无限
地继续下去,但是只有有限个1。我还假定1的数目为非零 (也就是说至
少有一个1)。我们可以选择去读在第一个和最后一个 1 (包括在内)之
中的有限的符号串,在上述的情况是为一自然数的二进位写法
110111001,
它在十进位表示中为441。然而,这一过程只能给我们奇数 (其二进位表
示以1结尾的数)。而我们要能表示所有的自然数。这样,我们采取移走
最后的1的简单方案 (这个1仅仅被当作表示这一程序的终止记号),而
5
把余下来的当成二进位数来读 。因此,对于上述的例子,我们有二进位

11011100,
它是十进位的220。这个步骤具有零也用磁带上的记号代表的好处,也就

…0000001000000…
我们考虑图灵机T 对我们从右边提供给它的磁带上 (有限的)0和1
n
的串的作用。根据上面给出的方案,可方便地把这串也考虑作某一个数,
譬如m 的二进位代表。我们假定,机器T 在进行了一系列的步骤后最终到
n
达停止 (即到达STOP)。现在机器在左边产生的二进位数串是该计算的答
案。让我们也以同样方式把这当作,譬如是p 的二进位代表来读。我们把
表达当第 n 台图灵机作用到m 上时产生p 的关系写成:
T (m)=p。
n
现在,以稍微不同的方式看这一关系。我们把它认为是一种应用于一
对数 n和m 以得到数p 的一个特别运算。 (这样,若给定两个数 n和m,
视第 n 台图灵机对m 作用的结果而得出 p。)这一特别运算是一个完全算
法的步骤。所以它可由一台特殊的图灵机U 来执行。也就是说,U作用到
一对(n,m)上产生p。由于机器U 必须作用于n和m 两者以产生单独结果p,
我们需要某种把一对(n,m)编码到一条磁带上的方法。为此,我们可假定
n 以通常二进位记号写出并紧接着以序列111110终结。(我们记得,
任一台正确指明的图灵机的二进位数都是仅仅由0,10,110,11
10和11110组成的序列,因此它不包含比四个1更多的序列。这样,
如果T 是正确指明的机器,则111110的发生的确表明数n 的描述已
n
终结。)按照我们上面的规定,跟着它的每一件东西简单地是代表m 的磁
带 (也就是,紧跟二进位数m 的是1000…)。这样,这第二个部分简
单地就是T 假设要作用的磁带。
n
作为一个例子,如果我们取 n=11和m=6 当作U要作用的磁带,其记号
序列为
…000101111111011010000…
这是由以下组成的:
----------------------- Page 65-----------------------
…0000 (开始的空白带)
1011(11 的二进位表示)
111110(终结n)
110…(6 的二进位表示)
10000…(余下的磁带)。
在 T 作用到m 上的运算的每一接续的步骤,图灵机U要做的是去考察
n
n 的表达式中的接续数位的结构,以使得在m 的数位 (也就是T 的磁带)
n
上可进行适当的代换。在原则上 (虽然在实践中肯定很繁琐)不难看到人
们实际如何建造这样的一台机器。它本身的指令表会简单地提供一种,在
每一阶段读到被编码到数 n 中的“表”中,应用到m 给出的磁带的位数时,
合适元素的手段。肯定在m 和 n 的数位之间要有许多前前后后的进退,其
过程会极为缓慢。尽管如此,一定能提供出这台机器的指令表,而我们把
它称为普适图灵机。把该机器对一对数n和m 的作用表为U(n,m),我们得
到:
U(n,m)=T (m)。
n
6
这儿 T 是一台正确指明的图灵机 。当首先为U提供数 n 时,它准确地摸
n
拟第 n 台图灵机!
因为U 为一台图灵机,它自身也必须有一号码;也就是说,我们有
U=T
u
此处号码u待定。u 究竟是多少呢?事实上我们可以准确地给出
u=72448553353393175771983950396157112379523606725565596311081447
9660650505940424109031048361363235936564444345838222688327876762
6556144692814117715017842551707554085657689753346356942478488597
0469347257399885822838277952946834605210611698359459387918855463
2644092552550582055598945189071653741489603309675302043155362503
4984529832320651583047664142130708819329717234151056980262734686
4299218381721573334828230734537134214750597403451843723595930906
4002432107734217885149276079759763441512307958639635449226915947
9654614711345700145048167337562172573464522731054482980784965126
9887889645697609066342044779890219144379328300194935709639217039
0483327088259620130177372720271862591991442827543742235135567513
4084222299889374410534305471044368695876405178128019437530813870
6399427728231564252892375145654438990527807932411448261423572861
9311833261065612275553181020751108533763380603108236167504563585
2164214869542347187426437544428790062485827091240422076538754264
4541334517485662915742999095026230097337381377241621727477236102
0678685400289356608569682262014198248621698902609130940298570600
1743006700868967590344734174127874255812015493663938996905817738
----------------------- Page 66-----------------------
5916540553567040928213322216314109787108145997866959970450968184
1906299443656015145490488092208448003482249207730403043188429899
3931352668823496621019471619107014619685231928474820344958977095
5356110702758174873332729667899879847328409819076485127263100174
0166787363477605857245036964434897992034489997455662402937487668
8397514044516657077500605138839916688140725455446652220507242623
9237921152531816251253630509317286314220040645713052758023076651
83351995689139748137504926429605010013651980186945639498
(或者至少是这等数量级的其他的可能性)。这个数无疑是极其巨大,但
是我似乎没有办法使它变小许多。虽然我的图灵机编码步骤和号码指定是
相当合理和简单的,但是在一台实际的普适图灵机的编码中仍然不可避免
7
地导向这么大的一个数 。
我曾说过,实际上所有现代通用电脑都是普适图灵机。我并不是说,
这种电脑的逻辑设计必须在根本上和我刚刚给出的普适图灵机的描述非常
相似。其要点可以简述为,首先为任一台普适图灵机提供一段适当的程序
(输入磁带的开始部分)可使它摸拟任何图灵机的行为!在上面的描述中,
程序简单地采取单独的数 (数n)的形式。但是,其他的步骤也是可能的,
图灵原先方案就有许多种变化。事实上,在我自己的描述中,已经有些偏
离图灵的原型。但是对于我们当前目的,这些差别中没有一个是重要的。
----------------------- Page 67-----------------------
希尔伯特问题的不可解性
我们现在回到当初图灵提出其观念的目的,即解决希尔伯特的范围广
泛的判决问题:是否存在某种回答属于某一广泛的、但是定义得很好的集
合的所有数学问题的机械步骤?图灵发现,他可以把这个问题重述成他的
形式,即决定把第 n 台图灵机作用于数m 时实际上是否会停止的问题。该
问题被称作停机问题。很容易建造一个指令表使该机器对于任何数m 不
停。(例如,正如上面的 n=1或2 或任何别的在所有地方都没有STOP 指令
的情形)。也有许多指令表,不管给予什么数它总停 (例如n=11);有些
机器对某些数停,但对其他的数不停。人们可以公正地讲,如果一个想象
中的算法永远不停地算下去,则并没有什么用处。那根本不够格被称作算
法。所以一个重要的问题是,决定T 应用在m 时是否真正地给出答案!如
n
果它不能 (也就是该计算不停止),则就把它写成
T (m)=□。
n
(在这记号中还包括了如下情形,即图灵机在某一阶段由于它找不到合适
的告诉其下一步要做什么的指令而遇到麻烦,正如上面考虑的伪品机器T4
和 T 。还有不幸得很,我们粗看起来似乎成功的机器T 现在也必须被归于
7 3
伪品:T (m)=□,这是因为T 作用的结果总是空白带,而为使计算的结果
3 3
可赋予一个数,在输出上至少有一个 1!然而,由于机器T 产生了单独的
11
1,所以它是合法的。这一输出是编号为0 的磁带,所以对于一切m,我们
都有 T (m)=0。)
11
能够决定图灵机何时停止是数学中的一个重要问题。例如,考虑方程:
w+3 w+3 w+3
(x+1) +(y+1) =(z+1) 。
返回书籍页