智能 | #8 通用图灵机

 文 | HW君 

系列文章:


0. 模仿游戏

阿兰·图灵在1950年的论文《计算机与智能》中提出的一种测试人工智能的方法,叫「模仿游戏」。

当然它被后人熟知的叫法是「图灵测试」。

 

实际上图灵思考「模仿游戏」的起点是,一台机器是否可以模拟另一台机器?

这也是当今所有通用计算机的起源。

 

 

1. 遍历第N号图灵机

在上一期《智能 | #7 编码第N号图灵机》中,我们找到了一种将图灵机编码为一串 0 和 1 纸带的方式,并按该纸带的十进制数形式,将其命名为N号图灵机

例如:

一进制+1图灵机」为第 177642 号图灵机;

扩展二进制×2图灵机」为第 10389728107 号图灵机;

一进制×2图灵机」为第 1492923420919872026917547669 号图灵机;

扩展二进制+1图灵机」为第 450813704461563958982113775643437908 号图灵机。

 

而因为每一个图灵机必定对应一个十进制数,因此我们实际上已经可以遍历所有图灵机的可能性。

我们只需要从 0 开始数起:第 0 号图灵机、第 1 号图灵机、第 2 号图灵机……

一直数到第 177642 号图灵机,我们得到了「一进制+1图灵机」;

数到第 10389728107 号图灵机,得到「扩展二进制×2图灵机」;

数到第 1492923420919872026917547669 号图灵机,得到「一进制×2图灵机」;

数到第 450813704461563958982113775643437908 号图灵机,得到「扩展二进制+1图灵机」。

 

实际上大多数的自然数都不能产生可用的图灵机。

这里按照之前的编码方式列出第 012 号图灵机,观察其工作的情况:

T00000R, 0100R,

T10000R, 0100L,

T20000R, 0101R,

T30000R, 0100停,

T40000R, 0110R,

T50000R, 0101L,

T60000R, 0100R, 1000R,

T70000R, 01→???,

T80000R, 01100R,

T90000R, 0110L,

T100000R, 0111R,

T110000R, 0101停,

T120000R, 0100R, 1000R,

 

上述的图灵机中,T0 就是简单地向右移动,并把纸带的格子全都改写成 0。

T1 也有同样的效果,但它在把遇到的 1 并改写成 0 之后,会往左回退一格,然后继续向右移动。

T2 则是简单地向右移动,且不改变纸带上原有的数据。

 

T0 、T1 、T2 这三台机器并不能停下来,因此不能被称为合格的图灵机。

T3 则可以称得上是一台合格的图灵机,它在将遇到的第一个 1 改写成 0 之后,就停机了。

 

T4 的状态控制器则是不完整的,它在遇到第一个 1 后就指向了一个空白的状态,不知道下一步要执行什么动作。

T8 、T9 、T10 这三台也和 T4 有着相同的问题。

 

T7 遇到的问题还更严重,它的二进制数为「111」,依照上一期的编码规则前后都加上省略的两个「110」后为「110111110」。

而我们的扩展二进制规则为:

二进制 0 0

二进制 1 10

R 110

L 1110

11110

这其中并没有涉及连续 5 个 1 的转换规则。

因此 T7 在纸带上遇到第一个 1 之后发生了未知的错误。

 

T5 、T6 、T12 则和T0 、T1 、T2 的问题类似,它们会永远不停止。

只有 T3T11 能够正确工作的,虽然 T11 在遇到第一个 1 就停了下来,什么也没有改变。

同时也可以注意到,有 T6T12 是相同的,并且在行为上等价于 T0

 

因此在列出的第 012 号图灵机之中,只有 T3T11 能够算得上是合格的图灵机。

 

 

2. 再封装一层

我们已经实现用十进制自然数 0、1、2、3……来标记所有可能存在的图灵机。

现在再尝试将代表图灵机的十进制自然数编码成一条 0 和 1 组成的纸带。

 

可以直接将十进制转换为二进制,但会遇到一些问题。

例如考虑如下的一条纸带:

…00001101110010000…

因为纸带的左右两端都是无限长的 0,实际有用的部分为:

110111001

如果简单直接转换,那这个二进制数的十进制表示为 441。

但直接转换会导致这个形式的二进制数只能表示奇数,无法表示偶数,因为它的末尾一定不为 0。

 

因此我们可以采用将末尾的 1 移除的方式来读取,末尾的 1 即为前端二进制数的终结。

于是这段纸带的真正二进制数为:

11011100

它可以表示十进制的偶数 220。

 

而采用移除末尾 1 的方式的另一个好处是,除了奇数和偶数,我们还可以用这种方式表示 0 :

…000010000…

它表示十进制的自然数 0。

 

这样我们就找到了一种将第N号图灵机的十进制 N」编码成一段二进制纸带的方法。

 

 

3. 同时编码两个数

对于任意一个十进制自然数 ,我们可以将其用上述的方法编码成一段二进制纸带。

 

假设存在第 n 号图灵机 Tn ,对其输入纸带 m,它会输出另一段纸带 p

将其表示为:

Tn (m) = p 

 

那么要通过 m 产生 p,一定需要有这个特殊的图灵机 Tn 吗?

可以用以下这个视角来看待式子:

给定两个数 nm,得到结果为数 p

 

我们可以构建这么一个函数 U

U (n, m) = p

即函数 U 作用在数 nm 上,产生了结果 p

 

而以下两种情况的纸带输出结果是一致的:

(1)Tn (m) = p

(2)U (n , m) = p

