可计算性实例

1 语言类的计算性实例

若以√表示问题可判定,以×表示问题不可判定,则有下表:

乔姆斯基谱系 语言类 自动机 接受性 空性 满性 等价性
3型文法 正则语言 DFA,NFA,REX
2型文法 上下文无关语言 PDA,CFG × ×
1型文法 上下文有关语言 LBA,CSG × × ×
0型文法 图灵可识别语言 TM × × × ×

接下来尽可能的一一证明。

每个证明均是按照:

  1. 先给出定义
  2. 若可判定,则给出判定器的构造;
  3. 若不可判定,则尽可能的给出归约。

1.1 正则语言类

DFA,NFA,REX互相等价,故在证明中不做区分。他们的之间的转化都可以交给图灵机完成。

1.1.1 $A_{DFA}$可判定

  • 定义
\[A_{DFA} = \{ \langle M,w\rangle \mid M\ is\ DFA, and\ w\in L(M)\}\]
  • 给出判定器(第三版书-P123)

直接让图灵机解码$M$和$w$运行看结果就好了。

1.1.2 $E_{DFA}$可判定

  • 定义
\[E_{PDA} = \{ \langle M\rangle\mid M\ is\ DFA, and\ L(M)=\emptyset\}\]
  • 判定器(第三版书-P124)

先解码$M$,然后从初始状态出发,有转移函数路径就染色;

终止后检查所有被染色的状态,若有接收状态则拒绝,否则就接受

1.1.3 $ALL_{DFA}$可判定

  • 定义
\[ALL_{PDA} = \{ \langle M\rangle\mid M\ is\ DFA, and\ L(M)=\Sigma^{*}\}\]
  • 判定器(第三版书-P124)

先解码$M$,然后从初始状态出发,有转移函数路径就染色;

这里需要对状态图作限定,为了接受所有语言,必须考察每一个状态的每一种转移函数路径。如果没有给出,则默认进入一个拒绝状态。

终止后检查所有被染色的状态,若均为接受状态则接受,否则就拒绝

  • 归约

在已知1.1.4的结论的情况下,可以有:

\[ALL_{DFA}\le_m EQ_{DFA}\ via\ f\]

只需构造$f:\langle M\rangle \mapsto \langle M,M_A\rangle$

而$M_A$就是接受$\Sigma^{*}$的DFA。只需要在$M$的编码后续添加一个DFA的编码,这样的计算可以由图灵机完成。

1.1.4 $EQ_{DFA}$可判定

  • 定义
