📅  最后修改于: 2023-12-03 15:26:04.407000             🧑  作者: Mango
以下是问题 42:
Which of the following problem is undecidable? (A) Membership problem for CFG (B) Ambiguity problem for CFG (C) Finiteness problem for Regular languages (D) Emptiness problem for Regular languages
(A) CFG(上下文无关语言)成员问题:给定 CFG G 和字符串 w,测试 w 是否属于 L(G)(G 所定义的语言)是可判定的,因为我们可以构建一个 马尔可夫算法,测试字符串 w 是否可以由 G 生成。
(B) CFG (上下文无关语言) 歧义问题:测试 CFG 是否存在二义性是可判定的。 这可以通过构建 G 的等价的非二义性 CFG G' 来实现。
(C) 正则语言有限性问题:给定一个正则表达式,判断生成的语言是否有限是可判定的。 我们可以根据泵引理来证明。
(D) 正则语言空性问题:给定正则表达式(或 DFA/NFA),检查所生成的语言是否为空,是可判定的。
因此,本题答案为 B,即 "上下文无关语言的二义性问题是不可判定的。"
答案:B
解释:此题中的选项 A、C 和 D 都是决定性的,而选项 B 是不可判定的。
所以选项 B 是本题的正确答案。
本题考查了计算机科学中经典的 decision problem 的可判定性问题。程序员应该掌握这些 concept 来避免遇到不可判定问题。
以上的解答保证了问题的准确性,并提供了易于理解的详细解释。