1 第 8 章教材习题:题意释义与通用解题方法
本节不是逐题完整解答。 它为每个教材编号习题提供经页面核验的题意释义(Problem)、主题标签(Topic),以及本章层面的通用解题方法导引。本公开仓库不分发教材原图、转移表、边权与长表达式,因此具体数值、状态名与表达式需结合教材对应原页数据自行推导。同一类题的“方法导引”会重复出现,它说明的是解题思路,而不是该题的具体答案。
本章共收录 21 个教材编号习题。
1.1 习题 8.1.1
Source: textbook PDF p.234
Problem(教材题意释义)
把 hello-world 类不可解问题归约到:停机、是否产生输出、两个程序输出是否相同等问题。
Topic
按教材定义构造 + 正确性证明
方法导引(通用,非本题具体答案)
先明确归约方向:要证明目标问题 B 不可判定,从已知不可判定问题 A 构造可计算映射 f,使 x∈A 当且仅当 f(x)∈B。 对 TM 语义性质,优先使用 A_TM/停机问题或 Rice 定理;构造的新机器在触发已知问题的“是”实例时表现出目标性质,否则表现出明显相反的性质。 若还要分类为 RE/非 RE,则分别讨论半判定器是否能通过交错模拟、枚举见证来接受正例,并结合补语言或已知非 RE 语言排除更强类别。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.2 习题 8.2.1
Source: textbook PDF p.241
Problem(教材题意释义)
列出图 8-9 图灵机在 00、000111、00111 上的完整 ID 序列。
Topic
图灵机
方法导引(通用,非本题具体答案)
把教材页中的状态、边、权值或产生式先完整抄成一个有限表,然后严格按本章算法逐步计算;不要凭图形直觉跳步。 本题的可复现做法是:①列出源对象;②执行相应算法(状态消除/可区分表/PDA 的 ID 推演/CFG 推导/PCP 搜索等);③每一步记录新状态、集合或配置;④用接受条件或不变量核对最终结果。 由于公开版不直接复制教材图表,精确的状态名、边权和表项以所标 PDF 页为准;算法步骤在这里完整给出,学习时可逐行对照源页复算。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.3 习题 8.2.2
Source: textbook PDF p.241
Problem(教材题意释义)
设计 TM:#0=#1;a^n b^n c^n;偶长度回文 ww^R。
Topic
TM
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.4 习题 8.2.3
Source: textbook PDF p.242
Problem(教材题意释义)
为二进制整数加 1 的 TM 写出转移/状态功能,并跟踪 $111 等输入。
Topic
TM
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.5 习题 8.2.4
Source: textbook PDF p.242
Problem(教材题意释义)
证明“函数计算机”和“函数图语言识别器”之间可以相互构造,并讨论部分函数。
Topic
按教材定义构造 + 正确性证明
方法导引(通用,非本题具体答案)
按题目定义直接建立形式化对象,并使用本章相应的标准构造或归纳证明。先写清楚输入、目标和不变量,再逐步给出构造;证明正确性时分别证明“构造出的对象不会接受/生成错误实例”和“每个合法实例都能被接受/生成”。 若题目是算法题,还要说明停机性与渐近复杂度;若是反例题,优先寻找最短、结构最简单的反例。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.6 习题 8.2.5
Source: textbook PDF p.242
Problem(教材题意释义)
根据教材给出的三组 TM 转移规则,逐个用不变量描述其语言。
Topic
TM
方法导引(通用,非本题具体答案)
把教材页中的状态、边、权值或产生式先完整抄成一个有限表,然后严格按本章算法逐步计算;不要凭图形直觉跳步。 本题的可复现做法是:①列出源对象;②执行相应算法(状态消除/可区分表/PDA 的 ID 推演/CFG 推导/PCP 搜索等);③每一步记录新状态、集合或配置;④用接受条件或不变量核对最终结果。 由于公开版不直接复制教材图表,精确的状态名、边权和表项以所标 PDF 页为准;算法步骤在这里完整给出,学习时可逐行对照源页复算。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.7 习题 8.3.1
Source: textbook PDF p.247
Problem(教材题意释义)
用状态存储、多道、子程序等技术重新设计习题 8.2.2 的图灵机。
Topic
图灵机
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.8 习题 8.3.2
Source: textbook PDF p.247
Problem(教材题意释义)
实现“右移一格”子程序:把读头右侧内容整体右移并把读头送回原位。
Topic
按教材定义构造 + 正确性证明
方法导引(通用,非本题具体答案)
按题目定义直接建立形式化对象,并使用本章相应的标准构造或归纳证明。先写清楚输入、目标和不变量,再逐步给出构造;证明正确性时分别证明“构造出的对象不会接受/生成错误实例”和“每个合法实例都能被接受/生成”。 若题目是算法题,还要说明停机性与渐近复杂度;若是反例题,优先寻找最短、结构最简单的反例。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.9 习题 8.3.3
Source: textbook PDF p.247
Problem(教材题意释义)
写跳过连续 0 的子程序,并用它识别不存在相邻 1 的二进制串。
Topic
按教材定义构造 + 正确性证明
方法导引(通用,非本题具体答案)
按题目定义直接建立形式化对象,并使用本章相应的标准构造或归纳证明。先写清楚输入、目标和不变量,再逐步给出构造;证明正确性时分别证明“构造出的对象不会接受/生成错误实例”和“每个合法实例都能被接受/生成”。 若题目是算法题,还要说明停机性与渐近复杂度;若是反例题,优先寻找最短、结构最简单的反例。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.10 习题 8.4.1
Source: textbook PDF p.252
Problem(教材题意释义)
为 8.2.2 的三个语言设计多带 TM,并尽量达到线性时间。
Topic
TM
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.11 习题 8.4.2
Source: textbook PDF p.253
Problem(教材题意释义)
对教材给定 NTM 转移表,列出输入 01、011 的所有/关键可达 ID。
Topic
TM
方法导引(通用,非本题具体答案)
把教材页中的状态、边、权值或产生式先完整抄成一个有限表,然后严格按本章算法逐步计算;不要凭图形直觉跳步。 本题的可复现做法是:①列出源对象;②执行相应算法(状态消除/可区分表/PDA 的 ID 推演/CFG 推导/PCP 搜索等);③每一步记录新状态、集合或配置;④用接受条件或不变量核对最终结果。 由于公开版不直接复制教材图表,精确的状态名、边权和表项以所标 PDF 页为准;算法步骤在这里完整给出,学习时可逐行对照源页复算。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.12 习题 8.4.3
Source: textbook PDF p.253
Problem(教材题意释义)
设计 NTM 处理教材的重复子串/带 # 分隔整数索引等三个语言。
Topic
TM
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.13 习题 8.4.4
Source: textbook PDF p.253
Problem(教材题意释义)
根据教材给定 NTM 规则刻画其接受语言。
Topic
TM
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.14 习题 8.4.5
Source: textbook PDF p.253
Problem(教材题意释义)
在只有一个 $ 标记的空白带上设计 NTM 找到 $;再说明如何确定化。
Topic
TM
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.15 习题 8.4.6
Source: textbook PDF p.253
Problem(教材题意释义)
设计双带 TM 识别 #0=#1,并让第二带只保存计数差/符号。
Topic
TM
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.16 习题 8.4.7
Source: textbook PDF p.253
Problem(教材题意释义)
用额外工作带模拟栈 push/pop 接口,说明多带 TM 如何实现栈机。
Topic
TM
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.17 习题 8.4.8
Source: textbook PDF p.253
Problem(教材题意释义)
比较三种用单带图灵机模拟 k 带图灵机的编码方案:计算 5 带、7 符号情形所需带字母表大小,并分析将带头位置放到额外道或通过整体平移对齐带头的优缺点。
Topic
图灵机
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.18 习题 8.4.9
Source: textbook PDF p.253
Problem(教材题意释义)
定义 k 头单带图灵机(k 个读写头同时作用于同一条带),证明 k 头图灵机与普通图灵机接受的语言完全相同。
Topic
图灵机
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.19 习题 8.4.10
Source: textbook PDF p.253
Problem(教材题意释义)
定义二维图灵机(带为二维无穷网格,带头可上下左右移动),证明二维图灵机与普通图灵机接受的语言完全相同。
Topic
图灵机
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.20 习题 8.5.1
Source: textbook PDF p.259
Problem(教材题意释义)
在最多两个计数器的限制下,设计计数器机接受教材四个语言:n≥m、m≥n、i=j或i=k、三者至少两个相等。
Topic
按教材定义构造 + 正确性证明
方法导引(通用,非本题具体答案)
先给出高层算法,再说明如何落实为有限控制与带操作。典型套路是多次扫描并把已处理符号做标记;多带机可把输入、工作区和计数分别放在不同带上;NTM 只把“猜一个候选”作为分支,随后仍需确定地验证。 正确性用循环不变量说明每轮扫描后哪些位置已经匹配/计数,停机性用每轮至少永久标记一个符号或严格缩小未处理区间证明。 要证明模型等价,则给出编码模拟:把多个带/多个头/二维坐标编码到一条带上,每个原机一步由有限次扫描模拟。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。
1.21 习题 8.5.2
Source: textbook PDF p.259
Problem(教材题意释义)
证明带右端标记的单栈机若确定,则不比 DPDA 更强;把栈符号扩展为 (X,S) 状态集合编码。
Topic
PDA;DPDA
方法导引(通用,非本题具体答案)
先明确栈不变量:栈内容应该编码尚未匹配的输入数量或待展开的文法变量。设计转移时按输入阶段分状态,压栈阶段只增加相应标记,匹配阶段每读一个符号弹出一个标记。 终态接受与空栈接受的转换使用新的底栈标记和新起始/终止状态;CFG→PDA 让栈顶变量按产生式做 ε 展开,栈顶终结符与输入相同则匹配弹出。 PDA→CFG 则用变量 [pXq] 表示从状态 p、栈顶 X 出发最终弹出 X 并到 q 的所有输入串,并按转移组合产生式。
Common mistakes
- 跳过量词、边界条件或接受方式;
- 把“存在一种构造”误写成“任意构造都成立”;
- 图表题未先准确抄录源数据就直接计算。