2014-01-13 103 views
1

在最近的测试中,有人问我承认,如果下面的语言是上下文无关:理论:给定的语言环境是否是免费的?

enter image description here

据对我来说,它是免费的情况下,可通过下面的上下文无关文法,其中被接受S是开始符号和Y是一个非终端:

enter image description here

然而,我的回答被认为是错误的,那么显然这语言不是上下文。

我对自己的回答充满信心,但回复让我感到困惑。我的理解是否正确?请让我知道我是否遗漏了一些东西。

+0

你的语法生成0100不是语言的一部分 – Marian

+0

这个问题似乎是题外话题,因为它是关于CS理论的;使用cs/cstheory stackexchange站点之一(阅读他们自己的帮助来决定哪一个)。 – geoffspear

+0

@MarianV谢谢。现在理解了这个问题.. –

回答

1

该语言不是上下文无关的语言!你的语法错了!

根据语言描述0 s后缀应该小于1 s的数字和前缀0 s。但是,使用你的语法,您可以生成错误的字符串,如下所示:

第一步:总是由S0
第二步替换S:现在更换SY

S --> S0 --> S00 --> S000 --> Y000 

现在可以更换Y^(NUL)它给出000,这个字符串不在你的语言中。

或者更换Y0Y1然后Y^

Y000 ---> 0Y1000 ---> 01000 

01000字符串不是语言。所以你的语法不会生成相同的语言。

相关问题