我正试图解决这个问题(我想我可能已经解决了):http://d.pr/i/L5Qm
L = {a 3n b 2n | n> = 0}
基本上问题是l
不等于m
或m
不等于n
我生成的规则:
S -> aaaSbb | A
A -> a | ^
一些测试:
Test one: S --> aaaSbb -> aaaAbb -> aaabb
Test two: S --> A -> a
Test three: S --> A -> ^
我确信我可以测试更多,但我不太确定如何测试大多数问题,因为我对这些问题很新。我很感谢你的帮助。
答案 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
产生。