数理逻辑5 -- 计算理论2

图灵机的示意图(Diagram)

上节笔记给出了图灵机的定义,那一大堆四元组构成的指令集真个是比汇编代码还要难懂。不仅难写,更难检查。因此,我们需要一种“简便”的图灵机表示方式。

我们说,一个图灵机的示意图包含以下内容:
(1) 令F1,F2,...,Fr为任意图灵机,它们有共同的字符集为A={a0,a1,...,ak}
(2) 从平面上选择任意有限个点,称为顶点(vertex);
(3) 对每个顶点,填上一个图灵机Fi,同一个图灵机可填到多个顶点;
(4) 用箭头连接顶点,允许指向自身的肩头。每个箭头标上一个整数i,其中1ik。从同一个顶点出发的两个不同箭头,不许打同一个标签;
(5) 其中一个顶点画个圈圈围住它,表示初始顶点(initial vertex)

下图就是一个图灵机的示意图。
数理逻辑5 -- 计算理论2

每个图灵机示意图都定义出了一个图灵机,它的四元组指令集由如下方法构成:
(1) 对图中的图灵机,写下它们所有的指令四元组,改写它们的状态符号,使得任意两个图灵机都没有共同的状态符号。但是,初始图灵机的状态符号保留不变;
(2) 对某个箭头u连接的两个图灵机Fi,Fj,若左边的图灵机Fi中的任意状态符号qs,都不存在qsau开头的四元组指令,那么就增加qsauauqt指令进新构造的图灵机,其中qt是右边图灵机Fj的状态符号。

以上第2点是为了保证,若原本的图灵机Fi停在qsau上时,右边的图灵机Fj可以接着继续工作。

因此,图灵机示意图就构造了一个新的图灵机,给定磁带上的任意输入,它的工作方式如下:
(1) 示意图中的初始图灵机开始工作;
(2) 当某个图灵机停止时,查看此时磁头读取的符号au,然后查看该图灵机对应的朝外的箭头,若这些箭头都不含有标签u,那么整个示意图停止工作;
(3) 若(2)中的某一个箭头的标签是u,那么该箭头对应的右边图灵机接着继续工作。

因此,我们就可以用示意图来构造各种图灵机。为此,我们需要进一步简化示意图的表达:
(1) 若一个顶点和另一个顶点相连接的箭头包含了所有的0,1,...,k,那么我们用一个无标签箭头取代这k个箭头;
(2) 若一个顶点和另一个顶点相连接的箭头包含了所有除u以外的标签,那么我们用箭头u来表示这k1个箭头;
(3) 令F1F2表示F1F2,令F1F2F3表示F1F2F3,等等。令F2表示FFF3表示FFF,等等。
(4) 若没有顶点被圈圈包起来,那么最左边的顶点就表示初始图灵机。

上述话语讲得云里雾里,我们来看几个具体的示意图。首先,我们需要三个基本的图灵机。

基本图灵机

假设字符集为A={a0,a1,...,ak}
1. r(右移机, right machine):四元组指令形如q0aiRq1,因此右移机的指令个数为k+1,它的操作很简单,读取一个符号,右移一格,停止。
2. l(左移机,left machine):指令形如q0aiLq1,读一个符号,左移一格,停止。
3. aj(常数机,constant machine):指令形如q0aiajq1,因此它的指令个数也是k+1个,操作是读一个符号,把它变成aj,然后停止。

常用示意图

基于上面的基本图灵机,我们构造几个常用的示意图。这些就是比机器码好一点,比汇编难一点的“图灵机代码”。

首先,我们定义一些缩写。

缩写

:表示任意符号
BB:连续的空字符串
B:右边全是空字符
B:左边全是空字符
W:任意非0长度的非空字符串
X:形如BW1BW2BWn,其中n1

  1. P,称P机器。如下图, 它的作用是找出当前符号右边(不含当前)第一个空字符。它的指令集是q0aiRq1,1ik,以及q1aiaiq0i>0
    数理逻辑5 -- 计算理论2

  2. Λ,称Λ机器,如下图,找出当前符号左边(不含当前)的第一个空字符。
    数理逻辑5 -- 计算理论2

  3. R,右止机器(right-end machine),如下图,它的操作是_XBB⇒∼XB_B,即若任意X右边以两个空字符结束,那么从左往右,把磁头移到X右边的第一个空字符位置。注意,上述式子中的下划线表示磁头位置。
    数理逻辑5 -- 计算理论2

  4. L,左止机器(left-end machine),如下图,它的操作是BBX_BB_X,即找到X左边第一个空字符位置。
    数理逻辑5 -- 计算理论2

  5. T,左漂机器(left-translation machine),如下图,操作是_BWB⇒∼WB_B,即把W移到左边的空字符左方。
    数理逻辑5 -- 计算理论2

  6. σ,漂移机器(shift machine),如下图,操作是BW1BW2B_BW2B_B,即W2W1覆盖掉
    数理逻辑5 -- 计算理论2

  7. C,清洗机器(clean-up machine),如下图,操作是BBXBWB_⇒∼WB_B,即把中间的X清洗掉。
    数理逻辑5 -- 计算理论2

  8. K,词复制机器(word-copier),如下图,操作是BWB_BWBWB_。注意,那个绕回来的箭头是指向r的。
    数理逻辑5 -- 计算理论2

  9. Kn,n价复制机器(n-shift copier),如下图,操作是BWnBWn1BW1B_BWnBWn1BW1BWnB_,即把Wn复制到最右边的位置。
    数理逻辑5 -- 计算理论2

最后,下面这个不难证的引理告诉我们,示意图等价与图灵机。
引理5.2.1:对任意以A={a0,a1,...,ak}为字符集的图灵机,存在一个示意图,它由rla0,a1,...,ak构成,并且它们对所有磁带的作用效果一样。