\[EQ_{DFA} = \{ \langle M,M'\rangle \mid M,M'\ are\ DFA, and\ L(M)= L(M')\}\]
  • 给出判定器(第三版书-P124)

由于正则语言类对于交并补封闭,所以可以构造对称差

\[L(C)=\big(L(M)\cap \overline{L(M')}\big)\bigcup\big(L(M')\cap \overline{L(M)} \big)\]

随后用1.1.2的判定器即可。

  • 归约

同2给出对称差,随后归约到$E_{PDA}$。

对称差只是一种构造算法,可以由图灵机完成,也就是多一归约的可计算函数。

1.2 上下文无关语言类

CFG,PDA互相等价,故在证明中不做区分。他们的之间的转化都可以交给图灵机完成。

1.2.1 $A_{CFG}$可判定

  • 定义
\[A_{CFG} = \{ \langle G,w\rangle \mid G\ is\ CFG,\ and\ w\in L(G)\}\]
  • 给出判定器(第三版书-P124)

直接让图灵机解码$G$转化成PDA,输入$w$运行看结果就好了。

或者将$G$转化成CNF,由于其线性生成,故求得输入串长度$\mid w\mid=l$;随后穷举所有的$2l-1$步派生比较即可。

1.2.2 $E_{CFG}$可判定

  • 定义
\[E_{CFG} = \{ \langle G\rangle\mid G\ is\ CFG, and\ L(G)=\emptyset\}\]
  • 判定器(第三版书-P125)
    • 对终结符做标记;
    • 如果一个生成式右侧全部被标记,则标记左侧;如此遍历直到不再标记新符号
    • 检查起始变元,若被标记则接受,否则拒绝。

1.2.3 $ALL_{CFG}$补图灵可识别

  • 定义
\[ALL_{CFG} = \{ \langle G\rangle\mid G\ is\ CFG, and\ L(G)=\Sigma^{*}\}\]
  • 判定器

能给出来就有鬼了。

  • 归约(第三版书-P142)

直观的看,对于上下文无关文法G

  • 如果它是满的,那么不断枚举串,每一个串都能接受,这样是不会停机的;
  • 反之,则必然会停机。

所以$ALL_{CFG}$最多是一个补图灵可识别语言。为了证明方便,我们考虑PDA。

接下来,假设我们已知$A_{TM}$是图灵可识别的。我们试图证明:

\[A_{TM}\le_m \overline{ALL_{CFG}}\]

H是接受计算历史。我们利用PDA来检查接受计算历史的合法性。

我们的目的是构造一个PDA D,它能接受除了$\langle M,w\rangle$的接受计算历史外的所有串。

现在的问题就来到了,我们如何构造一个可以判定接受计算历史的PDA。

这显然做不到,PDA只能判定“不是接受计算历史”这件事,不过对于我们的归约来说,也够了。

它分为三个不确定的部分。

  • 第一个部分检查初始格局,这依赖于对应图灵机的编码和串是否正确。
  • 第二个部分检查接受格局,这依赖于对应图灵机的编码。
  • 第三个部分检查跳转是否错误。这里我们需要将格局正反依次放置。

PDA只能检查“不是接受计算历史”的能力局限,由第三部分限制。只要不是,PDA D就输出这个串。

综上,我们构造可计算函数:

\[f:\langle M,w\rangle\mapsto\langle D\rangle\]

最后我们检查计算的正确性,如果$\langle M,w\rangle\in A_{TM}$,那么就存在接受计算历史H,则PDA D不能派生所有字符串。

1.2.4 $EQ_{CFG}$补图灵可识别

  • 定义
\[EQ_{CFG} = \{ \langle G,G'\rangle \mid G,G'\ are\ CFG, and\ L(G)= L(G')\}\]
  • 归约

直观来看,用图灵机枚举串输入,如果不等必然可以检测出;否则就是不停机。

它最多是一个补图灵可识别语言,接下来给出证明。

只需要证明:

\[ALL_{CFG}\le_m EQ_{CFG}\]

而这种归约只需要加入一个满的CFG即可。类似于1.1.3.

1.3 上下文有关语言类

CSG不会考察,只考虑LBA。

1.3.1 $A_{LBA}$可判定

  • 定义
\[A_{LBA} = \{ \langle M,w\rangle \mid M\ is\ LBA,\ and\ w\in L(M)\}\]
  • 给出判定器(第三版书-P140)

接受自然停机,怕的是死循环不停机。但是LBA的格局是有限的,所以可以记录步数,如果超过了最多格局数,可以判定为拒绝了。

1.3.2 $E_{LBA}$补图灵可识别

  • 定义
\[E_{LBA} = \{ \langle M\rangle\mid M\ is\ LBA, and\ L(M)=\emptyset\}\]
  • 归约(书-P141)

直观来看,还是若接受某个串就拒绝,否则就穷举不停机。所以最多是补图灵可识别。

同样,我们考虑接受计算历史归约:

\[\overline{A_{TM}}\le_m E_{LBA}\]

通过可计算函数$f:\langle M,w\rangle\mapsto\langle M’\rangle$

$M’$能接受$M$在$w$上的接受计算历史。则当其没有接受计算历史时,$M’$接受空语言。

构造方式类似于1.2.3

1.3.3 $ALL_{LBA}$补图灵可识别

  • 定义
\[ALL_{LBA} = \{ \langle M\rangle\mid M\ is\ LBA, and\ L(M)=\Sigma^{*}\}\]
  • 归约

直观的看

  • 如果它是满的,那么不断枚举串,每一个串都能接受,这样是不会停机的;
  • 反之,则必然会停机。

所以$ALL_{LBA}$最多是一个补图灵可识别语言。

接下来,假设我们已知$A_{TM}$是图灵可识别的。我们试图证明:

\[\overline{A_{TM}}\le_m ALL_{LBA}\]

同样利用计算历史归约。构造出只拒绝接受计算历史串的LBA即可。

1.3.4 $EQ_{LBA}$补图灵可识别

  • 定义
\[EQ_{LBA} = \{ \langle M,M'\rangle \mid M,M'\ are\ LBA, and\ L(M)= L(M')\}\]
  • 归约

直观来看,用图灵机枚举串输入,如果不等必然可以检测出;否则就是不停机。

它最多是一个补图灵可识别语言,接下来给出证明。

只需要证明:

\[ALL_{LBA}\le_m EQ_{LBA}\]

而这种归约只需要加入一个满的LBA即可。类似于1.1.3.

1.4 图灵机类

CFG,PDA互相等价,故在证明中不做区分。他们的之间的转化都可以交给图灵机完成。

1.4.1 $A_{TM}$图灵可识别

  • 定义
\[A_{TM} = \{ \langle M,w\rangle \mid M\ is\ TM,\ and\ w\in L(M)\}\]
  • 对角化(第三版书-P130)

对角化证明其不可判定。然后接受就必然能停机接受,否则可能不停机。这就是可识别的定义。

1.4.2 $E_{TM}$补图灵可识别

要和1.4.3一起读。否则祸害无穷。

  • 定义
\[E_{TM} = \{ \langle M\rangle\mid M\ is\ TM, and\ L(M)=\emptyset\}\]
  • 归约(书-P137)

还是直观来看,如果是接受空语言的图灵机,那么用楔形过程,还是不会停机;

如果不是,则必然有一个串会停机接受。所以最多是一个补图灵可识别语言。

以上的直观有一点问题。

给出归约和可计算函数:

\[A_{TM}\le_m \overline{E_{TM}} \\ f:\langle M,w\rangle\mapsto\langle M_w\rangle\]

利用$M$和$w$构造$M_w$:对于输入$x$:

  • 检查是否是$w$,如果不是,就拒绝;
  • 如果是,则模拟$M$在$w$上的运行结果,如果接受就接受.

这个可计算函数的正确性并不显然,给出证明。

如果$\langle M,w\rangle\in A_{TM}$,那么$M_w$接受串$w$。反之则接受空语言。

1.4.3 $ALL_{TM}$?补图灵可识别?

  • 定义
\[ALL_{TM} = \{ \langle M\rangle\mid M\ is\ TM, and\ L(M)=\Sigma^{*}\}\]
  • 归约

  • 如果它是满的,那么不断枚举串,每一个串都能接受,这样是不会停机的;
  • 反之,则必然会停机。

所以$ALL_{TM}$最多是一个补图灵可识别语言。

接下来,假设我们已知$A_{TM}$是图灵可识别的。我们试图证明:

\[\overline{A_{TM}}\le_m ALL_{TM}\]

同样可以用计算历史归约,和前面的证明类似。

nothing

但是$ALL_{TM}$既不是图灵可识别,也不是补图灵可识别。$ALL_{TM}$是$\Pi_2$语言类。

这说明直观的方式有问题,问题就出在接受性问题上。

前三类语言的接受性问题都是可判定的,而图灵机的接受性问题不是可判定的

利用图灵归约的概念十分好理解,也就是利用$A_{TM}$作谕示的归约。

所以$ALL_{TM}$,是相对于可识别语言的补图灵可识别语言。而真正确定$E_{TM}$的位置,还需要证明:

\[{E_{TM}}\le_m \overline A_{TM}\\ f:\langle M\rangle\mapsto\langle M',w\rangle\]

如果$M$接受空语言,那么任给一个$w$都不接受。

1.4.4 $EQ_{TM}$是$\Pi_2$语言类?

  • 定义
\[EQ_{CFG} = \{ \langle G,G'\rangle \mid G,G'\ are\ CFG, and\ L(G)= L(G')\}\]
  • 归约

直观来看,用图灵机枚举串输入,如果不等必然可以检测出;否则就是不停机。

它最多是一个相对于图灵可识别语言的补图灵可识别语言,接下来给出证明。

只需要证明:

\[ALL_{TM}\le_m EQ_{TM}\]

而这种归约只需要加入一个空的TM即可。类似于1.1.3.

1.5 杂项问题

1.5.1 $REGULAR_{TM}$不可判定

取归约和可计算函数:

\[A_{TM}\le_m REGULAR_{TM} \\ f:\langle M,w\rangle\mapsto\langle M'\rangle\]

其中$M’$行为:对于输入$x$

  • 检查$x$的形式,如果为$0^n1^n$则接受;
  • 否则在$w$上运行$M$,若接受则接受。

通过以上构造,得到;

  • 若$\langle M,w\rangle\in A_{TM}$,则接受$\Sigma^*$;否则接受$0^n1^n$。

1.5.2 PCP问题

未完待续。

2 语言类的封闭性实例

语言类 自动机 连接 星号 多一归约 图灵归约
正则语言 DFA,NFA,REX x x
上下文无关语言 PDA,CFG x x x x
上下文有关语言 LBA,CSG ? ? ?
图灵可判定语言 TM
图灵可识别语言 TM x

2.1 正则语言

2.1.1 交

同时跑两个自动机,停止时两个都处于接受状态。

2.1.2 并

同时跑两个自动机,停止时有一台处于接受状态。

2.1.3 补

交换自动机的接受状态与拒绝状态。

2.1.4 连接

第一台自动机每进入接受状态一次就启动一台自动机2.

2.1.5 星号

对连接做归纳

2.1.6 多一归约

没用,是对可判定语言保持,可以在可判定语言内部变换。

2.1.6 图灵归约

没用,是对可判定语言保持,可以在可判定语言内部变换。

2.2 上下文无关语言

2.2.1 交

012,01个数等和02个数等,交起来不是CFL。

2.2.2 并

同时跑两个自动机,停止时有一台处于接受状态。

2.2.3 补

ww。不是,但是其补语言是。

用非确定性,读进i个弹i个,然后读进n-i个弹n-i个。

2.2.4 连接

第一台PDA每进入接受状态一次就启动一台PDA2.

2.2.5 星号

对连接做归纳

2.2.6 多一归约

没用,是对可判定语言保持,可以在可判定语言内部变换。

2.2.6 图灵归约

没用,是对可判定语言保持,可以在可判定语言内部变换。

2.3 LBA

2.3.1 交

考虑图灵机的计算能力,限制在有穷空间上。理应是封闭的。

2.3.2 并

同时跑两个LBA,停止时有一台处于接受状态。

2.3.3 补

是的吧。。。

2.3.4 连接

第一台LBA每进入接受状态一次就启动一台LBA2.

2.3.5 星号

对连接做归纳

2.3.6 多一归约

没用,是对可判定语言保持,可以在可判定语言内部变换。

2.3.6 图灵归约

没用,是对可判定语言保持,可以在可判定语言内部变换。

2.4 图灵可判定语言

2.4.1 交

考虑图灵机的计算能力,理应是封闭的。

2.4.2 并

同时跑两个TM,停止时有一台处于接受状态。

2.4.3 补

是的.

2.4.4 连接

第一台TM每进入接受状态一次就启动一台TM2.

2.4.5 星号

对连接做归纳

2.4.6 多一归约

是的。

2.4.6 图灵归约

是的。

2.5 图灵可识别语言

2.4.1 交

考虑图灵机的计算能力,理应是封闭的。

2.4.2 并

同时跑两个TM,有一台停机接受。

2.4.3 补

不是。

2.4.4 连接

非确定的分段,这里不能用之前的办法,因为可能循环了。

图灵机并非要读入所有的串后再接受或拒绝。

2.4.5 星号

对连接做归纳

2.4.6 多一归约

是的。

2.4.6 图灵归约

不是的,他对取补运算不敏感。