6 不可判定的问题

6.1 判定问题

  1. Q: \(HALT(x,y)\)对应什么单参数判定问题?
    A:
    \(\Pi = (N,Y_\Pi)\)
    \(Y_\Pi = \{x|HALT(l(x),r(x))\}\)
    注:一元谓词\(HALT(l(x),r(x))\)不可计算,则\(\Pi\)不可判定。
  2. Q: 记号\(D_\Pi, P_\Pi, Y_\Pi\)分别是什么?
    A: \(D_\Pi\)是待考察判定问题的参数取值范围(“论域”)
    \(Y_\Pi\)是待考察判定问题应当判定为是的元素集合。
    \(P_\Pi\)\(\Pi\)诱导出的\(N\)上谓词,\(P_\Pi(x)\Leftrightarrow e^{-1}(x)\in Y_\Pi\),其中\(e^{-1}\)是解码。我们一般认为编解码是双射。
  3. Q: \(I\in Y_{\Pi_1}\Leftrightarrow f(I)\in Y_{\Pi_2}\)是双向,那归约关系为啥不对称?
    A: \(f\)可计算,但\(f\)未必可逆。想判定\(I\in Y_{\Pi_1}\)时,可以能行计算出\(f(I)\),然而反过来不一定可以能行计算。
    所以说此时\(\Pi_2\)解决了\(\Pi_1\)也解决了,\(\Pi_1\)归约到\(\Pi_2\)
  4. Q: 判定某程序计算的函数是否是全函数为何不是半可判定?
    A: 如果其对应整数集\(A\) r.e.则\(A\)是某可计算函数\(g\)值域,则\(\Phi_{g(x)}(y)\)为全函数,且所有的\(g(x)\)对应了所有的全函数。
    \(f(x)=\Phi(x,g(x))+1\)\(f\)可计算,且\(f(x)\ne \Phi_{g(x)}(x)\)\(f\)与任意\(\Phi_{g(x)}\)都不同,矛盾。
  5. Q: 本章的归约和平时做题常见的归约有什么异同?
    A: 平时是未知归约到可解。现在是不可判定归约到未知。
    本质是“逆否命题”,即A归约到B,A不可判定则B不可判定,B可判定则A可判定。

