使用零语言的CFG是否可判定?

时间:2011-03-22 05:33:21

标签: context-free-grammar turing-machines decidable

如果我有一个无上下文语法G使得G的语言为零,那么G是否可以判断?

我知道答案是肯定的,但我无法证明这一点。我的第一个想法是说只有一个状态,q1,它是图灵机的开始状态和接受状态,相当于G.这台机器不接受任何输入并立即停止并接受,因为它已经达到接受状态州。这是一个可以接受的答案,还是我离开这里?

编辑:

正如乔尔在下面所说,我描述的语言接受所有字符串。为了解决这个问题,我提出了第二台机器G'。 G'具有3种状态,即开始状态q1,接受状态q2和拒绝状态q3。 q1在G'字母表中的所有符号上转换为q3,q2也是如此。 q1具有到q2的epsilon过渡。因此,如果输入到G'的字符串中存在任何符号,则G'将拒绝。如果没有符号,唯一的选择是将epsilon转换为接受状态。听上去怎么样?

编辑:

上述解决方案被证明接受语言L(G')= {“”}。

1 个答案:

答案 0 :(得分:1)

正如你所说,答案是肯定的。一般的证据是,给定CFG G ,您可以轻松(很好地)构建TM模拟使用该语法的派生。但是,您正在寻找空语言的简短证明。 (在这种情况下你有一个CFG的事实是无关紧要的。)

你是在正确的轨道上,如果你可以构建一个总是停止给定语言L的TM,那么L是可判定的。但是,您描述的机器实际上将接受每个字符串,即由字母表中的每个可能字符串组成的语言。那是因为如果开始状态也是接受状态,那么图灵机会在启动时立即接受。它不必读取整个输入字符串(或其任何部分)来接受。

要定义一个不接受任何内容的TM,请让接受状态集为空。为了保证您的机器始终停止,您的过渡功能也可以为空。