11. 讲义 10a:不可识别性与映射归约
📜 [原文1]
讲义 10a:不可识别性与映射归约
📖 [逐步解释]
这个标题明确了本讲义的核心主题。“不可识别性”(Unrecognizability)和“映射归约”(Mapping Reductions)是计算理论中两个紧密相关且至关重要的概念,它们都属于可计算性理论(Computability Theory)的范畴。
- 不可识别性:这个概念用来描述一类比“不可判定”问题更“难”的问题。一个语言是可识别的(Recognizable),意味着存在一个图灵机,当输入属于该语言的字符串时,它会停机并接受;而当输入不属于该语言时,它要么停机并拒绝,要么永不停机(循环)。而一个“不可识别”的语言,则连这样的图灵机都不存在。这通常意味着我们无法系统性地验证一个字符串是否属于该语言。
- 映射归约:这是一种形式化的工具,用来比较两个问题的相对难度。如果问题A可以映射归约到问题B(记作 $A \leq_{m} B$),直观上意味着问题A“不比”问题B更难。我们可以通过一个可计算的函数,将问题A的任何实例转化为问题B的一个实例,并且转化后的实例的答案与原实例的答案完全相同。这个工具非常强大,因为一旦我们知道问题A是“难”的(比如不可识别的),并且我们证明了 $A \leq_{m} B$,那么我们就可以断定问题B也一定是“难”的(至少和A一样难)。
本讲义的目标就是介绍如何使用映射归约作为一种核心技术,来证明某些语言是不可识别的。
📝 [总结]
标题设定了本讲义的讨论范围:深入探讨不可识别性这一概念,并介绍映射归约作为证明语言不可识别性的主要方法。
🎯 [存在目的]
本讲义的目的是从“什么是不可识别的”出发,过渡到“如何证明一个问题是不可识别的”。它将为学生提供一套强大的理论工具(映射归-约),用于分析和分类计算问题的难度等级,特别是那些超越了“不可判定”范畴的问题。
🧠 [直觉心智模型]
想象一个巨大的图书馆,里面有无数本书(代表所有可能的字符串)。
- 可判定的语言:就像有一个全知全能的图书管理员,你问他任何一本书(字符串)是否属于某个特定的收藏系列(语言),他总能在有限时间内给你一个明确的“是”或“否”的回答。
- 可识别的语言:想象图书管理员换成了一个勤奋但可能有点固执的助手。如果你问的书确实属于某个系列,他最终会找到并告诉你“是”。但如果这本书不属于那个系列,他可能会一直找下去,永远不给你答复(也可能最终告诉你“否”)。你只能确定“是”的情况。
- 不可识别的语言:现在这个图书馆里连那个勤奋的助手都没有了。对于某个特定的收藏系列,你没有任何系统性的方法来确认一本书是否属于它。即使你找了很久,也无法确定是书不属于这个系列,还是你只是还没找到。
映射归约就像一本“翻译词典”。如果你有一个你已经知道答案的“难问题A”(比如一个你确定找不到的书),这本词典可以帮你把它“翻译”成另一个“问题B”。如果翻译后的问题能在B中找到答案,那么原问题A也应该能找到。因此,如果A是“难”的,那么B也一定是“难”的。
💭 [直观想象]
想象一下,证明一个问题“不可识别”就像证明“在宇宙中找到一个特定外星生物是不可能的”。
- 方法一(补集法):你可能无法直接证明找不到,但你可以证明它的“反面”是容易的。比如,你可以证明“列出所有非该外星生物的物种”这个任务是可识别的。如果“找到外星生物”和“找到非外星生物”这两个任务中,只有一个是系统可行的,而我们又知道“找到外星生物”这个任务本身非常复杂(不可判定),那么我们就可以断定,“找到外星生物”这个任务本身是不可系统执行的(不可识别)。
- 方法二(映射归约):你已经知道另一个任务是绝对不可能完成的,比如“造出永动机”(这是一个已知的不可识别问题)。如果你能设计一个机器,说:“只要你能找到那个外-星生物,我就能用它给你造出永动机”,那么你就成功地把“造永动机”的难度归约到了“找外星生物”上。既然永动机不可能,那么找到那个外星生物也一定是不可能的。
22. 不可识别性
📜 [原文2]
1 不可识别性
定义 1.1. 语言 $L$ 是可识别的,当且仅当存在一台图灵机接受 $L$ 中的每个字符串,并且不接受(拒绝或循环)任何不在 $L$ 中的字符串。
定义 1.2. 语言 $L$ 是协同可识别的,当且仅仅当其补集 $\bar{L}$ 是可识别的。
定理 1.3. $L$ 是可判定的 $\Longleftrightarrow L$ 是可识别的且协同可识别的
我们已经看到了几种不同的方法来证明语言 $L$ 是不可识别的:
📖 [逐步解释]
这部分首先回顾了可识别性 (Recognizability) 和协同可识别性 (Co-recognizability) 的基本定义,并重申了它们与可判定性 (Decidability) 之间的关键关系。
关于定义1.1 (可识别的):
一个语言 $L$ 被称为图灵可识别的(Turing-recognizable)或递归可枚举的(Recursively Enumerable)。这意味着我们可以构造一台图灵机 $M$,它扮演着一个“验证者”或“接收器”的角色。
- 对于属于 $L$ 的字符串 $w$ ($w \in L$):当我们将 $w$ 作为输入给图灵机 $M$ 时,$M$ 会在有限的步骤后停机,并进入接受状态。这就像一个俱乐部会员,保安(图灵机)检查了你的会员卡(字符串 $w$),确认无误后让你进入(接受)。
- 对于不属于 $L$ 的字符串 $w'$ ($w' \notin L$):当我们将 $w'$ 作为输入给图灵机 $M$ 时,$M$ 永远不会进入接受状态。这里有两种可能性:
- $M$ 在有限步骤后停机,并进入拒绝状态。
- $M$ 永不停机,即陷入一个无限循环。
这就像一个非会员,保安要么直接告诉你“你不能进”(拒绝),要么把你晾在一边,一直核对他的名单,永远不给你答复(循环)。重要的是,你绝对不会被允许进入。
关于定义1.2 (协同可识别的):
一个语言 $L$ 是协同可识别的(co-recognizable),这个概念是建立在“补集”和“可识别性”之上的。
- 首先,我们需要理解什么是补集 $\bar{L}$。补集指的是所有不在 $L$ 中的字符串的集合。如果我们把所有可能的字符串看作一个全集 $\Sigma^*$,那么 $\bar{L} = \Sigma^* - L$。
- 如果这个补集 $\bar{L}$ 本身是可识别的,那么我们就称原始语言 $L$ 是协同可识别的。
- 这意味着,存在一台图灵机 $M'$,它能识别 $\bar{L}$。也就是说:
- 如果一个字符串 $w$ 不属于 $L$ (即 $w \in \bar{L}$),那么 $M'$ 会在 $w$ 上停机并接受。
- 如果一个字符串 $w$ 属于 $L$ (即 $w \notin \bar{L}$),那么 $M'$ 在 $w$ 上要么拒绝,要么循环。
关于定理1.3 (可判定性与可识别性的关系):
这个定理是计算理论的基石之一,它精确地描述了可判定、可识别和协同可识别三者之间的关系。
- $L$ 是可判定的:意味着存在一台图灵机 $M_{decider}$,它对于任何输入字符串 $w$,总能在有限时间内停机,并明确地回答“是”(接受)或“否”(拒绝)。它从不循环。
- 定理内容:一个语言 $L$ 是可判定的,当且仅当它既是可识别的又是协同可识别的。
- $\Longrightarrow$ (如果 $L$ 可判定,则它既可识别又协同可识别):
- 如果 $L$ 可判定,那么存在一个总停机的图灵机 $M_{decider}$。这个 $M_{decider}$ 本身就可以作为 $L$ 的识别器,所以 $L$ 是可识别的。
- 因为 $L$ 是可判定的,它的补集 $\bar{L}$ 也是可判定的(我们可以构造一个图灵机,它模拟 $M_{decider}$,然后在接受时拒绝,在拒绝时接受)。既然 $\bar{L}$ 是可判定的,那么它也一定是可识别的。根据定义,如果 $\bar{L}$ 可识别,那么 $L$ 就是协同可识别的。
- $\Longleftarrow$ (如果 $L$ 可识别且协同可识别,则它可判定):
- 假设 $L$ 是可识别的,存在图灵机 $M_{rec}$ 识别它。
- 假设 $L$ 是协同可识别的,存在图灵机 $M_{co-rec}$ 识别它的补集 $\bar{L}$。
- 我们可以构造一个新的图灵机 $M_{decider}$,它在输入 $w$ 时,同时(例如,通过在纸带上交替模拟)运行 $M_{rec}$ 和 $M_{co-rec}$。
- 对于任何字符串 $w$,它要么属于 $L$,要么属于 $\bar{L}$。
- 如果 $w \in L$,$M_{rec}$ 必定会在有限步后停机并接受。此时,$M_{decider}$ 就停机并接受 $w$。
- 如果 $w \notin L$ (即 $w \in \bar{L}$),$M_{co-rec}$ 必定会在有限步后停机并接受。此时,$M_{decider}$ 就停机并拒绝 $w$。
- 由于对于任何输入 $w$,$M_{rec}$ 和 $M_{co-rec}$ 中必有一个会停机,所以我们新构造的 $M_{decider}$ 总是会停机。因此,$L$ 是可判定的。
💡 [数值示例]
示例1:可识别的语言
- 语言 $L_{even} = \{ \text{所有偶数的二进制表示} \}$。
- 我们可以构造一个图灵机 $M$ 来识别它:对于输入字符串 $w$,检查它是否是合法的二进制表示,然后检查其最低位是否为 '0'。如果是,则接受;否则,拒绝。这台图灵机总会停机,所以 $L_{even}$ 不仅是可识别的,还是可判定的。
示例2:一个经典的、可识别但不可判定的语言
- 语言 $A_{TM} = \{ \langle M, w \rangle \mid M \text{ 是一台图灵机且 } M \text{ 接受 } w \}$。
- 可识别性:我们可以构造一个通用图灵机 $U$,它在输入 $\langle M, w \rangle$ 上模拟 $M$ 对 $w$ 的计算。
- 如果 $M$ 接受 $w$,那么模拟会在有限步后结束,$U$ 就停机并接受。
- 如果 $M$ 拒绝 $w$,模拟会在有限步后结束,$U$ 就停机并拒绝。
- 如果 $M$ 在 $w$ 上循环,那么 $U$ 的模拟也会循环。
- 根据定义1.1,这台通用图灵机 $U$ 成功地识别了 $A_{TM}$。
- 协同可识别性:$A_{TM}$ 的补集 $\overline{A_{TM}}$ 是不可识别的(后面会讲到)。因此,$A_{TM}$ 不是协同可识别的。根据定理1.3,因为它不是协同可识别的,所以它不可判定。
示例3:协同可识别的语言
- 语言 $\overline{A_{TM}}$ 是 $A_{TM}$ 的补集。它包含所有格式不正确的编码,以及所有使得 $M$ 不接受 $w$(即拒绝或循环)的 $\langle M, w \rangle$ 对。
- $\overline{A_{TM}}$ 本身是不可识别的。
- 但是它的补集,即 $(\overline{\overline{A_{TM}}}) = A_{TM}$ 是可识别的。
- 所以,根据定义1.2,$\overline{A_{TM}}$ 是协同可识别的。
⚠️ [易错点]
- 混淆“拒绝”与“循环”:在可识别性的定义中,对于不属于语言的字符串,图灵机既可以停机拒绝,也可以无限循环。这两者都被视为“不接受”。但在可判定性中,图灵机必须总是停机,不允许循环。
- 认为“不可判定”就等于“不可识别”:这是一个常见的误解。$A_{TM}$ 就是一个典型的反例,它是不可判定的,但却是可识别的。不可判定仅仅意味着问题没有一个总能停机给出答案的算法。
- 对“协同可识别”的理解:不要直观地认为协同可识别的语言“很容易”。它只是意味着它的“反面”问题是可识别的。例如,$\overline{A_{TM}}$ 是协同可识别的,但它同样是不可判定的。
- 定理1.3的应用前提:这个定理是关于语言本身的性质,而不是关于某个特定的图灵机。一个语言可能是可判定的,但你可能构造了一个识别它但偶尔会循环的图灵机。这并不影响语言本身的可判定性。
📝 [总结]
本节复习了计算理论中的三个核心概念层次:
- 可判定 (Decidable): 最“简单”的一类。存在算法,总能停机并给出明确的“是/否”答案。
- 可识别 (Recognizable): 中间层次。存在算法,对“是”的实例能停机确认,但对“否”的实例可能永远无法给出结论。
- 协同可识别 (Co-recognizable): 中间层次。存在算法,对“否”的实例能停机确认,但对“是”的实例可能永远无法给出结论。
定理1.3建立了它们之间的桥梁:一个问题当且仅当同时拥有“是-验证器”和“否-验证器”时,它才拥有一个完美的“决策者”。
🎯 [存在目的]
这部分内容的存在是为了构建后续讨论的基础。要理解什么是“不可识别”,首先必须精确地掌握“可识别”的定义以及它与“可判定”的关系。定理1.3不仅是一个理论结论,它还直接启发了证明一个语言不可识别的策略。
🧠 [直觉心智模型]
- 可判定 = 一个完美无缺的法官,对任何案子都能在有限时间内给出“有罪”或“无罪”的判决。
- 可识别 = 一个只找“有罪”证据的侦探。如果嫌疑人真的有罪,他最终能找到证据并提交报告。如果嫌疑人无罪,他可能永远在调查的路上,不结案。
- 协同可识别 = 一个只找“无罪”证据的辩护律师。如果嫌疑人真的无罪,他最终能找到证据并让法官采纳。如果嫌疑人有罪,他可能永远在寻找证据的路上,不放弃。
- 定理1.3 = 如果一个案子,既有一个只找有罪证据的侦探,又有一个只找无罪证据的律师,那么把他们俩放在一个房间里同时工作,这个案子最终必然会水落石出。
33. 证明 L 不可识别的方法
📜 [原文3]
证明 $L$ 不可识别的方法:
1. 证明 $L$ 是不可判定的且 $\bar{L}$ 是可识别的。
2. 证明 $\bar{L}$ 是可识别的但不可判定的。
3. 使用从另一个不可识别语言到 $L$ 的映射归约。
4. (非必修材料)使用精炼的赖斯定理
前两种方法源于定理 1.3(在第 14 讲中证明)。如果 $L$ 是不可判定的,那么 $L$ 是不可识别的或 $\bar{L}$ 是不可识别的。如果 $\bar{L}$ 是可识别的,那么 $L$ 必然是不可识别的。回想一下, $L$ 是可判定的当且仅当 $\bar{L}$ 是可判定的(第 13 讲),所以证明 $L$ 是不可判定的等同于证明 $\bar{L}$ 是不可判定的。方法 1 和 2 本质上是相同的。
示例 1. $\overline{A_{T M}}$ 是不可识别的,因为其补集 $A_{T M}$ 是可识别的(识别器在第 15 讲中给出)但不可判定的(在第 16 讲中通过对角线法证明)。
然而,使用补集和不可判定性并不总是最简单的方法,它也不适用于 $L$ 和 $\bar{L}$ 都不可识别的情况。证明 $L$ 不可识别的另一种方法是通过映射归约。我们将在下面简要概述关键思想,但您可以在第 19 讲和第 20 讲中找到更多详细信息。我们还简要介绍了精炼的赖斯定理,这是证明不可识别性的另一种方法(类似于我们使用赖斯定理证明不可判定性的方式)。精炼的赖斯定理不是课堂上的必修材料,但如果您愿意,可以使用它——您可以在第 18 讲讲义中找到更多详细信息。
📖 [逐步解释]
这部分列出了四种证明一个语言 $L$ 是不可识别的的策略,并解释了前两种策略的理论依据。
方法 1 和 2 的逻辑:
这两种方法的核心都依赖于定理1.3 ($L$ 是可判定的 $\Longleftrightarrow L$ 是可识别的且协同可识别的)。我们可以从这个定理的逆否命题来思考:
如果 $L$ 不是($L$ 可识别的 且 $L$ 协同可识别的),那么 $L$ 是不可判定的。
这意味着,如果一个语言 $L$ 是不可判定的,那么它必然不满足“既可识别又协同可识别”这个条件。所以,至少下面一项成立:
- $L$ 是不可识别的。
- $L$ 不是协同可识别的(即 $\bar{L}$ 是不可识别的)。
方法1:证明 $L$ 是不可判定的且 $\bar{L}$ 是可识别的
- 我们已经知道 $L$ 是不可判定的。
- 我们又证明了 $\bar{L}$ 是可识别的。
- 假设 $L$ 是可识别的(为了引出矛盾)。
- 那么,我们现在有了:
- $L$ 是可识别的(假设)。
- $\bar{L}$ 是可识别的,即 $L$ 是协同可识别的(已知)。
- 根据定理1.3,如果一个语言既可识别又协同可识别,那么它一定是可判定的。
- 这与我们已知的“$L$ 是不可判定的”相矛盾。
- 因此,最初的假设“$L$ 是可识别的”是错误的。
- 结论:$L$ 必须是不可识别的。
方法2:证明 $\bar{L}$ 是可识别的但不可判定的
- 这与方法1本质上是同一个论证,只是观察角度不同。
- 我们已知 $\bar{L}$ 是可识别的。
- 我们已知 $\bar{L}$ 是不可判定的 (因为 $L$ 的可判定性等价于 $\bar{L}$ 的可判定性,所以证明 $\bar{L}$ 不可判定等同于证明 $L$ 不可判定)。
- 假设 $L$ 是可识别的(为了引出矛盾)。
- 这意味着 $\bar{L}$ 是协同可识别的 (因为 $L$ 可识别)。
- 那么,我们现在有了:
- $\bar{L}$ 是可识别的(已知)。
- $\bar{L}$ 是协同可识别的(由假设推出)。
- 根据定理1.3,$\bar{L}$ 应该是可判定的。
- 这与我们已知的“$\bar{L}$ 是不可判定的”相矛盾。
- 结论:$L$ 必须是不可识别的。
示例分析:证明 $\overline{A_{T M}}$ 是不可识别的
这里,我们要证明的语言 $L$ 是 $\overline{A_{T M}}$。
- 证明 $\overline{A_{T M}}$ 是不可判定的:我们已经知道 $A_{TM}$ 是不可判定的。由于一个语言是可判定的当且仅当其补集是可判定的,所以 $\overline{A_{T M}}$ 也一定是不可判定的。
- 证明 $\overline{A_{T M}}$ 的补集是可识别的:$\overline{A_{T M}}$ 的补集是 $(\overline{\overline{A_{TM}}}) = A_{TM}$。我们已经知道 $A_{TM}$ 是可识别的(通用图灵机可以识别它)。
- 应用方法1:令 $L = \overline{A_{TM}}$。我们有:
- $L$ 是不可判定的。
- $\bar{L} = A_{TM}$ 是可识别的。
- 根据方法1的逻辑,我们可以得出结论:$L = \overline{A_{T M}}$ 是不可识别的。
方法3 和 4 的引入:
- 映射归约:这是本讲义的重点。它是一种更通用的证明技巧,特别是当一个语言和它的补集都不可识别时,前两种方法就失效了。例如,语言 $EQ_{TM}$(判断两个图灵机语言是否相等)和它的补集都是不可识别的。要证明这类问题,必须使用归约。
- 精炼的赖斯定理:这是赖斯定理的一个加强版,可以直接告诉我们一个关于图灵机语言的非平凡性质是不可识别的还是不可协同识别的,提供了另一条捷径。
💡 [数值示例]
让我们用一个虚构的例子来理解方法1的逻辑。
- 假设有一个语言 $L_{mystery}$。
- 步骤1:证明 $L_{mystery}$ 不可判定。我们通过一个复杂的对角线论证,成功证明了不存在任何总能停机并判断一个字符串是否在 $L_{mystery}$ 中的图灵机。
- 步骤2:证明 $\overline{L_{mystery}}$ 可识别。我们构造了一台图灵机 $M_{recognizer}$,它对于任何输入 $w \in \overline{L_{mystery}}$ 都能停机并接受。但对于 $w \in L_{mystery}$,它可能会循环。
- 步骤3:得出结论。现在我们来推理:如果 $L_{mystery}$ 是可识别的,那么就存在一台识别它的图灵机 $M'_{recognizer}$。这样,我们既有 $L_{mystery}$ 的识别器,又有 $\overline{L_{mystery}}$ 的识别器。根据定理1.3,这意味着 $L_{mystery}$ 应该是可判定的。但这与我们在步骤1中证明的结果相矛盾!因此,我们最初的假设($L_{mystery}$ 是可识别的)是错的。所以,$L_{mystery}$ 必须是不可识别的。
⚠️ [易错点]
- 方法1和2的前提:使用这两种方法,必须首先证明目标语言(或其补集)是不可判定的。这通常是证明中最难的部分。
- 何时失效:当一个语言 $L$ 和它的补集 $\bar{L}$ 都是不可识别的时候,方法1和2就无法使用。因为这时 $\bar{L}$ 不是可识别的,不满足方法1的前提。例如,后面会遇到的 $EQ_{TM}$。
- 选择正确的工具:对于一个新问题,需要判断哪种方法最适用。如果问题看起来像是关于图灵机所识别语言的性质,可以考虑(精炼的)赖斯定理。如果补集看起来比原语言更简单、更容易识别,可以考虑方法1/2。如果问题看起来和某个已知的不可识别问题(如 $\overline{A_{TM}}$)相似,那么映射归约可能是最好的选择。
📝 [总结]
本节介绍了证明语言不可识别性的四种主要武器:
- 补集法 (正向):证明 $L$ 不可判定 & $\bar{L}$ 可识别 $\implies L$ 不可识别。
- 补集法 (逆向):证明 $\bar{L}$ 可识别 & $\bar{L}$ 不可判定 $\implies L$ 不可识别 (与1等价)。
- 映射归约法:找到一个已知的不可识别语言 $U$,证明 $U \leq_m L \implies L$ 不可识别。这是最有力的工具之一。
- 精炼的赖斯定理:一个用于特定类型问题(语言性质)的快捷定理。
这些方法为我们提供了一个分析计算问题难度的“工具箱”。
🎯 [存在目的]
这部分内容起到了承上启下的作用。它基于前一节的定理,提炼出具体的、可操作的证明策略,并为接下来要详细介绍的映射归约法(方法3)和精炼的赖斯定理(方法4)铺平了道路,说明了为什么需要这些更高级的工具。
🧠 [直觉心智模型]
想象一下证明一个人是“不可捉摸的”(不可识别)。
- 方法1/2:你证明了两件事:1)“预测这个人的所有行为”是不可能的(不可判定)。2)但是,“确认他不在某个地方”是很容易做到的(补集可识别)。那么结论就是,要正面地、系统地“捕捉”他的行踪是做不到的。
- 方法3(映射归约):你已经知道另一个人(比如一个幽灵)是“绝对不可捉摸的”(已知的不可识别问题)。你展示了一个方法,说:“只要你能捉摸到这个人,我就能用同样的方法捉摸到那个幽灵。” 既然捉摸幽灵是不可能的,那么捉摸这个人也一定是不可能的。
- 方法4(精炼的赖斯定理):你发现这个人的行为属于一类非常普遍的、非黑即白的“性格特质”(语言性质),而且你知道一个完全没有性格的人(空语言图灵机)也具备这种特质。那么根据一个心理学“定理”,你可以直接断定这种性格的人是“不可捉摸的”。
44. 映射归约
📜 [原文4]
2 映射归约
定义 2.1. 可计算函数是可由图灵机计算的函数 $f: \Sigma^{*} \rightarrow \Sigma^{*}$。也就是说,存在一台图灵机,对于每个输入 $w$,它都会在纸带上只留下 $f(w)$ 而停机。
定义 2.2. 语言 $A$ 可映射归约到语言 $B$,记作 $A \leq_{m} B$,如果存在一个可计算函数 $f: \Sigma^{*} \rightarrow \Sigma^{*}$,使得对于每个 $w \in \Sigma^{*}$,
$$
w \in A \Longleftrightarrow f(w) \in B .
$$
定理 2.3. 如果 $A \leq_{m} B$,那么 $A \leq_{T} B$。(证明在第 19 讲)
定理 2.4. 假设对于两个语言 $A, B$,有 $A \leq_{m} B$。
1. 如果 $B$ 是可识别的,那么 $A$ 是可识别的。
2. 如果 $A$ 是不可识别的,那么 $B$ 是不可识别的。
这两个陈述实际上说的是同一件事(第二个是第一个的逆否命题)。第二个陈述为我们提供了一种证明 $L$ 是不可识别的策略。如果我们能找到一个不可识别的语言 $A$ 可映射归约到 $L$(即 $A \leq_{m} L$),那么 $L$ 是不可识别的。
定理 2.5. $A \leq_{m} B \Longleftrightarrow \bar{A} \leq_{m} \bar{B}$。
因此,给定一个我们已知是不可识别的语言 $A$,我们可以通过证明 $A \leq_{m} L$ 或证明 $\bar{A} \leq_{m} \bar{L}$ 来证明 $L$ 的不可识别性。这会很有帮助,因为有时处理语言的补集比处理语言本身更容易。例如,处理 $A_{T M}=\{\langle M, w\rangle \mid \mathrm{M}$ 是一台接受字符串 w 的图灵机$\}$ 可能比处理 $\overline{A_{T M}}$ 更容易,后者既包括编码为 $\langle M, w\rangle$ 的字符串也包括无效编码。
📖 [逐步解释]
这部分正式引入了映射归约 (Mapping Reduction),也称为多一归约 (Many-one Reduction)。
定义2.1 (可计算函数):
- 可计算函数 $f$ 是一个可以被算法实现的函数。在计算理论中,最强大的计算模型是图灵机,所以“可计算”被精确地定义为“可由一台图灵机计算”。
- 这台图灵机(我们称之为 $T_f$)必须满足一个关键条件:对于任何输入字符串 $w$, $T_f$ 必须总是在有限时间内停机,并且当它停机时,其纸带上留下的内容恰好是 $f(w)$。
- “总停机”这个要求至关重要。这意味着函数 $f$ 的计算过程本身必须是一个可判定的过程。我们不能定义一个依赖于解决停机问题或其他不可判定问题的函数 $f$。
定义2.2 (映射归约):
- 映射归约是建立在可计算函数之上的一种关系,用来比较两个语言(问题)$A$ 和 $B$ 的难度。
- 我们说 $A$ 可映射归约到 $B$,记为 $A \leq_m B$,如果存在一个可计算函数 $f$,这个函数 $f$ 就像一个“翻译器”,它能把任何关于语言 $A$ 的问题实例 $w$ 转换成一个关于语言 $B$ 的问题实例 $f(w)$。
- 这个“翻译”必须是忠实的,即保持答案不变:
- 如果原始问题答案为“是”($w \in A$),那么翻译后的问题答案也必须为“是”($f(w) \in B$)。
- 如果原始问题答案为“否”($w \notin A$),那么翻译后的问题答案也必须为“否”($f(w) \notin B$)。
- 这个双向箭头 $\Longleftrightarrow$ 保证了这种忠实性。
定理2.3 (与图灵归约的关系):
- $A \leq_T B$ (图灵归约) 意味着我们可以用一个能解决 $B$ 的“黑箱”(神谕)来构造一个解决 $A$ 的算法。
- 映射归约是图灵归约的一种更强、更受限的形式。在映射归约中,我们只允许调用一次“神谕”$B$,并且是在计算出 $f(w)$ 之后,直接询问 $f(w)$ 是否在 $B$ 中,然后原封不动地返回答案。
- 所以,如果 $A \leq_m B$,那么显然 $A \leq_T B$。
定理2.4 (映射归约与可识别性):
这是利用映射归约证明不可识别性的理论基础。
- 如果 $B$ 是可识别的,那么 $A$ 是可识别的。
- 证明思路:假设 $B$ 是可识别的,存在识别器 $M_B$。我们要为 $A$ 构造一个识别器 $M_A$。
- $M_A$ 在输入 $w$ 上工作如下:
- 正确性:
- 若 $w \in A$,则 $f(w) \in B$。$M_B$ 会接受 $f(w)$,因此 $M_A$ 会接受 $w$。
- 若 $w \notin A$,则 $f(w) \notin B$。$M_B$ 不会接受 $f(w)$,因此 $M_A$ 也不会接受 $w$。
- 这表明 $M_A$ 是 $A$ 的一个有效识别器,故 $A$ 是可识别的。
- 如果 $A$ 是不可识别的,那么 $B$ 是不可识别的。
- 这就是第1点的逆否命题。逻辑上是完全等价的。
- 这个形式是我们实际应用中最常用的:为了证明 $B$ 是不可识别的,我们从一个已知的不可识别语言 $A$ 出发,然后构造一个从 $A$到 $B$ 的映射归约。
定理2.5 (与补集的关系):
- $A \leq_{m} B \Longleftrightarrow \bar{A} \leq_{m} \bar{B}$。
- 这个定理的证明非常直接。如果 $f$ 是 $A \leq_m B$ 的归约函数,那么对于任何 $w$:
$w \in A \Longleftrightarrow f(w) \in B$
$w \notin A \Longleftrightarrow f(w) \notin B$
$w \in \bar{A} \Longleftrightarrow f(w) \in \bar{B}$
- 这意味着同一个可计算函数 $f$ 也可以作为 $\bar{A} \leq_m \bar{B}$ 的归约函数。
- 应用:在证明 $L$ 的不可识别性时,我们想证明 $U \leq_m L$ (其中 $U$ 是已知的不可识别语言)。根据这个定理,我们也可以选择证明 $\bar{U} \leq_m \bar{L}$。有时,处理补集(例如 $A_{TM}$)比处理原语言(例如 $\overline{A_{TM}}$)要方便得多,因为 $A_{TM}$ 的定义更直接(“接受”),而 $\overline{A_{TM}}$ 的定义包含“拒绝或循环”以及格式错误的情况,比较复杂。
💡 [数值示例]
示例1:一个简单的映射归约
- 令 $A$ 为所有以 '0' 结尾的二进制串的集合。
- 令 $B$ 为所有以 '1' 结尾的二进制串的集合。
- 我们想证明 $A \leq_m \bar{B}$。
- 可计算函数 $f$: 定义 $f(w) = w$。这是一个非常简单的可计算函数(图灵机只需复制输入到输出即可)。
- 验证归约:
- $w \in A \Longleftrightarrow w$ 以 '0' 结尾。
- $f(w) \in \bar{B} \Longleftrightarrow f(w) = w$ 不以 '1' 结尾。
- 对于二进制串,不以 '1' 结尾就意味着以 '0' 结尾(假设非空)。
- 所以,$w \in A \Longleftrightarrow f(w) \in \bar{B}$ 成立。
- 注意:这个例子太简单,A和B都是可判定的。它只是为了说明归约函数 $f$ 的构造。
示例2:应用定理2.4
- 我们已知 $A_{TM}$ 是不可判定的。我们还知道 $HALT_{TM} = \{ \langle M, w \rangle \mid M \text{ 在 } w \text{ 上停机} \}$。
- 我们想通过归约证明 $HALT_{TM}$ 也是不可判定的。我们证明 $A_{TM} \leq_m HALT_{TM}$。
- 可计算函数 $f(\langle M, w \rangle)$:
- 输入是一个图灵机 $M$ 和一个字符串 $w$ 的编码。
- 构造一个新的图灵机 $M'$ 的描述。$M'$ 的工作方式如下:
- 在其输入 $x$ 上($M'$ 的输入我们不关心),首先模拟 $M$ 在 $w$ 上的运行。
- 如果 $M$ 接受 $w$,那么 $M'$ 进入接受状态并停机。
- 如果 $M$ 拒绝 $w$,那么 $M'$ 进入一个无限循环。
- 如果 $M$ 在 $w$ 上循环,那么 $M'$ 的模拟也会无限循环。
- 函数 $f$ 的输出就是 $\langle M', w \rangle$ (这里的 $w$ 可以是任意固定字符串,比如空串 $\epsilon$,因为 $M'$ 的行为不依赖于其自身输入)。我们让输出为 $\langle M', \epsilon \rangle$。
- 验证归约:
- $\langle M, w \rangle \in A_{TM} \implies M$ 接受 $w \implies M'$ 会接受并停机 $\implies \langle M', \epsilon \rangle \in HALT_{TM}$。
- $\langle M, w \rangle \notin A_{TM} \implies M$ 不接受 $w$ (拒绝或循环) $\implies M'$ 会无限循环 $\implies \langle M', \epsilon \rangle \notin HALT_{TM}$。
- 结论:我们成功证明了 $A_{TM} \leq_m HALT_{TM}$。因为 $A_{TM}$ 是不可判定的,根据定理2.4的变体(用于不可判定性),$HALT_{TM}$ 也必须是不可判定的。
⚠️ [易错点]
- 归约方向:最常见的错误是搞反归约方向。如果要证明 $B$ 是难的,必须从一个已知的难问题 $A$ 归约到 $B$ (即 $A \leq_m B$),而不是反过来。$A \leq_m B$ 的直觉是 "$A$ is no harder than $B$".
- $f$ 的可计算性:构造函数 $f$ 时,必须确保它的计算过程是总停机的。不能在 $f$ 的定义中说“如果 $M$ 在 $w$ 上停机,则...;如果 $M$ 在 $w$ 上循环,则...”。因为我们无法判定 $M$ 是否会循环。正确的做法是,函数 $f$ 本身只进行“代码转换”或“语法操作”,它生成一个新的图灵机描述,而把困难的计算(可能循环的部分)留给被构造出的机器去执行。
- $w \in A \iff f(w) \in B$ 的双向证明:必须证明两个方向。只证明一个方向是不够的。
- 定理2.5的应用:当你想证明 $L$ 不可识别时,有时发现从已知的不可识别语言 $U$ 归约到 $L$ ($U \leq_m L$) 很困难。这时可以试试从 $\bar{U}$ 归约到 $\bar{L}$ ($\bar{U} \leq_m \bar{L}$)。如果 $\bar{U}$ 的定义比 $U$ 更清晰(如 $A_{TM}$ vs $\overline{A_{TM}}$),这通常会使证明更简单。
📝 [总结]
映射归约是证明问题难度下界的核心工具。它通过一个可计算的“翻译函数” $f$,将一个已知困难的问题 $A$ 转化为目标问题 $B$ 的一个实例。如果这个翻译是忠实的,那么 $B$ 的难度至少和 $A$ 一样。定理2.4和2.5为我们利用映射归约来证明语言的不可识别性提供了坚实的理论基础和灵活的策略。
🎯 [存在目的]
这部分是整个讲义的核心。它提供了证明不可识别性最强大的方法。与补集法不同,映射归约不仅能证明那些补集是可识别的语言是不可识别的,还能处理那些自身和补集都不可识别的、更复杂的问题。掌握映射归约的构造方法是可计算性理论学习中的一个关键里程碑。
🧠 [直觉心智模型]
- 可计算函数 $f$:一个完美的、从不卡壳的自动翻译机。你给它一句中文(问题A的实例),它总能给你一句对应的英文(问题B的实例)。
- 映射归约 $A \leq_m B$:这个翻译机非常棒,它能保证:当且仅当你给它的中文句子是“对的”(属于语言A),它翻译出的英文句子才是“对的”(属于语言B)。
- 定理2.4.2:假设你知道中文里有一类问题是“绝对无解的”(不可识别的语言A)。如果你用这个翻译机把这类无解的中文问题都翻译成了英文,那么得到的这些英文问题也必然是“无解的”(不可识别的语言B)。因为如果这些英文问题有解,你就可以通过先翻译再求解英文的方式,回头来解决本应无解的中文问题,这就产生了矛盾。
55. 证明 L 通过映射归约不可识别的步骤
📜 [原文5]
证明 $L$ 通过映射归约不可识别的步骤
1. 选择一个不可识别的语言 $U$,它可映射归约到 $L$。您要么想证明 $U \leq_{m} L$,要么想证明 $\bar{U} \leq_{m} \bar{L}$。
2. 确定要证明的映射归约 $A \leq_{m} B$ 和可计算函数 $f$。
3. 证明 $A \leq_{m} B$。
2a. 构建一个计算 $f$ 的图灵机。
2b. 确保您的函数 $f$ 确实是可计算的。
2b. 证明函数 $f$ 是正确的,这意味着 $w \in A \Longleftrightarrow f(w) \in B$。这包括证明两个方向:
(i) $w \in A \Longrightarrow f(w) \in B$
(ii) $w \notin A \Longrightarrow f(w) \notin B \quad$ [等价于 $f(w) \in B \Longrightarrow w \in A$]
3. 得出您的映射归约意味着 $L$ 是不可识别的结论(思考它如何通过课堂上学到的定理来证明)。
关于上述步骤的一些说明:
- 确保您的函数 $f$ 确实是可计算的!虽然您只需要给出 $f$ 的图灵机的高级描述,但您应该确信您可以在需要时提供更详细的实现。说“如果 M 永远不会在 w 上停机,则 $f(w)$ 为...”是图灵机无法实现的!
- 请注意,有多种方法可以证明 $w \in A \Longleftrightarrow f(w) \in B$。如果一个陈述是正确的,那么它的逆否命题也是正确的,所以
(i) 证明 $w \in A \Longrightarrow f(w) \in B$ 等价于证明 $f(w) \notin B \Longrightarrow w \notin A$。
(ii) 证明 $f(w) \in B \Longrightarrow w \in A$ 等价于证明 $w \notin A \Longrightarrow f(w) \notin B$。
通常直接证明 (i) 和通过逆否命题证明 (ii) 更容易。
📖 [逐步解释]
这部分提供了一个清晰、结构化的“食谱”,指导如何完成一个使用映射归约证明不可识别性的完整证明。
步骤 1:选择归约的起点
- 目标:证明语言 $L$ 是不可识别的。
- 策略:我们需要找到一个“垫脚石”,即一个我们已经知道是不可识别的语言 $U$。
- 最常用的已知不可识别语言:$\overline{A_{TM}}$ 是最经典的选择。它的定义是 $\{ \langle M, w \rangle \mid M \text{ 是一台图灵机且 } M \text{ 不接受 } w \}$。
- 选择归约形式:根据定理2.5,我们有两个选择:
- 证明 $U \leq_m L$。
- 证明 $\bar{U} \leq_m \bar{L}$。
- 决策依据:比较 $U$ 和 $\bar{U}$,以及 $L$ 和 $\bar{L}$ 的定义。选择定义更清晰、逻辑更直接的一对进行归约。通常,包含“接受”或“停机”这种肯定性条件的语言(如 $A_{TM}$)比包含“不接受”、“循环”等否定性或复杂条件的语言(如 $\overline{A_{TM}}$)更容易处理。因此,如果我们的 $U$ 是 $\overline{A_{TM}}$,我们常常会选择证明 $\bar{U} (=A_{TM}) \leq_m \bar{L}$。
步骤 2:定义归约函数 $f$
- 这一步是整个证明的核心和最具创造性的部分。
- 任务:明确你选择的源语言 $A$ (例如 $A_{TM}$) 和目标语言 $B$ (例如 $\bar{L}$),然后设计一个可计算函数 $f$。
- 函数 $f$ 的功能:$f$ 接受一个 $A$ 的实例 $w_A$ 作为输入,然后输出一个 $B$ 的实例 $w_B = f(w_A)$。这个 $f$ 通常是一个转换器,它读取输入的图灵机描述,并根据其逻辑构造一个新的图灵机描述。
- 关键要求 (可计算性):$f$ 的计算过程必须总能停机。这意味着 $f$ 不能去尝试解决 $w_A$ 是否在 $A$ 中这个问题。它只能对 $w_A$ 的“语法结构”进行操作,生成一个新的字符串 $w_B$。
步骤 3:证明归约的正确性
这是对步骤 2 中设计的函数 $f$ 的严格验证。
- 子步骤 3a (构造 $f$ 的图灵机):用高级语言描述一台计算 $f$ 的图灵机。例如:“在输入 $\langle M, w \rangle$ 上,构造一台新的图灵机 $M'$ 的描述,其中 $M'$ 的代码包含 $M$ 和 $w$。$M'$ 的行为是......最后,输出 $\langle M' \rangle$。”
- 子步骤 3b (确保可计算性):再次检查你的描述,确保其中没有任何需要解决不可判定问题的隐藏步骤。
- 子步骤 3c (证明等价性):这是逻辑证明部分,必须证明 $w \in A \Longleftrightarrow f(w) \in B$。这需要分两个方向进行:
- (i) 前向证明 ($w \in A \Longrightarrow f(w) \in B$):假设 $w$ 在 $A$ 中,然后根据 $f$ 的构造逻辑,推导出 $f(w)$ 必然在 $B$ 中。
- (ii) 后向证明 ($w \notin A \Longrightarrow f(w) \notin B$):假设 $w$ 不在 $A$ 中,然后根据 $f$ 的构造逻辑,推导出 $f(w)$ 必然不在 $B$ 中。
- 关于证明技巧的说明:有时,证明一个方向的逆否命题会更简单。
- 证明 "$w \in A \Longrightarrow f(w) \in B$" 等价于证明 "$f(w) \notin B \Longrightarrow w \notin A$"。
- 证明 "$w \notin A \Longrightarrow f(w) \notin B$" 等价于证明 "$f(w) \in B \Longrightarrow w \in A$"。
- 实践中,通常“假设 $w \in A$”和“假设 $w \notin A$”这两种直接的出发点更容易思考。
步骤 4:得出结论
- 连接逻辑链:在完成了 $A \leq_m B$ 的证明后,需要明确地写出最后的结论。
- 标准结论模板:
- 我们已经证明了 $A \leq_m B$。
- 我们知道源语言 $A$ 是不可识别的。
- 根据定理2.4,如果一个不可识别的语言可以映射归约到另一个语言,那么后者也必须是不可识别的。
- 因此,目标语言 $B$ 是不可识别的。
- 如果你证明的是 $\bar{U} \leq_m \bar{L}$,那么你得出的结论是 $\bar{L}$ 是不可识别的。如果一个语言的补集不可识别,我们称这个语言是不可协同识别的。
💡 [数值示例]
目标:证明 $L = \{ \langle M \rangle \mid M \text{ 接受字符串 'aba' } \}$ 是不可判定的(这里用不可判定性为例,步骤类似)。
1. 选择语言:
- 选择已知的不可判定语言 $A = A_{TM} = \{ \langle M, w \rangle \mid M \text{ 接受 } w \}$。
- 目标语言是 $B = L$。
- 我们来证明 $A_{TM} \leq_m L$。
2. 定义函数 $f$:
- 函数 $f$ 的输入是 $\langle M, w \rangle$。
- $f$ 需要输出一个图灵机的描述 $\langle M' \rangle$。
- 我们这样构造 $M'$:
- $M'$ on input $x$:
- 忽略输入 $x$。
- 在内部,模拟 $M$ 在 $w$ 上的运行。
- 如果 $M$ 接受 $w$,那么 $M'$ 就接受它自己的输入 $x$(但我们让它只对 'aba' 有反应)。为此,我们修改一下:如果 $M$ 接受 $w$,那么 $M'$ 就检查自己的输入 $x$ 是否为 'aba'。如果是,则接受;否则拒绝。
- 如果 $M$ 不接受 $w$(拒绝或循环),那么 $M'$ 就直接拒绝它自己的输入 $x$(或者进入循环)。
- 为了简化,我们可以让 $M'$ 的行为更直接:
- $M'$ on input $x$:
- 如果 $x \neq \text{'aba'}$,立刻拒绝。
- 如果 $x = \text{'aba'}$,则模拟 $M$ 在 $w$ 上的运行。如果 $M$ 接受 $w$,则接受;如果 $M$ 拒绝或循环,则也拒绝或循环。
- 函数 $f$ 的定义:$f(\langle M, w \rangle) = \langle M' \rangle$。
3. 证明正确性:
- 可计算性:函数 $f$ 只是一个代码转换器。它读取 $\langle M, w \rangle$,然后根据上述规则生成 $M'$ 的代码。这个过程总会停机。所以 $f$ 是可计算的。
- 等价性证明:
- (i) $\langle M, w \rangle \in A_{TM} \Longrightarrow \langle M' \rangle \in L$:
- 假设 $\langle M, w \rangle \in A_{TM}$,即 $M$ 接受 $w$。
- 那么 $M'$ 的行为是:当输入是 'aba' 时,它模拟 $M$ on $w$,因为 $M$ 接受 $w$,所以 $M'$ 会接受。对于所有其他输入,$M'$ 会拒绝。
- 所以,$L(M') = \{ \text{'aba'} \}$。哦,我们发现构造的 $M'$ 的语言不完全是 L。我们需要修改L的定义。让我们回到原问题,假设 $L = \{ \langle M \rangle \mid L(M) \neq \emptyset \}$
让我们用一个更标准的例子重来一次
目标:证明 $E_{TM} = \{ \langle M \rangle \mid L(M) = \emptyset \}$ 是不可判定的。
1. 选择语言:
- 选择 $A_{TM}$ 的补集 $\overline{A_{TM}}$ 是不可判定的。
- 我们的目标语言是 $E_{TM}$。
- 我们证明 $\overline{A_{TM}} \leq_m E_{TM}$。这看起来很复杂。
- 让我们试试另一个方向:证明 $A_{TM} \leq_m \overline{E_{TM}}$。这里 $\overline{E_{TM}} = \{ \langle M \rangle \mid L(M) \neq \emptyset \}$。这个看起来更顺。
2. 定义函数 $f$ (for $A_{TM} \leq_m \overline{E_{TM}}$):
- 输入: $\langle M, w \rangle$
- 输出: $\langle M' \rangle$
- $M'$ 的构造:
- $M'$ on input $x$ (any input):
- 忽略 $x$。
- 模拟 $M$ on $w$。
- 如果 $M$ 接受 $w$,则 $M'$ 接受 $x$。
- 如果 $M$ 拒绝或循环 $w$,则 $M'$ 拒绝或循环 $x$。
- $f(\langle M, w \rangle) = \langle M' \rangle$
3. 证明正确性:
- 可计算性: $f$ 只是将 $M$ 和 $w$ 的代码包装进一个新的图灵机模板中,显然是可计算的。
- 等价性:
- (i) $\langle M, w \rangle \in A_{TM} \Longrightarrow \langle M' \rangle \in \overline{E_{TM}}$:
- 假设 $M$ 接受 $w$。
- 根据 $M'$ 的构造,它会在任何输入 $x$ 上模拟 $M$ on $w$,并最终接受。
- 因此,$L(M') = \Sigma^*$ (所有字符串的集合)。
- 因为 $L(M') \neq \emptyset$,所以 $\langle M' \rangle \in \overline{E_{TM}}$。
- (ii) $\langle M, w \rangle \notin A_{TM} \Longrightarrow \langle M' \rangle \notin \overline{E_{TM}}$:
- 假设 $M$ 不接受 $w$ (拒绝或循环)。
- 根据 $M'$ 的构造,它在任何输入 $x$ 上模拟 $M$ on $w$,并且永远不会进入接受状态。
- 因此,$L(M') = \emptyset$。
- 那么 $\langle M' \rangle \in E_{TM}$,这意味着 $\langle M' \rangle \notin \overline{E_{TM}}$。
4. 结论:
- 我们证明了 $A_{TM} \leq_m \overline{E_{TM}}$。
- 因为 $A_{TM}$ 是不可判定的,所以 $\overline{E_{TM}}$ 也一定是不可判定的。
- 因为一个语言是不可判定的当且仅当其补集是不可判定的,所以 $E_{TM}$ 也是不可判定的。
⚠️ [易错点]
- 归约逻辑的对称性:构造 $M'$ 时,要确保其行为在 $w \in A$ 和 $w \notin A$ 两种情况下有本质的区别,并且这个区别正好对应于 $f(w)$ 是否属于 $B$。
- 高级描述的陷阱:虽然推荐使用高级描述,但要时刻警惕描述中是否隐藏了不可计算的步骤。例如,“检查 $M$ 是否在 $w$ 上停机”就是一个典型的错误。
- 最终结论的清晰性:证明了 $A \leq_m B$ 后,一定要明确指出是根据哪个定理、基于哪个已知困难语言,得出最终结论的。不要让证明过程在构造完 $f$ 后戛然而止。
📝 [总结]
这部分将映射归约的证明过程范式化,给出了一个按部就班的操作指南。核心在于:选择合适的已知难题,巧妙地构造一个只做代码转换的可计算函数 $f$,然后严格证明这个函数确实建立了两个问题之间的难度联系,最后根据相关定理得出结论。
🎯 [存在目的]
为了让学生能够将抽象的映射归约理论应用到具体的题目中,本节提供了一个清晰、可靠的框架。它强调了证明中每一个环节的要点和常见错误,旨在培养学生进行严谨、规范的可计算性证明的能力。
🧠 [直觉心智模型]
这就像一个写科学论文的指南:
- 选择研究问题: 确定你要挑战的难题 $L$,并找到一个已经被证明很难的经典问题 $U$ 作为你的理论基础。
- 设计实验 ($f$): 设计一个实验装置(函数 $f$),这个装置能把经典难题 $U$ 的任何一个版本,转化成你的新难题 $L$ 的一个版本。
- 验证实验设计 (证明):
- 3a. 描述你的装置是如何搭建的。
- 3b. 确保搭建过程是可行的(可计算的)。
- 3c. 证明你的装置确实有效:当且仅当输入的经典难题有“是”的答案时,输出的新难题才有“是”的答案。
- 得出结论: 在论文的最后写道:“本研究设计了一个实验,成功地将已知的NP-Hard问题A规约为我们的新问题B。因此,我们的问题B至少也是NP-Hard的。”(这里是类比,我们讨论的是不可识别性)。
66. 精炼的赖斯定理(额外材料,非必修)
📜 [原文6]
3 精炼的赖斯定理(额外材料,非必修)
回想一下,我们证明不可判定性的一种方法是使用赖斯定理,当语言是可识别语言的非平凡性质时(基本上,任何形如 $\{\langle M\rangle \mid M$ 是图灵机且 $L(M)$ 满足...$\}$ 的语言)都可以应用。请参阅讲义和讲义 9 以获取回顾和示例。
我们知道,如果一个语言 $L$ 是不可判定的,那么它要么不可识别,要么不可协同识别(或两者兼而有之)——这源于上面讨论的定理 1.3。精炼的赖斯定理适用于与赖斯定理完全相同的语言集,但进一步让我们得出 $L$ 是不可识别的或不可协同识别的结论,这取决于识别空语言的图灵机是在 $L$ 中还是在 $\bar{L}$ 中。
定理 3.1. 精炼的赖斯定理:设 $P$ 是可识别语言的非平凡性质。设 $M_{\emptyset}$ 是一台图灵机,使得 $L\left(M_{\emptyset}\right)=\emptyset$。那么:
- 如果 $\left\langle M_{\emptyset}\right\rangle \in P$,那么 $P$ 是不可识别的
- 如果 $\left\langle M_{\emptyset}\right\rangle \notin P$,那么 $P$ 是不可协同识别的(即,$\bar{P}$ 是不可判定的)。
📖 [逐步解释]
这部分介绍了赖斯定理的加强版——精炼的赖斯定理(Refined Rice's Theorem),它不仅能判断一个语言是否不可判定,还能进一步指明它是不可识别还是不可协同识别。
回顾赖斯定理:
- 赖斯定理说:任何关于图灵机所识别的语言的非平凡性质都是不可判定的。
- 语言的性质:一个语言 $P$ 是“语言的性质”,意味着它只关心图灵机的语言 $L(M)$,而不关心图灵机 $M$ 的具体实现(状态数、纸带字母等)。如果两台图灵机 $M_1$ 和 $M_2$ 识别相同的语言 ($L(M_1)=L(M_2)$),那么它们要么都属于 $P$,要么都不属于 $P$。
- 非平凡:$P$ 是非平凡的,意味着至少存在一台图灵机的编码在 $P$ 中,也至少存在一台图灵机的编码不在 $P$ 中。它不是空集也不是全集。
精炼的赖斯定理的动机:
- 赖斯定理告诉我们很多问题是不可判定的,比如 $E_{TM}$ (语言为空), $REG_{TM}$ (语言是正则的)。
- 根据定理1.3,一个不可判定的语言,要么是不可识别,要么是不可协同识别(或者两者都是)。
- 赖斯定理本身没有告诉我们是哪种情况。精炼的赖斯定理填补了这个空白。
定理3.1 (精炼的赖斯定理):
这个定理的适用条件和赖斯定理完全一样:语言 $P$ 必须是一个关于可识别语言的非平凡性质。
它增加了一个简单的判断标准,这个标准基于空语言。
- 令 $M_{\emptyset}$ 为一台识别空语言的图灵机,即 $L(M_{\emptyset}) = \emptyset$。例如,一个一启动就进入拒绝状态的图灵机。
- 定理的两个分支:
- 如果 $\langle M_{\emptyset} \rangle \in P$ (空语言的性质为真):
- 这意味着性质 $P$ 包含空语言。
- 结论:语言 $P$ 是不可识别的。
- 如果 $\langle M_{\emptyset} \rangle \notin P$ (空语言的性质为假):
- 这意味着性质 $P$ 不包含空语言。
- 结论:语言 $P$ 是不可协同识别的。
- 不可协同识别意味着它的补集 $\bar{P}$ 是不可识别的。
理解其内在逻辑 (非严格):
这个定理的证明通常是通过从 $A_{TM}$ 或 $\overline{A_{TM}}$ 进行归约。
- 当 $\langle M_{\emptyset} \rangle \in P$ 时,证明 $\overline{A_{TM}} \leq_m P$ 是可行的。由于 $\overline{A_{TM}}$ 是不可识别的,所以 $P$ 也是不可识别的。
- 当 $\langle M_{\emptyset} \rangle \notin P$ 时,证明 $A_{TM} \leq_m P$ 是可行的。因为 $A_{TM}$ 是可识别的,这只能说明 $P$ 也是可识别的(这似乎与结论不符)。更准确地说,是证明 $A_{TM} \leq_m P$,因为 $A_{TM}$ 不可判定,所以 $P$ 不可判定。进一步的分析(这里省略)会发现,这种情况下 $P$ 是可识别的,因此它的补集 $\bar{P}$ 是不可识别的,即 $P$ 是不可协同识别的。
💡 [数值示例]
示例1:$E_{TM} = \{\langle M\rangle \mid L(M)=\emptyset\}$
- 是语言性质吗? 是。判断一个 $\langle M \rangle$ 是否在 $E_{TM}$ 中,只取决于 $L(M)$ 是否为空,与 $M$ 的具体实现无关。
- 非平凡吗? 是。存在 $M$ 使得 $L(M)=\emptyset$(例如立即拒绝的图灵机),也存在 $M'$ 使得 $L(M') \neq \emptyset$(例如接受所有字符串的图灵机)。
- 应用精炼的赖斯定理:
- 我们需要检查 $\langle M_{\emptyset} \rangle$ 是否在 $E_{TM}$ 中。
- $M_{\emptyset}$ 的定义就是 $L(M_{\emptyset}) = \emptyset$。
- 这完全符合 $E_{TM}$ 的定义。所以,$\langle M_{\emptyset} \rangle \in E_{TM}$。
- 结论:根据定理的第一条, $E_{TM}$ 是不可识别的。
示例2:$ALL_{TM} = \{\langle M\rangle \mid L(M)=\Sigma^*\}$
- 是语言性质吗? 是。只取决于 $L(M)$ 是否是全集。
- 非平凡吗? 是。存在 $M$ 使得 $L(M)=\Sigma^*$,也存在 $M'$ 使得 $L(M') \neq \Sigma^*$。
- 应用精炼的赖斯定理:
- 我们需要检查 $\langle M_{\emptyset} \rangle$ 是否在 $ALL_{TM}$ 中。
- $L(M_{\emptyset}) = \emptyset$。而 $ALL_{TM}$ 要求语言是 $\Sigma^*$。
- 显然 $\emptyset \neq \Sigma^*$。所以,$\langle M_{\emptyset} \rangle \notin ALL_{TM}$。
- 结论:根据定理的第二条, $ALL_{TM}$ 是不可协同识别的。这意味着 $\overline{ALL_{TM}}$ 是不可识别的。
⚠️ [易错点]
- 定理适用范围:精炼的赖斯定理和赖斯定理一样,只能用于判断关于图灵机所识别的语言的性质。它不能用于判断关于图灵机本身行为的性质,例如“图灵机 $M$ 有少于100个状态”或“图灵机 $M$ 在输入 $w$ 上会向左移动磁头”。
- 非平凡性的检查:在使用定理之前,必须先验证该性质是非平凡的。如果一个性质是平凡的(要么所有图灵机都满足,要么都不满足),那么对应的语言是 $\Sigma^*$ 或 $\emptyset$,这两个都是可判定的。
- 结论的区分:要仔细看清定理的两个分支。是“不可识别”还是“不可协同识别”,完全取决于空语言是否满足该性质。不要记混。
📝 [总结]
精炼的赖斯定理是一个强大的“快捷方式”。对于满足其前提条件(关于可识别语言的非平凡性质)的语言 $P$,我们无需进行复杂的归约构造,只需简单地检查一个识别空集的图灵机是否属于 $P$,就可以立即判断出 $P$ 的不可识别性或不可协同识别性。
🎯 [存在目的]
本节内容的存在是为了提供一个比映射归约更专门化、但在特定场景下更高效的证明工具。它展示了理论深刻性带来的简洁性,让学生在面对某些特定类型的问题时,能够快速得出结论,而不必每次都从头开始构造归约。
🧠 [直觉心智模型]
想象一个“性格分类器”,它可以根据人们的行为($L(M)$)给他们贴上各种标签(性质 $P$)。
- 赖斯定理说:任何一个不是“所有人都有”也不是“所有人都沒有”的性格标签,都是“无法通过简单问卷测出的”(不可判定)。
- 精炼的赖斯定理更进一步:
- 如果一个“完全自闭、不与任何人交流的人”($M_{\emptyset}$)符合这个性格标签(例如,标签是“内向”),那么这个标签本身就是“神秘的、无法被外界系统性观察到的”(不可识别)。
- 如果一个“完全自闭的人”不符合这个性格标签(例如,标签是“外向”),那么这个标签就是“无法系统性地排除的”(不可协同识别)。你可能能确认某人是外向的,但你永远无法对所有人完成排查,从而确认谁不是外向的。
77. 通过精炼的赖斯定理证明 L 不可识别的步骤
📜 [原文7]
通过精炼的赖斯定理证明 $L$ 不可识别的步骤
1. 证明 $L$ 是语言性质:
1a. 检查 $L$ 是否由形如 $\langle M\rangle$ 的字符串组成,其中 $M$ 是一台图灵机。
1b. 检查对于任意两台图灵机 $M_{1}, M_{2}$,如果 $L\left(M_{1}\right)=L\left(M_{2}\right)$,则 $M_{1} \in L \Longleftrightarrow M_{2} \in L$。
2. 证明 $L$ 是非平凡的:
2a. 证明存在一台图灵机 $M$ 使得 $\langle M\rangle \in L$。
2b. 证明存在一台图灵机 $M^{\prime}$ 使得 $\left\langle M^{\prime}\right\rangle \notin L$。
3. 证明 $\left\langle M_{\emptyset}\right\rangle \in L$。
4. 得出 $L$ 是不可识别的结论。
注意:如果在步骤 3 中您改为证明 $\left\langle M_{\emptyset}\right\rangle \notin L$,则可以得出 $L$ 是不可协同识别的结论。
例如,精炼的赖斯定理可用于证明 $E_{T M}, R E G_{T M}$ 和 $\overline{A L L_{T M}}$ 都是不可识别的(因为它们都可以被证明是可识别语言的非平凡性质,并且 $M_{\emptyset}$ 满足这些性质)。
📖 [逐步解释]
这部分将上一节介绍的精炼的赖斯定理具体化为一个四步操作流程,用于证明一个语言 $L$ 是不可识别的。
步骤 1:证明 $L$ 是一个语言性质
这是应用定理的第一个前提。
- 1a. 检查输入格式:首先要确认 $L$ 的成员都是图灵机的编码,即形如 $\langle M \rangle$ 的字符串。如果 $L$ 包含其他类型的字符串(比如 $\langle M, w \rangle$),那么赖斯定理不适用。
- 1b. 检查语义等价性:这是核心。必须证明,决定一个图灵机 $M$ 是否在 $L$ 中的唯一标准是它所识别的语言 $L(M)$。证明方法是:任取两个图灵机 $M_1$ 和 $M_2$,假设它们识别同一个语言 ($L(M_1) = L(M_2)$)。在此假设下,你需要证明 $\langle M_1 \rangle \in L$ 和 $\langle M_2 \rangle \in L$ 是等价的。
步骤 2:证明 $L$ 是非平凡的
这是应用定理的第二个前提。
- 2a. 证明性质存在:你需要构造或指出一台图灵机 $M_{yes}$,它的编码 $\langle M_{yes} \rangle$ 属于 $L$。这证明了 $L$ 不是空集。
- 2b. 证明性质并非普遍:你需要构造或指出另一台图灵机 $M_{no}$,它的编码 $\langle M_{no} \rangle$ 不属于 $L$。这证明了 $L$ 不是所有图灵机编码的集合。
步骤 3:检查空语言的归属
这是精炼的赖斯定理区别于普通赖斯定理的关键步骤。
- 定义一台图灵机 $M_{\emptyset}$,它不接受任何输入,因此 $L(M_{\emptyset}) = \emptyset$。
- 判断 $\langle M_{\emptyset} \rangle$ 是否属于 $L$。
- 如果你的目标是证明 $L$ 不可识别,你必须证明 $\langle M_{\emptyset} \rangle \in L$。
步骤 4:得出结论
- 如果步骤1、2、3全部满足,你就可以直接引用精炼的赖斯定理得出结论。
- 标准结论模板:
- 根据步骤1,我们证明了 $L$ 是一个关于图灵机所识别语言的性质。
- 根据步骤2,我们证明了该性质是非平凡的。
- 根据步骤3,我们证明了识别空语言的图灵机满足此性质。
- 因此,根据精炼的赖斯定理,$L$ 是不可识别的。
关于“不可协同识别”的说明:
- 如果在步骤3中,你发现 $\langle M_{\emptyset} \rangle \notin L$,那么你无法证明 $L$ 是不可识别的。
- 此时,你的结论应该改为:根据精炼的赖斯定理,$L$ 是不可协同识别的。
- 这意味着 $\bar{L}$ 是不可识别的。如果题目要求证明 $\bar{L}$ 不可识别,这也是一个有效的证明路径。
示例分析:
- $E_{TM} = \{\langle M \rangle \mid L(M)=\emptyset\}$
- 性质:是。
- 非平凡:是。
- 空语言:$L(M_{\emptyset})=\emptyset$,满足 $E_{TM}$ 的条件,所以 $\langle M_{\emptyset} \rangle \in E_{TM}$。
- 结论:$E_{TM}$ 是不可识别的。
- $REG_{TM} = \{\langle M \rangle \mid L(M) \text{ 是正则的}\}$
- 性质:是。
- 非平凡:是。正则语言存在(如 $\emptyset$),非正则语言也存在(如 $\{0^n1^n\}$)。
- 空语言:$L(M_{\emptyset})=\emptyset$。空语言是一个正则语言(它可以被一个没有接受状态的DFA识别)。所以 $\langle M_{\emptyset} \rangle \in REG_{TM}$。
- 结论:$REG_{TM}$ 是不可识别的。
- $\overline{ALL_{TM}} = \{\langle M \rangle \mid L(M) \neq \Sigma^*\}$
- 性质:是。
- 非平凡:是。
- 空语言:$L(M_{\emptyset})=\emptyset$。显然 $\emptyset \neq \Sigma^*$。所以 $L(M_{\emptyset})$ 满足性质 “不等于 $\Sigma^*$”。因此 $\langle M_{\emptyset} \rangle \in \overline{ALL_{TM}}$。
- 结论:$\overline{ALL_{TM}}$ 是不可识别的。
💡 [数值示例]
目标:证明 $L_{contains\_101} = \{ \langle M \rangle \mid \text{字符串 '101' } \in L(M) \}$ 是不可协同识别的。
步骤 1:证明 $L_{contains\_101}$ 是语言性质
- 1a. 它的成员是 $\langle M \rangle$ 形式。
- 1b. 如果 $L(M_1) = L(M_2)$,那么 '101' 要么同时在两个语言里,要么同时不在。所以 $\langle M_1 \rangle \in L_{contains\_101} \Longleftrightarrow \langle M_2 \rangle \in L_{contains\_101}$。得证。
步骤 2:证明 $L_{contains\_101}$ 是非平凡的
- 2a. 构造一台只接受 '101' 的图灵机 $M_{yes}$。则 $\langle M_{yes} \rangle \in L_{contains\_101}$。
- 2b. 构造一台拒绝所有输入的图灵机 $M_{no}$。则 $L(M_{no})=\emptyset$,不包含 '101'。所以 $\langle M_{no} \rangle \notin L_{contains\_101}$。得证。
步骤 3:检查空语言的归属
- 令 $M_{\emptyset}$ 是一台 $L(M_{\emptyset})=\emptyset$ 的图灵机。
- 字符串 '101' 显然不在空语言 $\emptyset$ 中。
- 因此,$\langle M_{\emptyset} \rangle \notin L_{contains\_101}$。
步骤 4:得出结论
- 根据精炼的赖斯定理的第二条,由于该非平凡性质不包含空语言,所以 $L_{contains\_101}$ 是不可协同识别的。
⚠️ [易错点]
- 忘记前提检查:最容易犯的错误是直接跳到步骤3,而没有先严格地验证步骤1和步骤2。一个完整的证明必须包含对“语言性质”和“非平凡性”的论证。
- 对“性质”的误判:再次强调,形如 $L=\{\langle M \rangle \mid M \text{ 在空串上运行不超过10步}\}$ 的语言,不是语言性质,因为它依赖于 $M$ 的运行效率,而不是它最终接受的语言集合。
- 结论与目标不符:如果题目要求证明 $L$ 是不可识别的,但在步骤3中你却发现 $\langle M_{\emptyset} \rangle \notin L$,这意味着你选错了工具或策略。此时你应该考虑证明 $\bar{L}$ 是不可识别的(如果 $\langle M_{\emptyset} \rangle \in \bar{L}$),或者改用映射归约。
📝 [总结]
本节将精炼的赖斯定理转化为一个可以直接套用的证明模板。通过系统地检查语言的格式、语义无关性、非平凡性以及与空语言的关系,我们可以快速、严谨地判断一个语言的不可识别性或不可协同识别性。
🎯 [存在目的]
本节旨在进一步降低使用赖斯定理系列工具的门槛,将其从一个抽象的定理变成一个具体的、分步的、可执行的算法。这有助于学生在考试或研究中,面对符合条件的特定问题时,能够高效、准确地完成证明。
🧠 [直觉心智模型]
这就像一个“快速诊断手册”,用来判断某种“人群标签”(语言 $L$)是否“神秘莫测”(不可识别)。
- 问诊第一步(定性):这个标签是只看行为结果(语言),还是看长相身高(实现细节)?必须是前者。
- 问诊第二步(普遍性):这个标签是人人都有,还是人人都没?必须都不是。
- 问诊第三步(关键指标):一个完全自闭不说话的人($M_{\emptyset}$),算不算有这个标签?
- 如果算,那么手册告诉你:这个标签“不可识别”。
- 如果不算,那么手册告诉你:这个标签“不可协同识别”。
- 开具诊断证明(结论):根据手册第X条规定,诊断结果为……
88. 不可识别语言示例
📜 [原文8]
4 不可识别语言示例
课堂上已证明
- $\overline{A_{T M}}=$ $\{\langle M, w\rangle \mid M$ 是一台图灵机且 $M$ 接受 $w\}$ 的补集(第 19 讲)
- $E_{T M}=\{\langle M\rangle \mid M$ 是一台图灵机且 $L(M)=\emptyset\}$(第 19 讲)
- $A L L_{T M}=\left\{\langle M\rangle \mid M\right.$ 是一台图灵机且 $\left.L(M)=\Sigma^{*}\right\}$(第 20 讲)
- $\overline{A L L_{T M}}$(第 19 讲)
未证明
- $\overline{H A L T_{T M}}=$ $\{\langle M, w\rangle \mid M$ 是一台图灵机且 $M$ 在 $w$ 上停机$\}$ 的补集
- $E Q_{T M}=\left\{\left\langle M_{1}, M_{2}\right\rangle \mid M_{1}\right.$ 和 $M_{2}$ 是图灵机且 $\left.L\left(M_{1}\right)=L\left(M_{2}\right)\right\}$
- $R E G_{T M}=\{\langle M\rangle \mid M$ 是一台图灵机且 $L(M)$ 是正则的$\}$
📖 [逐步解释]
这部分列出了一些在可计算性理论中非常重要的、作为基准的不可识别语言。这些语言经常被用作“已知困难问题”的起点,通过映射归约来证明其他新问题的难度。
已证明的不可识别语言:
- $\overline{A_{TM}}$ (非接受性问题):
- 定义: $\{\langle M, w\rangle \mid M \text{ 不接受 } w\}$。
- 不可识别性原因: 它的补集 $A_{TM}$ 是可识别的(通过通用图灵机模拟),但 $A_{TM}$ 本身是不可判定的。根据方法1,$\overline{A_{TM}}$ 是不可识别的。这是所有不可识别问题的“鼻祖”,许多归约都从它开始。
- $E_{TM}$ (空语言问题):
- 定义: $\{\langle M\rangle \mid L(M)=\emptyset\}$。
- 不可识别性原因: 可以通过从 $\overline{A_{TM}}$ 进行映射归约来证明。也可以使用精炼的赖斯定理:这是一个关于语言的非平凡性质,且识别空语言的图灵机 $M_{\emptyset}$ 满足此性质,因此 $E_{TM}$ 是不可识别的。
- $ALL_{TM}$ (全语言问题):
- 定义: $\{\langle M\rangle \mid L(M)=\Sigma^*\}$。
- 这个语言本身是不可协同识别的,而不是不可识别的。这意味着它本身是可识别的(这个结论不正确,原文可能存在笔误或者语境省略。实际上 $ALL_{TM}$ 和它的补集都是不可识别的。更准确地说,根据精炼的赖斯定理,因为它不包含空语言,所以它是不可协同识别的)。
- 证明通常通过从 $A_{TM}$ 映射归约到 $ALL_{TM}$。
- 讲义原文此处可能有误或不精确。标准的结论是 $ALL_{TM}$ 是不可协同识别的。
- $\overline{ALL_{TM}}$ (非全语言问题):
- 定义: $\{\langle M\rangle \mid L(M) \neq \Sigma^*\}$。
- 不可识别性原因: 这是 $ALL_{TM}$ 的补集。由于 $ALL_{TM}$ 是不可协同识别的,根据定义,它的补集 $\overline{ALL_{TM}}$ 就是不可识别的。也可以用精炼的赖斯定理证明:这是一个非平凡的语言性质,且 $M_{\emptyset}$ 满足此性质 ($L(M_{\emptyset})=\emptyset \neq \Sigma^*$),因此 $\overline{ALL_{TM}}$ 是不可识别的。
未证明但重要的不可识别/不可协同识别语言:
- $\overline{HALT_{TM}}$ (不停机问题):
- 定义: $\{\langle M, w\rangle \mid M \text{ 在 } w \text{ 上无限循环}\}$。
- 不可识别性: 类似于 $\overline{A_{TM}}$ 的情况。它的补集 $HALT_{TM}$ (停机问题) 是可识别的(模拟即可)但不可判定的。因此,$\overline{HALT_{TM}}$ 是不可识别的。
- $EQ_{TM}$ (等价性问题):
- 定义: $\{\langle M_1, M_2\rangle \mid L(M_1) = L(M_2)\}$。
- 复杂性: 这个问题“非常难”。它不仅不可判定,而且它和它的补集 $\overline{EQ_{TM}}$ 都是不可识别的。
- 证明思路: 通常通过从 $E_{TM}$ 映射归约到 $EQ_{TM}$ 来证明其不可协同识别性 ($E_{TM} \leq_m EQ_{TM}$)。然后通过从 $\overline{E_{TM}}$ 映射归约到 $EQ_{TM}$ 来证明其不可识别性(这里需要更复杂的归约)。
- $REG_{TM}$ (正则性问题):
- 定义: $\{\langle M\rangle \mid L(M) \text{ 是一个正则语言}\}$。
- 不可识别性: 可以使用精炼的赖斯定理。这是一个非平凡的语言性质,并且 $M_{\emptyset}$ (其语言为空集 $\emptyset$) 的语言是正则的,所以 $\langle M_{\emptyset} \rangle \in REG_{TM}$。因此,$REG_{TM}$ 是不可识别的。
💡 [数值示例]
- $\overline{A_{TM}}$: 比如有一个图灵机 $M_{loop}$,它在任何输入上都进入一个向右移动的无限循环。那么 $\langle M_{loop}, \text{'abc'} \rangle$ 这个实例就属于 $\overline{A_{TM}}$。但我们没有一个通用的程序,能检查所有这类“不接受”的实例。
- $E_{TM}$: 如果一个图灵机 $M_{reject}$ 的规则是:无论读到什么,都立即进入拒绝状态。那么 $L(M_{reject})=\emptyset$,所以 $\langle M_{reject} \rangle \in E_{TM}$。
- $EQ_{TM}$: 假设 $M_1$ 是一个接受所有偶数长度字符串的图灵机,$M_2$ 是另一个用完全不同的状态和逻辑实现的、但也接受所有偶数长度字符串的图灵机。那么 $\langle M_1, M_2 \rangle \in EQ_{TM}$。但如果 $M_3$ 接受所有奇数长度的字符串,那么 $\langle M_1, M_3 \rangle \notin EQ_{TM}$。判断这个问题在一般情况下是无法做到的。
⚠️ [易错点]
- 区分不可识别和不可协同识别:这是最关键的。$E_{TM}$ 是不可识别的,但 $A_{TM}$ 是可识别的。$ALL_{TM}$ 是不可协同识别的,但它的补集 $\overline{ALL_{TM}}$ 是不可识别的。需要牢记这些经典问题的分类。
- $EQ_{TM}$ 的特殊性:$EQ_{TM}$ 是一个重要例子,说明一个语言可以既不是可识别的,也不是协同可识别的。这意味着验证两个图灵机的等价性 和 验证它们的不等价性,都没有通用的算法能给出肯定的答复。
- 讲义中的潜在不精确之处:如前述,关于 $ALL_{TM}$ 的分类,标准的结论是它是不可协同识别的。如果讲义中直接说它是“不可识别的”,需要根据上下文判断是否为笔误或简化说法。
📝 [总结]
本节提供了一个“困难问题”的清单。这些语言是可计算性理论中的“路标”,它们的确切分类(可识别、不可识别、不可协同识别)是后续进行归约证明的基础。在证明一个新问题 $L$ 的难度时,通常会从这个清单中挑选一个最相似的问题作为归约的起点。
🎯 [存在目的]
本节的目的是为了武装学生,让他们在进行归约证明时“弹药库”里有充足的“弹药”。通过熟悉这些经典不可识别语言及其证明思路,学生可以培养对问题难度的直觉,并能快速选择合适的归约策略。
🧠 [直觉心智模型]
这个列表就像是数学中的“基本无理数”列表(如 $\sqrt{2}, \pi, e$)。
- $\overline{A_{TM}}$ 就像是 $\sqrt{2}$,它是第一个被证明的“無理”,基础且重要。
- $E_{TM}, REG_{TM}, \overline{ALL_{TM}}$ 等就像是其他通过 $\sqrt{2}$ 或类似方法证明出来的无理数,它们各有特点。
- $EQ_{TM}$ 就像是一个更复杂的超越数,它的性质(既不可识别也不可协同识别)揭示了更深层次的“无理性”。
当你要证明一个新数是无理数时,你常常会尝试证明它能表示成某个已知无理数和有理数的组合。这正是在可计算性中通过归约所做的事情。
99. 练习题
📜 [原文9]
5 练习题
1. 证明 $L=\{\langle M, D\rangle \mid M$ 是一台图灵机,$D$ 是一台 DFA,且 $L(M)=L(D)\}$ 是不可协同识别的。也就是说,证明 $\bar{L}$ 是不可识别的。
2. 证明 $L=\{\langle M\rangle \mid M$ 是一台不接受长度 $\geq 50$ 的字符串的图灵机$\}$ 是不可识别的。
3. 证明如果 $L_{1}$ 和 $L_{2}$ 是可识别的,那么 $L_{3}=L_{1} \cdot L_{2}$ 也是可识别的。也就是说,证明可识别语言在连接运算下是封闭的。
4. 设 $A$ 是一种语言。证明 $A \leq_{m} A$。
5. 必然有 $A \leq_{m} \bar{A}$ 吗?
📖 [逐步解释]
这部分提供了一系列练习题,旨在巩固本讲义介绍的概念和证明技巧。
练习题 1: 证明 $L=\{\langle M, D\rangle \mid L(M)=L(D)\}$ 是不可协同识别的
- 目标: 证明 $\bar{L}$ 是不可识别的。
- 分析: $\bar{L} = \{\langle M, D\rangle \mid L(M) \neq L(D)\}$。这个问题看起来和 $EQ_{TM}$(等价性问题)的补集 $\overline{EQ_{TM}}$ 有关。一个更简单的方法可能是从一个已知的不可识别语言归约到 $\bar{L}$。
- 思路: 我们尝试从 $E_{TM}$ 的补集 $\overline{E_{TM}} = \{ \langle M \rangle \mid L(M) \neq \emptyset \}$ 进行归约。我们知道 $\overline{E_{TM}}$ 是不可识别的(这是错误的,$\overline{E_{TM}}$ 是可识别的但不可判定的;$E_{TM}$ 才是不可识别的)。
- 修正思路: 让我们从一个已知的不可识别语言归约到 $\bar{L}$。一个好的选择是 $E_{TM} = \{ \langle M \rangle \mid L(M) = \emptyset \}$。我们来证明 $E_{TM} \leq_m \bar{L}$。
- 函数 $f$ 的构造:
- 输入: $\langle M \rangle$ (一个图灵机的编码)
- 输出: $\langle M', D \rangle$ (一个图灵机和一个DFA的编码)
- 我们需要巧妙地选择 $M'$ 和 $D$。让 $D$ 固定为一个识别空语言的DFA,例如 $D_{empty}$,它没有任何接受状态。
- 令 $M' = M$。
- 所以 $f(\langle M \rangle) = \langle M, D_{empty} \rangle$。
- 证明归约正确性:
- $\langle M \rangle \in E_{TM} \implies L(M) = \emptyset$。因为 $L(D_{empty}) = \emptyset$,所以 $L(M) = L(D_{empty})$。这意味着 $\langle M, D_{empty} \rangle \notin \bar{L}$。
- 这个方向反了! 我们需要 $w \in A \implies f(w) \in B$。
- 再次修正思路: 证明 $E_{TM} \leq_m \bar{L}$ 失败了。让我们尝试证明 $A_{TM} \leq_m \bar{L}$ 怎么样?这个看起来也不直接。
- 最终正确思路 (从 $\overline{E_{TM}}$ 归约): 我们知道 $\overline{E_{TM}}$ 是不可协同识别的。让我们证明 $\overline{E_{TM}} \le_m L$。
- 再次审题: 题目是证明 $L$ 是不可协同识别的,即证明 $\bar{L}$ 是不可识别的。让我们从 $ALL_{TM}$ 归约,我们知道 $ALL_{TM}$ 是不可协同识别的,但它的补集 $\overline{ALL_{TM}}$ 是不可识别的。我们证明 $\overline{ALL_{TM}} \leq_m \bar{L}$。
- 函数 $f$ 的构造:
- 输入: $\langle M \rangle$
- 输出: $\langle M', D \rangle$
- 选择一个固定的 $D$。让 $D_{all}$ 是一个识别所有字符串 $\Sigma^*$ 的DFA (例如,一个单状态的、既是起始态又是接受态的DFA)。
- 令 $M' = M$。
- 所以 $f(\langle M \rangle) = \langle M, D_{all} \rangle$。
- 证明归约正确性:
- $\langle M \rangle \in \overline{ALL_{TM}} \implies L(M) \neq \Sigma^*$。因为 $L(D_{all}) = \Sigma^*$,所以 $L(M) \neq L(D_{all})$。这意味着 $f(\langle M \rangle) = \langle M, D_{all} \rangle \in \bar{L}$。
- $\langle M \rangle \notin \overline{ALL_{TM}} \implies L(M) = \Sigma^*$。因为 $L(D_{all}) = \Sigma^*$,所以 $L(M) = L(D_{all})$。这意味着 $f(\langle M \rangle) = \langle M, D_{all} \rangle \notin \bar{L}$。
- 结论: 我们证明了 $\overline{ALL_{TM}} \leq_m \bar{L}$。因为 $\overline{ALL_{TM}}$ 是不可识别的,所以 $\bar{L}$ 也是不可识别的。因此,$L$ 是不可协同识别的。
练习题 2: 证明 $L=\{\langle M\rangle \mid M \text{ 不接受长度 } \geq 50 \text{ 的字符串}\}$ 是不可识别的
- 思路: 使用精炼的赖斯定理。
- 步骤 1 (性质): $L$ 是一个语言性质,因为它只取决于 $L(M)$ 是否包含长度 $\geq 50$ 的字符串。
- 步骤 2 (非平凡):
- 存在图灵机在 $L$ 中:例如 $M_{empty}$,其语言为空,不含任何长度 $\geq 50$ 的串。$\langle M_{empty} \rangle \in L$。
- 存在图灵机不在 $L$ 中:例如 $M_{all}$,其语言为 $\Sigma^*$,包含所有长度 $\geq 50$ 的串。$\langle M_{all} \rangle \notin L$。
- 步骤 3 (空语言):
- $L(M_{\emptyset}) = \emptyset$。空语言中没有任何字符串,自然也就不包含长度 $\geq 50$ 的字符串。
- 因此,$\langle M_{\emptyset} \rangle \in L$。
- 步骤 4 (结论): 根据精炼的赖斯定理,因为这是一个包含空语言的非平凡性质,所以 $L$ 是不可识别的。
练习题 3: 证明可识别语言在连接运算下是封闭的
- 目标: 证明若 $L_1, L_2$ 可识别,则 $L_3 = L_1 \cdot L_2$ 也可识别。
- 分析: $L_3 = \{ w \mid w = xy, \text{ 其中 } x \in L_1, y \in L_2 \}$。我们需要构造一个识别 $L_3$ 的图灵机 $M_3$。
- 思路 (非确定性): 使用非确定性图灵机 (NTM) 会让证明非常简单。
- 设 $M_1$ 和 $M_2$ 分别是 $L_1$ 和 $L_2$ 的识别器。
- 构造 NTM $M_3$ on input $w$:
- 非确定性地将 $w$ 分割成两部分 $x$ 和 $y$ ($w=xy$)。
- 将 $x$ 作为输入,模拟 $M_1$。
- 如果 $M_1$ 接受 $x$,则继续将 $y$ 作为输入,模拟 $M_2$。
- 如果 $M_2$ 也接受 $y$,则 $M_3$ 接受 $w$。
- 在任何其他情况(分割不成功,或 $M_1$ 不接受,或 $M_2$ 不接受),该计算分支死亡或拒绝。
- 正确性: 如果 $w \in L_3$,那么必然存在一种分割方式 $w=xy$ 使得 $x \in L_1$ 且 $y \in L_2$。$M_3$ 会有一条计算路径对应这个分割,并且在这条路径上 $M_1$ 和 $M_2$ 都会接受,最终 $M_3$ 接受。如果 $w \notin L_3$,那么对于所有可能的分割,$M_1$ 或 $M_2$ 至少有一个不接受,所以 $M_3$ 没有任何一条计算路径会接受。
- 因为 NTM 识别的语言等价于 DTM(确定性图灵机)识别的语言,所以 $L_3$ 是可识别的。
练习题 4: 证明 $A \leq_m A$
- 思路: 我们需要找到一个可计算函数 $f$,使得 $w \in A \Longleftrightarrow f(w) \in A$。
- 构造: 选择最简单的可计算函数——恒等函数 $f(w) = w$。
- 证明: $w \in A \Longleftrightarrow w \in A$。这显然成立。
- 结论: 任何语言都可以映射归约到其自身。这体现了 $\leq_m$ 的自反性。
练习题 5: 必然有 $A \leq_m \bar{A}$ 吗?
- 回答: 否。
- 反例:
- 设 $A = A_{TM}$。我们知道 $A_{TM}$ 是可识别的,但不是协同可识别的(即 $\overline{A_{TM}}$ 是不可识别的)。
- 假设 $A_{TM} \leq_m \overline{A_{TM}}$。
- 根据定理2.4的第一条,“如果 $B$ 是可识别的,那么 $A$ 是可识别的”。
- 它的逆否命题是“如果 $A$ 是不可识别的,那么 $B$ 是不可识别的”。
- 我们在这里有 $A=A_{TM}$ (可识别), $B=\overline{A_{TM}}$ (不可识别)。
- 如果 $A_{TM} \leq_m \overline{A_{TM}}$ 成立,那么根据定理2.4,如果 $\overline{A_{TM}}$ 是可识别的,则 $A_{TM}$ 也是可识别的。这没有矛盾。
- 但是,让我们考虑其补集。如果 $A \leq_m \bar{A}$,那么 $\bar{A} \leq_m \overline{\bar{A}} = A$。
- 所以我们有 $\overline{A_{TM}} \leq_m A_{TM}$。
- 再次应用定理2.4:我们知道源语言 $\overline{A_{TM}}$ 是不可识别的。目标语言 $A_{TM}$ 是可识别的。
- 定理告诉我们,如果源语言不可识别,则目标语言也必须不可识别。
- 这里,源 ($\overline{A_{TM}}$) 是不可识别的,但目标 ($A_{TM}$) 是可识别的。这就产生了矛盾。
- 因此,假设 “$\overline{A_{TM}} \leq_m A_{TM}$” 必须是错误的。
- 既然 $\overline{A_{TM}} \leq_m A_{TM}$ 不成立,那么 $A_{TM} \leq_m \overline{A_{TM}}$ 也不成立。
- 所以,不是必然有 $A \leq_m \bar{A}$。
📝 [总结]
这些练习题覆盖了本讲义的全部核心概念:使用映射归约和精炼的赖斯定理证明不可识别性与不可协同识别性,以及对可识别语言闭包性质的理解,还有对归约定义本身的深刻思考。
🎯 [存在目的]
通过解决这些问题,学生可以将理论知识转化为实践技能。这些问题不仅测试对定义的记忆,更考验对定理的灵活运用、证明策略的选择以及逻辑构造的严谨性。
🧠 [直觉心智模型]
- 题1: 证明把“判断图灵机语言和DFA语言是否相等”归类为难题。
- 题2: 证明“检查图灵机是否只接受短字符串”是难题。
- 题3: 证明两个“半自动可验证”的任务(识别 $L_1, L_2$)组合起来(连接),结果仍然是“半自动可验证”的。
- 题4: 证明任何问题的难度都等于其自身的难度(逻辑自洽性)。
- 题5: 提出一个深刻的问题:一个问题的难度是否能等同于其“反问题”的难度?答案是否定的,这揭示了可识别性世界中的不对称性(例如,$A_{TM}$ 和 $\overline{A_{TM}}$ 的难度就不同)。
10行间公式索引
1.
$$
w \in A \Longleftrightarrow f(w) \in B .
$$
解释: 这是映射归约的核心定义,表示一个实例 $w$ 属于语言 $A$ 当且仅当经过可计算函数 $f$ 转换后的实例 $f(w)$ 属于语言 $B$。
1110. 全文总结与展望
📖 [逐步解释]
本讲义(Handout 10a)系统性地引导我们从可判定性的边界之外,进入一个更深、更复杂的计算理论领域:不可识别性。它不仅定义了什么是不可识别的语言,更重要的是,提供了三大武器来证明一个语言属于这个“最难”的计算问题类别。
首先,讲义通过回顾可识别(Recognizable)和协同可识别(Co-recognizable)的定义,并重申关键的定理1.3($L$ 可判定 $\iff L$ 可识别且协同可识别),为“不可识别性”的出现铺平了道路。这个定理揭示了,一个不可判定的问题,其“病因”必然是“不可识别”或“不可协同可识别”(或两者都是)。这直接引出了第一个证明策略:补集法。如果我们能证明一个语言 $L$ 是不可判定的,同时其补集 $\bar{L}$ 是可识别的,那么 $L$ 必定是不可识别的。经典的 $\overline{A_{TM}}$ 就是通过这种方法被证明为不可识别的。
然而,补集法有其局限性。当一个语言和它的补集都不可识别时,此法便无能为力。为了应对更广泛的场景,讲义引入了第二个,也是最核心的武器:映射归约 ($A \leq_m B$)。映射归约是一种形式化的方法,用以证明“问题A不比问题B难”。它的强大之处在于其逆否命题的应用:如果我们从一个已知的不可识别语言 $A$ 出发,成功地构造了一个到目标语言 $B$ 的映射归约,那么我们就能断定 $B$ 也一定是不可识别的。讲义详细地拆解了构造一个有效归约的步骤:选择源语言、定义可计算的转换函数 $f$、并严谨地证明转换的逻辑等价性。这个工具的灵活性通过定理2.5 ($A \leq_m B \iff \bar{A} \leq_m \bar{B}$) 得到进一步增强,允许我们在原语言和其补集之间选择更容易处理的一对来进行归约。
最后,讲义介绍了第三个武器,一个优雅的“快捷方式”——精炼的赖斯定理。作为赖斯定理的加强版,它适用于所有关于图灵机语言的非平凡性质。它提供了一个极其简单的判据:只需检查识别空语言的图灵机 $M_{\emptyset}$ 是否满足该性质,就能直接判断该性质对应的语言是不可识别的(若满足)还是不可协同识别的(若不满足)。这为我们快速判断如 $E_{TM}$, $REG_{TM}$, $\overline{ALL_{TM}}$ 等一大类问题的不可识别性提供了极大的便利。
讲义通过列举一系列经典的不可识别语言(如 $\overline{A_{TM}}$, $E_{TM}$, $EQ_{TM}$ 等),为我们建立了一个“困难问题”的坐标系。这些问题不仅是理论上的重要里程碑,也成为我们进行新的归约证明时的“弹药库”。最后的练习题则旨在通过实践,让我们熟练掌握这三大武器,并深刻理解可计算性的层次结构和其内在的不对称性。
📝 [总结]
本讲义的核心是“证明不可识别性的方法学”。它从基本定义出发,层层递进,最终为我们提供了三个强大且互补的工具:
- 补集法:基于可判定性与可识别性的关系,适用于补集相对简单的问题。
- 映射归约:最通用和强大的方法,通过比较问题难度来传递“不可识别”这一性质。
- 精炼的赖斯定理:针对特定类型问题(语言性质)的、高效的快捷定理。
掌握这些方法,意味着我们获得了深入探索算法极限的能力,能够科学地论证哪些计算任务在根本上是无法被任何计算机系统性地解决的。
🎯 [存在目的]
本讲义的存在,是为了将学习者从对“不可判定”的初步认识,提升到对可计算性谱系更精细的理解。它不仅仅是知识的传授,更是思维方式的训练,培养学习者进行抽象问题建模、构造严谨逻辑归约、以及应用深刻理论定理解决实际问题的能力。这在理论计算机科学乃至整个计算机科学领域都至关重要。
🧠 [直觉心智模型]
如果说可计算性理论是在绘制一张“计算宇宙”的地图,那么本讲义则是在地图上标记出了最遥远、最难以企及的“黑暗区域”——不可识别地带。
- 补集法就像是通过观察“光明区域”(可识别的补集)的边界来推断黑暗区域的存在。
- 映射归约则像是建立了一系列“虫洞”,证明如果你能到达某个看似普通的星球(目标语言 $L$),那么你也能通过这个虫洞到达一个已知的“黑洞”(不可识别语言 $U$)。既然黑洞无法到达,那么那个普通星球也必定无法到达。
- 精炼的赖斯定理则是一条宇宙法则,它直接宣告了:凡是满足“非普遍存在”且“包含虚空(空语言)”特性的星系(语言性质),其本身就是一片无法探索的黑暗区域(不可识别)。
通过学习本讲义,我们成为了更成熟的宇宙探险家,不仅知道哪些地方可以去,更知道了哪些地方去不了,并且能够清晰地向他人解释为什么。
[[END_OF_RESPONSE]]所有解释内容已全部输出完毕。