其中(1)为第 n 号图灵机输入纸带 m,得到纸带 p

(2)图灵机 U 输入纸带 (n , m),得到纸带 p

 

这两种结果是等价的:

U (n , m) = Tn (m)

 

因此我们可以假设存在一个图灵机 U,对其输入一条同时编码有 nm 的纸带,那么它也可以输出一段纸带 p

其中图灵机 Tn 和纸带 m 可以共同被编码为 (n , m)

 

为了实现图灵机 U 的功能,我们需要在一条纸带上同时编码进数 nm

这其实很容易,我们只需要在扩展二进制规则里再加入一个「111110」:

即我们的扩展二进制规则扩充为:

二进制 0 0

二进制 1 10

R 110

L 1110

11110

 , 111110

 

这样输入的纸带就是:

..n111110m

它可以被图灵机 U 正确读取,从而产生 p

 

而对于图灵机 U 来说,nm 的值可以是任意的。

图灵机 U 所做的事情,便是把输入的「……n111110m……」纸带解读为 (n, m) 。

然后模仿成图灵机 Tn ,再对其输入 m ,然后输出纸带 p

 

这样的一台可以模仿任意第N号图灵机的万能图灵机 U,就是「通用图灵机」。

 

 

4. 通用计算机的数学模型

构造一台「通用图灵机」无疑是非常复杂的。

对于输入的「…...n111110m……」纸带,它要先将自己模拟成第 n 号图灵机 Tn ,然后再去处理数据 m

这期间会读写头会在纸带上进进退退来来回回,过程缓慢且低效。

但尽管如此,我们一定可以找到这么一台通用图灵机 U ,完成这样的操作。

 

通用图灵机 U 作为一台图灵机,那么它自身也一定有一个号码,即它是第 U 号图灵机:

U = Tu 

这里的 u 会是多少呢?

可以给出它的准确十进制数字:

724485533533931757719839503961571123795236067255655963110814479660650505940424109031048361363235936564444345838222688327876762655614469281411771501784255170755408565768975334635694247848859704693472573998858228382779529468346052106116983594593879188554632644092552550582055598945189071653741489603309675302043155362503498452983232065158304766414213070881932971723415105698026273468642992183817215733348282307345371342147505974034518437235959309064002432107734217885149276079759763441512307958639635449226915947965461471134570014504816733756217257346452273105448298078496512698878896456976090663420447798902191443793283001949357096392170390483327088259620130177372720271862591991442827543742235135567513408422299889374410534305471044368695876405178128019437530813870639942772823156425289237514565443899052780793241144826142357286193118332610656122755531810207511085337633806031082361675045635852164214869542347187426437544428790062485827091240422076538754264454133451748566291574299909502623009733738137724162172747723610206786854002893566085696822620141982486216989026091309402985706001743006700868967590344734174127874255812015493663938996905817738591654055356704092821332221631410978710814599786695997045096818419062994436560151454904880922084480034822492077304030431884298993931352668823496621019471619107014619685231928474820344958977095535611070275817487333272966789987984732840981907648512726310017401667873634776058572450369644348979920344899974556624029374876688397514044516657077500605138839916688140725455446652220507242623923792115253181625125363050931728631422004064571305275802307665183351995689139748137504926429605010013651980186945639498

这是一个很大的数,量级为 7×101652

 

我们说过,当今所有的通用计算机的数学模型,都可以等价于图灵机

更准确来说,是等价于通用图灵机,即:

724485533533931757719839503961571123795236067255655963110814479660650505940424109031048361363235936564444345838222688327876762655614469281411771501784255170755408565768975334635694247848859704693472573998858228382779529468346052106116983594593879188554632644092552550582055598945189071653741489603309675302043155362503498452983232065158304766414213070881932971723415105698026273468642992183817215733348282307345371342147505974034518437235959309064002432107734217885149276079759763441512307958639635449226915947965461471134570014504816733756217257346452273105448298078496512698878896456976090663420447798902191443793283001949357096392170390483327088259620130177372720271862591991442827543742235135567513408422299889374410534305471044368695876405178128019437530813870639942772823156425289237514565443899052780793241144826142357286193118332610656122755531810207511085337633806031082361675045635852164214869542347187426437544428790062485827091240422076538754264454133451748566291574299909502623009733738137724162172747723610206786854002893566085696822620141982486216989026091309402985706001743006700868967590344734174127874255812015493663938996905817738591654055356704092821332221631410978710814599786695997045096818419062994436560151454904880922084480034822492077304030431884298993931352668823496621019471619107014619685231928474820344958977095535611070275817487333272966789987984732840981907648512726310017401667873634776058572450369644348979920344899974556624029374876688397514044516657077500605138839916688140725455446652220507242623923792115253181625125363050931728631422004064571305275802307665183351995689139748137504926429605010013651980186945639498

号图灵机。

 

若将你的手机、电脑……转换成为一条纸带,那它就是上面的这串数字。

这就是图灵给世界留下的宝贵遗产,整个计算机产业蓬勃发展的理论起点。

 

 

5. 结语

即便图灵机理论影响了整个世界,但它其实只是图灵在思考希尔伯特判定问题过程中的副产物。

图灵创造出图灵机,只是为了尝试回答一个数学问题。

通用图灵机并非终点,我们认为有必要顺着图灵走过的路再往前一点,窥见一下他曾见过的风景。

这样后续在讨论人工智能时,才会有更深刻的理解。

 

(本章节完,敬请期待下一节)

By HW君 @ 2025-01-08

guest
0 评论
内联反馈
查看所有评论