跳转至

期末复习

可判定性与图灵机

题目来自: COMP481 Review Problems - Luay K. Nakhleh

答案: COMP481 Review Problems (Solution) - Luay K. Nakhleh

判定工具

Rice's Theorem

总结

判定问题 - 鹤翔万里的笔记本

训练题

比较有意义的题

L1L4 的分析是后面很多题目的基础, 还有 L26 构造值得学习.

L39 作为一个递归语言,其分析不是很容易,可以学习一下.

对以下给定的语言,判断它们: (I) 递归, (II) 递归可枚举且非递归, (III) 非递归可枚举. 根据 Few Shot 的学习方式,我展开了前几题的答案,可以摸索一下大致思路.

  1. L1={MM is a TM and there exists an input on which M halts in less than |M| steps }

    Answer

    L1递归的,存在图灵机 M 判定 L1:

    1. 给定输入 w, 如果 w 不是合法图灵机编码,拒绝 (之后省略这步)
    2. 计算 |M|
    3. 枚举 M 的所有长度不超过 |M| 的输入,模拟 M 的运行,如果在 |M| 步内停机,接受,否则拒绝

    这个例子重点在于步数有限,同时这也意味着输入串长度有限 (枚举更长的输入串没有意义,因为走不到),图灵机可以一一枚举.

  2. L2={MM is a TM and |L(M)|3 }

    Answer

    L2非递归可枚举的, 下面证明 HL2, 即 H 可以归约到 L2.

    对于 H 问题的输入 Mw, 映射 τ(Mw)=M , M 对于输入 x:

    1. 擦掉输入串 x
    2. Mw 拷贝到带上
    3. 模拟 Mw 上的运行,如果 Mw 上停机,接受,否则拒绝

    规约的证明:

    • MwHMw 上不停机 M 不接受任何串 |L(M)|3ML2
    • MwHMw 上停机 M 接受所有串 |L(M)|>3ML2

    扩展: 如果将语言改为 L={MM is a TM and |L(M)|=3 }: 可以任选一个有 3 个串的集合 A, 在 M 的第一步前添加如果 xA 就接受, 这样一来 MwHL(M)=3.

  3. L3={MM is a TM and |L(M)|3 }

    Answer

    L3递归可枚举且非递归的.

    递归可枚举:

    构造图灵机 M, 对于输入 M:

    1. 枚举所有 M 可能的输入串 x, 模拟 M 的运行
    2. 如果找到了至少 3 个停机的输入,就接受

    上面的枚举需要是“对角线式”的,先枚举所有长度为 1 的串,单步模拟,再枚举长度为 2 的串,两步模拟,以此类推. (后面的题都如此, 就不再一一约定了)

    非递归:

    证明 HL3, 即 H 可以归约到 L3.

    对于 H 问题的输入 Mw, 映射 τ(Mw)=M , M 对于输入 x:

    1. 擦掉输入串 x
    2. Mw 拷贝到带上
    3. 模拟 Mw 上的运行,如果 Mw 上停机,接受,否则拒绝

    规约的证明:

    • MwHMw 上停机 M 接受所有串 |L(M)|3ML3
    • MwHMw 上不停机 M 不接受任何串 |L(M)|<3ML3

    这一部分的构造和上一题很相似,只不过是从 H 换成了 H, 这取决于条件中的不等号方向.

  4. L4={MM is a TM that accepts all even numbers }

    Answer

    L4非递归可枚举的. 需证明 HL4.

    对于 H 问题的输入 Mw, 映射 τ(Mw)=M , M 对于输入 x:

    1. 计算 |x|
    2. 模拟 Mw 上运行 |x|
    3. 如果 |x| 步内停机,就拒绝,否则接受

    规约的证明:

    • MwHMw 上不停机 M 接受所有串, 那自然也就接受了全部偶数 ML4
    • MwHMwk 步内停机 M 拒绝所有 |x|k 的串 w M 拒绝无限多个偶数 ML4

    : 这里将是否接受与输入串 w 长度结合的技巧值得学习.

    扩展:

    1. 修改为 L={MM is a TM that does not accept all even numbers}: 此时变成递归可枚举,可以用图灵机 M; 枚举所有偶数输入给 M, 如果 M 不接受某个偶数,就接受. 这样可以半判定 M 接受的是不是所有偶数.

    2. 修改为 L={MM is a TM that rejects all even numbers}: 此时变成 RE 非 R, 可以证明 HL. 这个改版和原版的关系,与 L3L2 的关系相似.

  5. L5={MM is a TM and L(M) is finite }

    Answer

    L5非递归可枚举的,类似 L2 的构造:

    • MwHMw 上不停机 M 不接受任何串 L(M)=0 有限 ML5
    • MwHMw 上停机 M 接受所有串 L(M) 并非有限, ML5
  6. L6={MM is a TM and L(M) is infinite }

    Answer

    L6 也是非递归可枚举的,是不是和想的不太一样?

    L3 的构造可以证明 HL6, 这只意味着 L6 是非递归的:

    • MwHMw 上停机 M 接受所有串 L(M) 无限 ML6
    • MwHMw 上不停机 M 不接受任何串 L(M)=0 有限 ML6

    但事实上也可以找到规约证明 HL6, 而这和 L4 类似:

    对于 H 问题的输入 Mw, 映射 τ(Mw)=M , M 对于输入 x:

    1. 计算 |x|
    2. 模拟 Mw 上运行 |x|
    3. 如果 |x| 步内停机,就接受,否则拒绝

    规约的证明:

    • MwHMw 上不停机 M 不接受任何串 L(M)=0 有限 ML6
    • MwHMwk 步内停机 M 接受所有 |w|k 的串 w L(M) 无限 ML6
  7. L7={MM is a TM and L(M) is countable }

    Answer

    L7递归的: 这是全部图灵机编码的集合,注意: - 对于一个语言,其内容是可数无限多的,比如对于 Σ 可以按照字典序一一枚举串长为 1,2, 的串,给它们编号,就建立了与 N+ 的一一映射. - 而语言的个数是不可数无穷多的, 是 2Σ.

  8. L8={MM is a TM and L(M) is uncountable }

    Answer

    L8递归的: L8=, 没有一个语言有不可数无穷多个元素.

  9. L9={M1,M2M1 and M2 are two TMs, and εL(M1)L(M2)}

    Answer

    L9递归可枚举非递归的:

    递归可枚举:

    构造图灵机 M 可以半判定, 对于输入 M1,M2, 并行模拟 M1M2:

    1. 模拟 M1 输入为 ε
    2. 模拟 M2 输入为 ε
    3. 两台机器有一个停机就停机

    非递归:

    证明 HL9, 即 H 可以归约到 L9.

    对于 H 问题的输入 Mw, 映射 τ(Mw)=M,M , M 对于输入 x:

    1. 模拟 Mw 上的运行,如果停机就接受,否则拒绝

    规约的证明:

    • MwHMw 上停机 M1M2 接受所有的串 εL(M1)L(M2)M1,M2L9
    • MwHMw 上不停机 M1M2 拒绝所有输入 εL(M1)L(M2)M1,M2L9
  10. L10={M1,M2M1 and M2 are two TMs, and εL(M1)L(M2)}

    Answer

    L10递归可枚举非递归的,与 L9 类似,只不过证明递归可枚举改成两台都停机才停机.

  11. L11={M1,M2M1 and M2 are two TMs, and εL(M1)L(M2)}

    Answer

    L11非递归可枚举的,条件等价于 $\varepsilon \in L(M_1) $ 且 εL(M2), 证明 HL11:

    对于 H 的输入 Mw, 构造映射 τ(Mw)=M1,M2, 对于输入 x:

    1. 模拟 Mw 上的运行
      • 如果 M 停机,M1 拒绝,而 M2 接受
      • 如果 M 不停机,M1 接受,M2 拒绝

    规约的证明:

    • MwHMw 上不停机 M1 接受所有串,M2 拒绝所有串 εL(M1)L(M2)=ΣM1,M2L11
    • MwHMw 上停机 M1 拒绝所有串,M2 接受所有串 εL(M1)L(M2)=M1,M2L11
  12. L12={MM is a TM, M0 is a TM that halts on all inputs, and M0L(M)}

    Answer

    L12递归可枚举非递归的.

    递归可枚举:

    构造图灵机 M 半判定, 对于输入 M:

    1. 模拟 M 输入 M0 的情况, 如果 M 停机就接受.

    非递归:

    使用 Rice's Theorem 可以证明.

  13. L13={MM is a TM, M0 is a TM that halts on all inputs, and ML(M0)}

    Answer

    L13递归的. L(M0)=Σ, 所以 L13 是所有图灵机编码的集合.

  14. L14={M,xM is a TM, x is a string, and there exists a TM, M, such that xL(M)L(M)}

    Answer

    L14递归的, 取 M 拒绝所有输入的图灵机,这样的话,所有 Mx 都属于 L14.

  15. L15={MM is a TM, and there exists an input on which M halts within 1000 steps }

    Answer

    L15递归的,构造图灵机 M 枚举所有 w(|w|1000), 模拟 M 的运行,如果在 1000 步内停机,接受, 如果都不存在,就拒绝.

  16. L16={MM is a TM, and there exists an input whose length is less than 100, on which M halts }

    Answer

    L16递归可枚举非递归的.

    递归可枚举:

    构造图灵机 M 半判定, 枚举所有 w(|w|<100), 模拟 M 的运行,如果存在一个 w 使其停机,就接受.

    非递归:

    证明 HL16, 即 H 可以归约到 L16.

    对于 H 问题的输入 Mx, 映射 τ(Mx)=M , M 对于输入 w:

    1. 模拟 Mx 上的运行,停机与否都与 M 一致

    规约的证明:

    • MxHMx 上停机 M 对所有输入都停机 w, |w|<100,Mw 上停机 ML16
    • MxHMx 上不停机 M 对所有输入都不停机 w, |w|<100,Mw 上不停机 ML16
  17. L17={MM is a TM, and M is the only TM that accepts L(M)}

    Answer

    L17递归的,L17=, 没有一个图灵机是唯一接受自己语言的, 因为可以对起做一点点改动,中间加一些无意义动作,最后还是可以接受相同的语言.

  18. L18={(k,x,M1,M2,,Mk)k is a natural number, x is a string, Mi is a TM for all 1ik, and at least k/2 TMs of M1,,Mk halt on x }

    Answer

    L18递归可枚举非递归的.

    递归可枚举:

    构造图灵机 M 半判定, 对于输入 (k,x,M1,M2,,Mk), 并行模拟每台图灵机对于输入 x 的运行情况,一旦有至少 k/2 台停机,就接受.

    非递归:

    证明 HL18, 即 H 可以归约到 L18.

    对于 H 问题的输入 Mw, 映射 τ(Mw)=(1,w,M), M 对于输入 x:

    1. 模拟 Mw 上的运行,如果停机就接受,否则拒绝

    规约的证明:

    • MwHMw 上停机 M 停机 (1,w,M)L18
    • MwHMw 上不停机 M 不停机 (1,w,M)L18
  19. L19={MM is a TM, and |M|<1000 }

    Answer

    L19递归的,可以构造图灵机 M 按照字典序枚举所有合法的长度 <1000 的图灵机编码.

  20. L20={Mx,|x|51,and xL(M)}

    Answer

    L20递归可枚举非递归的.

    递归可枚举:

    构造图灵机 M 半判定, 对于输入 M: 枚举所有符合条件的输入 x, 如果找到一个 x 使得 |x|51xL(M), 就接受.

    非递归:

    使用 Rice's Theorem 或者构造一个规约,证明 HL20 都可以, 构造的话可以参考 L16.

  21. L21={MM is a TM, and M halts on all palindromes }

    Answer

    L21非递归可枚举的, 这道题很像 L4:

    可以证明 HL21, 即 H 可以归约到 L21.

    对于 H 问题的输入 Mw, 映射 τ(Mw)=M , M 对于输入 x:

    1. 计算 |x|
    2. 模拟 Mw 上的运行 |x|
    3. 如果 |x| 步内停机,就拒绝,否则接受

    规约的证明:

    • MwHMw 上不停机 M 接受所有串 M 在所有回文串上停机 ML21
    • MwHMw 上停机 M 拒绝所有 |x|k 的串 w 回文串 wwRM 拒绝 ML21
  22. L22={MM is a TM, and L(M){a2nn0} is empty }

    Answer

    L22非递归可枚举的, 构造类似 L2, 让 L(M) 分别是 Σ 分类讨论.

  23. L23={M,kM is a TM, and |{wL(M):wab}|k }

    Answer

    L23递归可枚举非递归的.

    递归可枚举: 按照长度枚举所有 ab, 模拟 M 看其是否接受, 统计 L(M) 中的符合条件的串数目,如果大于等于 k 就接受.

    非递归: 构造类似 L2.

  24. L24={MM is a TM that halts on all inputs and L(M)=L for some undecidable language L }

    Answer

    L24递归的,既然 M 对所有的输入都停机,那么 L(M) 是可判定的,因此 L24=.

  25. L25={MM is a TM, and M accepts (at least) two strings of different lengths }

    Answer

    L25递归可枚举非递归的.

    递归可枚举: 构造图灵机 M 半判定, 对于输入 M:按照长度枚举串,并记住某个长度是否存在一个串被 M 接受,如果有两个不同长度的串被接受,就接受.

    非递归: 构造类似 L2, 也可用 Rice's Theorem.

  26. L26={MM is a TM such that both L(M) and L(M) are infinite }

    Answer

    L26非递归可枚举

    证明 HL26, 即 H 可以归约到 L26.

    对于 H 问题的输入 Mw, 映射 τ(Mw)=M , M 对于输入 x:

    1. 计算 |x|
    2. 如果 |x| 是奇数,就接受
    3. 否则,模拟 Mw 上运行,如果停机就接受,否则拒绝

    规约的证明:

    • MwHMw 上不停机 M 接受所有奇数长度的串 L(M)L(M) 都是无限的 M L26
    • MwHMw 上停机 M 接受所有串 L(M)= 有限 M L26
  27. L27={M,x,kM is a TM, and M does not halt on x within k steps }

    Answer

    L27递归的,构造图灵机 M 模拟 Mx 上的运行,如果在 k 步内停机,就拒绝,否则接受.

  28. L28={MM is a TM, and |L(M)| is prime }

    Answer

    L28非递归可枚举的,证明类似 L2 的扩展 |L(M)=3| 的情况.

    如果想在 |L(M)| 有限的情况下来证明,可以有下面的构造:

    对于 H 问题的输入 Mw, 映射 τ(Mw)=M , M 对于输入 x:

    1. 如果 xΣ 字典序前 3 个串, 接受
    2. 如果 x 是第 4 个串,模拟 Mw 上的运行,如果停机就接受,否则拒绝
    3. 其他情况直接拒绝

    规约的证明:

    • MwHMw 上不停机 M 接受前 3 个串 |L(M)|=3 是素数 M L28

    • MwHMw 上停机 M 接受第 4 个串 |L(M)|=4 不是素数 M L28

  29. L29={M there exists xΣ such that for every yL(M),xyL(M)}

    Answer

    L29非递归可枚举的.

  30. L30={M there exist x,yΣ such that either xL(M) or yL(M)}

    Answer

    L30递归的, L30 是全部图灵机编码的集合. 取 x=y, 好话坏话全让它说了.

    扩展:

    修改为 L={MM is a TM, and there exist x,yΣ such that xL(M) and yL(M)}.

    此时变为非递归可枚举的, 证明 HL.

    对于 H 问题的输入 Mw, 映射 τ(Mw)=M , M 对于输入 x:

    1. 如果 x=ε, 接受
    2. 否则,模拟 Mw 上的运行,如果停机就拒绝,否则接受

    规约的证明:

    • MwHMw 上不停机 M 只接受 ε x=ε,y=a,εL(M) and aL(M)M L
    • MwHMw 上停机 M 接受所有串 \notexistsyΣ, yL(M)M L
  31. L31={M there exists a TM M such that MM  and L(M)=L(M)}

    Answer

    L31递归的,Missing open brace for subscript.

  32. L32={M1,M2L(M1)mL(M2)}

  33. L33={MM does not accept any string w such that 001 is a prefix of w }

    Answer

    L33非递归可枚举的. 规约类似 L2.

  34. L34={M,xM does not accept any string w such that x is a prefix of w }

    Answer

    L34非递归可枚举的. 同样地, 规约类似 L2.

  35. L35={M,xx is a prefix of M }

    Answer

    L35递归的,构造图灵机 M 直接判断 x 是否为 M 前缀即可.

  36. L36={M1,M2,M3L(M1)=L(M2)L(M3)}

    Answer

    L36非递归可枚举的.

    证明 HL36, 即 H 可以归约到 L36.

    对于 H 问题的输入 Mw, 映射 τ(Mw)=M1,M2,M3, M1 对于输入 x:

    1. 模拟 Mw 上的运行,如果停机就接受,否则拒绝

    M2M3 拒绝所有串.

    规约的证明:

    • MwHMw 上不停机 M1 拒绝任何输入 L(M1)==L(M2)L(M3)M1,M2,M3L36

    • MwHMw 上停机 M1 接受所有串 L(M1)=ΣL(M2)L(M3)M1,M2,M3L36

  37. L37={M1,M2,M3L(M1)L(M2)L(M3)}

    Answer

    L37非递归可枚举的. 类似 L36 的证明, 如果非要真子集的话,就改一下 M2 让它接受一个串就行:

    证明 HL37, 即 H 可以归约到 L37.

    对于 H 问题的输入 Mw, 映射 τ(Mw)=M1,M2,M3, M1 对于输入 x:

    1. 模拟 Mw 上的运行,如果停机就接受,否则拒绝

    M2 只接受 Σ 的第一个串, M3 拒绝所有串.

    规约的证明:

    • MwHMw 上不停机 M1 拒绝任何输入 L(M1)=L(M2)L(M3)M1,M2,M3L37
    • MwHMw 上停机 M1 接受所有串 L(M1)=ΣL(M2)L(M3)M1,M2,M3L37
  38. L38={M1 there exist two TMs M2 and M3 such that L(M1)L(M2)L(M3)}

    Answer

    L38递归的,L38 是全部图灵机编码的集合. 取 M2M3 接受所有的串.

  39. L39={M,wM is a TM that accepts w using at most 2|w| squares of its tape }

    Answer

    L39递归

    我们的思路是,我们一定能够在有限步内判断M 是否最多使用 2|w| 个方格就能接受 w.

    M 的状态数为 m, 字母表大小为 k, 记 r=|w|. 如果 M 用了至多 2r 个方格,那么 M 至多有 α=mk2r2r 种格局 (枚举状态,带子内容,带头位置).

    如果 Mw 上运行了超过 α 步,而且它没有使用超过 2r 个方格,那么根据鸽巢原理,它的格局一定与之前的某个格局相同,也就是陷入了死循环.

    因此,我们只需要构造图灵机 M, 模拟 Mwα+1 步,如果 Mα 步内接受,那么 M 接受, 如果拒绝,M 拒绝. 如果 M 使用了超过 2r 个方格,或者到 α+1 步还没有停机,也拒绝.

    这样,我们就使用 M 判定了 L39.

评论