我的计算机科学课让我们做了无上下文语法。 我想我明白他们是如何工作但我不确定。 有人能告诉我,如果我正确地做这些或者我是否遗漏了这些内容? 我没有必要直接回答问题,但我想知道我是否正确地做了这些或者我是否需要考虑其他问题。
{0^2n 1^3n | n in the set of natural numbers}
my answer: S-> 00S111 | Lambda
对于这个我假设这将递归地将00和111添加到字符串中并且如果它没有添加S那么它将添加lambda,它将关闭字符串,只留下0和1的
另一个是
{0^n 1^n | N in the set of natural numbers}
my answer: S -> 0S1 | A
A -> 0S1 | lambda
再次lambda会关闭字符串。
这些是正确的还是我错过了什么?
编辑:问题1应该有1 ^ 3n而不是1 ^ n
答案 0 :(得分:0)
这应该是评论,但我需要更多空间......
对于第二个例子(如评论中所述),你的语法不起作用。
您的语法将创建一个n
0s后跟n
1s的字符串。没有别的,没有别的。
您需要一些生产,允许您在当前生产之后添加值。如果我要写0^n 1^n 2^x
,我会使用
S -> AB
A -> 0A1 | lambda
B -> 2B | lambda
这有帮助吗?
(*)实际上之后或之前只是相对的术语,但我们通常按顺序阅读(右边的意思是后来的)。