可判定的问题
如果我们能够构建一个图灵机,它会在有限的时间内对每个输入停止并给出“是”或“否”的答案,那么问题就是可判定的。可判定问题有一个算法来确定给定输入的答案。
例子
- 两种正则语言的等价性:给定两种正则语言,有一个算法和图灵机来决定两种正则语言是否相等。
- 正则语言的有限性:给定一种正则语言,有一个算法和图灵机来决定正则语言是否有限。
- 上下文无关语言的空性:给定上下文无关语言,有一个算法 CFL 是否为空。
无法解决的问题
如果没有图灵机总是在有限的时间内停止以给出“是”或“否”的答案,那么问题就是不可判定的。不可判定的问题没有算法来确定给定输入的答案。
例子
- 上下文无关语言的歧义:给定上下文无关语言,没有图灵机总是在有限的时间内停止并给出语言是否有歧义的答案。
- 两种上下文无关语言的等价性:给定两种上下文无关语言,没有图灵机总是在有限的时间内停止并给出两种上下文无关语言是否相等的答案。
- CFG 的全部或完整性:给定一个 CFG 和输入字母表,CFG 是否会生成所有可能的输入字母表字符串(∑*) 是不可判定的。
- CFL、CSL、REC 和 REC 的正则性:给定一个 CFL、CSL、REC 或 REC,确定该语言是否是正则是不可判定的。
注意:两个流行的不可判定问题是 TM 的停机问题和 PCP(后通信问题)。半可判定问题
半可判定问题是不可判定问题的子集,对于这些问题,图灵机将始终在有限的时间内停下来回答“是”,并且可能会也可能不会停止回答“否”。
半可判定问题与可判定问题的关系如图1所示:
赖斯定理
递归可枚举语言上的每个重要(答案未知)问题都是不可判定的。如果一种语言是递归可枚举的,它的补语是否是递归可枚举是不可判定的。
可还原性和不可判定性
如果存在将 A 中的字符串转换为 B 中的字符串的函数f,则语言 A 可归约为语言 B(表示为 A≤B):
w ɛ A <=> f(w) ɛ B
定理 1:如果 A≤B 且 B 是可判定的,则 A 也是可判定的。
定理 2:如果 A≤B 且 A 不可判定,则 B 也是不可判定的。
问题:以下哪些是不可判定的?
- G 是一个 CFG。 L(G)=ɸ?
- G 是一个 CFG。 L(G)=∑*?
- M是图灵机。 L(M) 是正则吗?
- A 是 DFA,N 是 NFA。 L(A)=L(N)?
A. 仅 3
B. 仅 3 和 4
C. 仅 1、2 和 3
D. 仅 2 和 3
解释:
- 选项1是CFG是否为空,这个问题是可判定的。
- 选项 2 是一个 CFG 是否会生成所有可能的字符串(CFG 的全部或完整性),这个问题是不可判定的。
- 选项 3 是 TM 生成的语言是否为正则不可判定。
- 选项 4 是可判定 DFA 和 NFA 生成的语言是否相同。所以选项D是正确的。
问题:以下哪些问题是可判定的?
- 给定的程序是否曾经产生过输出?
- 如果 L 是上下文无关语言,那么 L’ 也是上下文无关的?
- 如果 L 是正则语言,那么 L’ 也是正则?
- 如果 L 是递归语言,那么 L’ 也是递归的?
A. 1,2,3,4
B. 1,2
C. 2,3,4
D. 3,4
解释:
- 由于正则和递归语言在互补下是封闭的,选项 3 和 4 是可判定的问题。
- 上下文无关语言在补充下不是封闭的,选项 2 是不可判定的。
- 选项 1 也是不可判定的,因为没有 TM 来确定给定的程序是否会产生输出。所以,选项 D 是正确的。
问题:考虑三个决策问题 P1、P2 和 P3。已知P1是可判定的,P2是不可判定的。以下哪一项是正确的?
A. 如果 P2 可约化为 P3,则 P3 是不可判定的
B. 如果 P3 可归约为 P2 的补码,则 P3 是可判定的
C. 如果 P3 可归约为 P2,则 P3 是不可判定的
D. 如果 P1 可约化为 P3,则 P3 是可判定的
解释:
- 选项 A 说 P2≤P3。根据所讨论的定理 2,如果 P2 不可判定,则 P3 不可判定。假设 P2 是不可判定的,所以 P3 也将是不可判定的。所以选项(A)是正确的。
- 选项 C 表示 P3≤P2。根据所讨论的定理 2,如果 P3 不可判定,则 P2 不可判定。但是没有给出关于 P3 的不可判定性的问题。所以选项(C)是不正确的。
- 选项 D 表示 P1≤P3。根据所讨论的定理 1,如果 P3 是可判定的,那么 P1 也是可判定的。但是没有给出关于 P3 的可判定性的问题。所以选项(D)是不正确的。
- 选项 (B) 表示 P3≤P2’。根据所讨论的定理 2,如果 P3 是不可判定的,那么 P2′ 是不可判定的。但是没有给出关于 P3 的不可判定性的问题。所以选项(B)是不正确的。
不确定性测验