我的解决方案对于这种上下文无关语法是否正确?

时间:2013-04-14 22:35:21

标签: grammar context-free-grammar

我正试图解决这个问题(我想我可能已经解决了):http://d.pr/i/L5Qm

  

L = {a 3n b 2n | n> = 0}

基本上问题是l不等于mm不等于n

我生成的规则:

S -> aaaSbb | A
A -> a | ^

一些测试:

Test one: S --> aaaSbb -> aaaAbb -> aaabb
Test two: S --> A -> a
Test three: S --> A -> ^

我确信我可以测试更多,但我不太确定如何测试大多数问题,因为我对这些问题很新。我很感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

你的考试二:

Test two: S --> A -> a

清楚地表明你的语法错了!

用您的语言:

  

L = {a 3n b 2n | n> = 0}

对于每两个 a ,您总是有三个 b a不在语言L中。

您的语言的正确作品是:

S ---> aaaSbb | ^

^为空符号。通知^也使用语言,因为n可以是0

修改

你的语法:

S -> aaaSbb | A
A -> a | ^

生成两种语言的联合,即:

  

{a 3n b 2n | n> = 0} U {a 3n + 1 b 2n | n> = 0}

3n + 1 b 2n 的额外部分归因于A--> a产生。