📜  TOC 中的可判定性和不可判定性

📅  最后修改于: 2022-05-13 02:24:08.613000             🧑  作者: Mango

TOC 中的可判定性和不可判定性

将语言(或问题*)识别为可判定、不可判定或部分可判定是 GATE 中非常常见的问题。有了正确的知识和丰富的经验,这个问题就很容易解决了。

让我们从一些定义开始:-

判定语言- 一个决策问题 P 被称为是可判定的(即有一个算法)
如果 P 的所有“是”实例的语言 L 是可判定的。
示例-(I)(DFA 的接受问题)给定一个 DFA,它是否接受给定的
单词?

(II) (DFA 的空性问题) 给定一个 DFA 是否接受任何词?

(III) (DFA 的等价问题) 给定两个 DFA,它们是否接受
相同的语言?

不可判定语言——如果所有语言中的语言 L
是的,P 的实例是不可判定的,或者如果语言不可判定,则它是不可判定的。不可判定的语言可能是部分可判定的语言或其他但不可判定的语言。如果一种语言甚至不是部分可判定的,那么就没有该语言的图灵机。

部分可判定或半可判定语言——如果 P 的所有“是”实例的语言 L 都是 RE,则称决策问题 P 是半可判定的(即具有半算法)。如果“L”是 RE 但不是 REC 语言,则语言“L”是部分可判定的。


递归语言(REC) ——如果存在一个图灵机,它将接受“L”中的所有字符串并拒绝所有不在“L”中的字符串,则称语言“L”是递归的。图灵机每次都会停止并为每个字符串输入给出一个答案(接受或拒绝)。如果语言“L”是递归语言,则它是可判定的。所有可判定语言都是递归语言,反之亦然。

递归可枚举语言(RE) ——如果存在一个图灵机,它将接受(并因此停止)所有在“L”中但可能或不可能的输入字符串,则称语言“L”是一种递归可枚举语言停止所有不在“L”中的输入字符串。根据定义,所有 REC 语言也是 RE 语言,但并非所有 RE 语言都是 REC 语言。

现在让我们解决一些例子——


解决可判定性问题的一种方法是尝试将已知的不可判定问题简化为给定问题。通过将问题 P1 简化为 P2,我们的意思是我们试图通过使用用于解决 P2 的算法来解决 P1。

如果我们可以将一个已知的不可判定问题 P1 简化为给定问题 P2,那么我们可以肯定地说 P2 也是不可判定的。如果 P2 是可判定的,那么 P1 也将是可判定的,但这成为矛盾,因为已知 P1 是不可判定的。

例如。

1. 给定一个图灵机'M',我们需要找出当在'M'中输入字符串'w'时是否达到状态'Q'。这个问题也被称为“状态进入问题”。

现在让我们尝试将 Halting 问题简化为 State Entry 问题。图灵机仅在转换函数时停止? (qi , a) 未定义。将每个未定义函数?(qi,a) 更改为 ?(qi,a) = (Q, a, L 或 R)。请注意,只有当图灵机停止时才能达到状态 Q。

假设我们有一个解决状态进入问题的算法,它每次都会停止并告诉我们是否可以达到状态 Q。通过告诉我们每次都可以或不能达到状态 Q,它告诉我们图灵机每次都会或不会停止。但我们知道这是不可能的,因为停机问题是无法确定的。这意味着我们假设存在一种算法可以解决状态进入问题并停止并每次都给我们一个答案,这是错误的。因此,状态进入问题是不可判定的。

2. 给定两种正则语言 L1 和 L2,是在 L1 和 L2 中查找字符串'w' 是否存在的问题,这是一个可判定的问题。

首先,我们制作了两台图灵机 TM1 和 TM2,分别模拟语言 L1 和 L2 的 DFA。我们知道 DFA 总是会停止,所以模拟 DFA 的图灵机也总是会停止。我们在 TM1 和 TM2 中输入字符串'w'。两台图灵机都会停止并给我们一个答案。我们可以将图灵机的输出连接到修改后的“与”门,只有当两个图灵机都回答“是”时,才会输出“是”。否则它将输出'no'。

由于这个由两个图灵机和一个修改过的与门组成的系统总是会停止,所以这个问题是一个可判定的问题。


关于这个话题有很多问题。没有通用的算法来解决它们。大多数问题都需要独特而巧妙的证明。这里是需要经验的地方。通过解决很多这样的问题,人们可以非常迅速地在现场为这些问题提出证据。所以,继续练习。


*“语言”和“问题”这两个词在计算理论中可以同义使用。例如。 “停机问题”也可以写成 'L = { |图灵机'M'在输入'w'}'时停止。这里的“L”是一种语言。