6.2 Turing机的停机问题

  1. Q: 考察的是不指定接收状态的TM. DTM \(\mathscr M\)的停机问题一定不可判定吗?
    A: 不一定。注意某个DTM的停机问题是以格局作为单参数的。
  2. Q: (一般的)TM停机问题如果可判定了,那么存在一个\(f\)是(),使得()通过\(f\)归约到此问题,矛盾。
    A: 把字符串\(x\)变为格局\(q_1 Bx\),判断任意(自然数对应的)r.e.语言中是否有任意字符串。
  3. Q: 用归约思想考察:“任给TM \(\mathscr M\)和格局\(\sigma\),从此开始是否可能到达状态\(q\)?”不可判定。
    A: 对TM \(\mathscr M\)和输入\(x\),能行地计算初始格局\(q_1 Bx\),并能行地计算“诱导出的”新TM \(\mathscr M'\)(新增唯一停机状态\(q_f\)且增加一系列\(qssq_f\)四元组)
    \(\mathscr M\)\(x\)停机等价于\(\mathscr M'\)\(q_1 Bx\)开始能达到状态\(q_f\).

6.3 字问题和Post对应问题

  1. Q: 无论对于\(\Sigma(\mathscr M)\)还是\(\Omega(\mathscr M)\),都可以把()归约到文法的字问题。
    A: \(\mathscr M\)的停机问题(判断某字符串是否属于\(\mathscr M\)接受的语言)
  2. Q: 引入特殊符号\([,],*,\tilde *\)作用是什么?假设存在奇长度派生的作用是什么?
    A:
    \([,]\):确保两端是指定有序对(“骨牌”)(至少,有合题意的子串的两端是),从而有\(u*,\tilde *v\)结构,以确保\(u\)为起点,\(v\)为终点.
    \(*,\tilde *\):结合两端出现的\(*,\tilde *\),归纳地依次出现\((*,\tilde *),(\tilde *,*)\),从而显式分割整个字符串。
    奇长度派生:确保是\(\tilde * v\)而不是相反的\(*\tilde v\),避免分类讨论。
  3. Q: 归约过程中,对于证明原字问题有解等价于新的Post对应问题有解的两个方向,解\(w\)对应的派生有什么不同?
    A: 提示:一个方向是通过已知的奇长度派生手动构造解\(w\),每个“分割段”恰好对应派生的一步。
    另一个方向中对于任何(“剥开了两侧多余”)的解,每个分割段可能对应使用多个产生式,对应派生的若干步(若干个\(g_i\)各自变成\(h_i\),具体可能是0或1或多个)。只要使用的“区间”“互不重合”即可。

6.4 有关文法的不可判定问题

  1. Q: 本节和上节有何区别和联系?
    A: 提示:本质上是利用了想要派生出某些字符串的必要条件是能派生出某某(或:某字问题有解)
  2. Q: 如何证明“任给一个(已知\(L(G)\)为有限的)文法\(G\)\(L(G)\)是否为奇数个元素的集合?”不可判定?
    A: 提示:\(T=\{a,b\}\)\(S\to hq_1 s_0 uh, hq_0 h\to b, S\to a\).

6.5 一阶逻辑中的判定问题

  1. Q: 对于本节中构造出的形式系统,为什么要求论域不能有空串,Thue过程左右侧也都不能有空串?
    A: 论域有空串则可能会“不断拼接空串”,造成不便。因为论域没有空串,\(g_i^\#,h_i^\#\)要作为谓词的论据也不能有空串。
  2. Q: 公理中哪些是一般半群的性质?哪些是特有的?
    A: 注意出现了等价关系的反身性(1)、传递性(2),半群的结合律(4,5),半群中运算良定义(3)。
    \(5+i\)则对应了某个特别的Thue过程,且\(^\#\)记号(连续复合二元谓词表示序列)也是具体的知识。

6 不可判定的问题 习题

  1. Q: 存在某半Thue系统,“任给字符串是否是定理”不可判定:一种证法是考察特例\(u_0=\)(),从而可以利用上()。
    A: S,之前有关文法的不可判定问题结论
    特别注意这个“特例”是原问题的子问题,而有一不可判定的问题可以归约到此子问题。
  2. Q: 对只包含一个产生式的半Thue过程字问题,通过()容易看出停机需要的时间是(潜在)无限长的,故不能直接(用NTM等)模拟解决。必须通过某种更本质的考察。
    我们利用算法正确性证明中常用的“考察严格单调函数”思想。例如:非负函数严格单调减,减至0时一定不能继续派生,这就说明一定停机。
    首先,若\(g,h\)长度不等则至少有一侧(正或逆)使得字符串长度()。
    其次,若\(g,h\)长度相等但至少有一个\(g\)中的字符不在(),则()。
    再次,若\(g,h\)只是重排,但有某字符\(a\)的(),则()。
    A: a通过\(a\to aa\)生成\(a^n\)
    每次应用产生式时至少减1
    \(h\)中,每次应用产生式时该字符的数量至少减1
    \(g\)各个出现位置形成的元组不同于\(h\)中的,每次应用产生式时\(a\)在全字符串中的各个出现位置形成的元组单调变化
    注:课本做法也行:关键是整个派生过程中(不重复)出现的字符串长度已知为\(|u|\)\(|v|\)间的整数(含端点),总的可能性有限。
  3. Q: 如何将一般的Post对应问题归约到只有2个符号?
    A: 二进制编码
  4. Q: 习题6.7用字问题归约直接还是对应问题归约直接?
    A: 对应问题。设想半Thue过程产生式\(aa\to \epsilon\)\(a\)不能派生\(\epsilon\)\(aa\)能,这说明不是“同态”。