从通用语言(L_u)的补语“还原”到非空语言图灵机的语言(L_ne)

Posted

技术标签:

【中文标题】从通用语言(L_u)的补语“还原”到非空语言图灵机的语言(L_ne)【英文标题】:"Reduction" from the complement of the universal language (L_u) to the language of nonempty-language Turing machines (L_ne) 【发布时间】:2021-05-06 11:08:42 【问题描述】:

我有一个理论计算机科学领域的问题。

所谓的通用语言 L_u 是由对 (M, w) 组成的,使得 w \in L(M)。语言 L_ne 由具有非空语言的机器 M(实际上是它们的描述,但我们在这里不要太拘谨)组成。我们都知道 L_u 和 L_ne 都是非递归的,但仍然是 RE(递归可枚举)。另一方面,L_u 的补码(我们称它为 L_nu)甚至都不是 RE,因为如果是,L_u 和 L_nu 都必须是递归的。

如果我们能够将 L_nu 简化为 L_ne,我们将证明 L_ne 也是非 RE。这意味着这种减少应该是不可能的。但是,我不知道为什么会这样。

首先,为了将语言 L 简化为 L',我们必须构造一个可计算函数 f,它将 L 的每个可能的正实例映射到 L' 的某个正实例,并将 L 的每个可能的负实例映射到 L 的某个负实例'。仅此而已,不是吗?

其次,我认为我们可以有把握地假设通用图灵机 (UTM) 有两个最终状态,即是状态和否状态。当然,如果对于给定的输入 (M, w),如果 w \not\in L(M),UTM 将永远不会到达 NO 状态,但我们仍然可以假设如果 UTM 停止,它将在 YES 状态或 NO 状态下这样做。这也是正确的,不是吗?

现在让我们尝试将 L_nu 简化为 L_ne,如下所示:给定一对 (M, w),构建一个机器 M',使用 UTM 的逻辑在 w 上运行 M,如果 UTM 说是,则说否,反之亦然.显然,L_nu 的正实例(w \not\in L(M))映射到 L_ne 的正实例(L(M') 在这种情况下是非空的,因为 M' 总是说是),而 L_nu 的负实例 ( w \in L(M)) 被转换为 L_ne 的负实例(L(M') 是空的,因为 M' 总是说 NO)。虽然机器 M' 显然对于至少一些正输入永远运行(因为至少有一对 (M, w) 与 w \not\in M 使得 UTM 永远运行),归约本身 是可计算的:M' 的代码包括 UTM 的代码(这绝对可以做到)和一个简单的逻辑,用于检查内置 UTM,如果应用于 (M, w),是否已到达 YES-状态或 NO 状态。就是这样。

因此,我刚刚“证明”了 L_ne 是非 RE。但是,由于情况并非如此,我一定是在某个地方出错了。这真的让我感到困惑,因为从 L_u 到 L_ne 的标准缩减,例如在 Hopcroft-Ullman-Motwani 中给出的,采用了非常相似的推理。

如果有人能帮我解开这个谜,我将不胜感激!

【问题讨论】:

【参考方案1】:

我看到这个问题四处游荡,但犹豫不决,因为它非常棘手。我在下面有一个尝试的解决方案,我试图指出问题可能是什么。请仔细阅读,看看您是否遵循我的建议。我相信问题的真正症结在于,正如我在下面详细阐述的那样,在 w 上运行 M 的 UTM 不能正确处理 M 未能在 w 上停止的情况:如果 M 未能在 w 上停止,则 (M , w) 在 L_nu 中,但在 w 上运行 M 的 UTM 永远不会知道。

如果我们有一个 L_ne 的决策者,我们可以决定 L_nu 吗?

L_nu 问题的输入是对 (M,w)。 分三种情况:

    M 进入停止接受输入 w:返回 no M 对输入 w 进入停止拒绝:返回是 M 从不停止输入 w:返回是,因为从不停止意味着 M 不接受 w。

我们当然可以计算出机器描述 M',它使用 UTM 在 w 上运行 M 并返回相反的结果。 分三种情况:

    M' 进入停止接受输入 w:返回是 M' 对输入 w 进入停止拒绝:返回 no M' 永远不会因为输入 w 而停止:我们永远不会陷入循环,所以这必须映射到 no

如果我们有一个 L_ne 的决策者 M'' 并将 M' 输入其中,我们会得到什么?

    在第一种情况下,M'' 将返回 yes,因为 M' 接受所有输入 在第二种情况下,M'' 将返回 no,因为 M' 不接受任何输入 在第三种情况下,M'' 将返回 no,因为 M' 不接受任何输入

在第三种情况下,M'' - 我们的 L_ne 判定器 - 告诉我们不,语言 L(M'') 是空的。 但是,它没有说明语言为什么是空的:它可能是 M' 的任何一个否定情况。 如果是因为 M' 明确输入了停止拒绝,那么我们知道 w 在 L(M) 中,所以我们的归约应该回答“否”。 如果是因为 M' 在 w 上永远运行,那么我们知道 M 在 w 上没有停止,所以我们的归约应该回答“是”。

我们在运行 M'' 时无法区分这两种情况,因此归约失败。 为什么失败了? 它失败是因为 M',即在 w 上运行 M 的 UTM,在 M 未能在 w 上停止的情况下无法准确地进入停止接受。 M' 永远不会达到它知道处理将永远继续的地步。 在一般情况下,M' 需要永远运行,在这些情况下,L(M') 将为空。

【讨论】:

以上是关于从通用语言(L_u)的补语“还原”到非空语言图灵机的语言(L_ne)的主要内容,如果未能解决你的问题,请参考以下文章

非正则语言的补语总是递归语言吗?

在图灵约简中证明语言是不可判定的

数学置标语言(MathML)

操作系统启动篇--01

通用图灵机问题

“非图灵完备”到底意味着什么