如何构建生成此语言的语法? 构造一个生成L:
的语法L = {a^n b^m c^k|k>n, k>m}
我相信我的作品应该遵循这条路线:
S-> ABCC
A-> a|aBC|BC
B-> b|bBC
C-> c|Cc
CB->BC
这个想法是从2 c开始并且总是保持一个c,然后使用C-> c | Cc ad尽可能多的c。 我的C作品如何记住m和n的数量。
答案 0 :(得分:1)
一个选项如下:生成一个字符串,每次生成c
时,您都
a
以与其配对,b
以与其配对,或a
和b
以与之配对。这是从这里开始的:
S→X
X→c | MXc | XC
M→A | B | AB
Bc→bc
Ab→ab
BA→AB
(请注意,这部分不完整)。在这里,X扩展为字符串一侧的一系列c
,它们在字符串的另一侧与A
和B
s配对。 A
和B
的制作是为了确保在展开之前将它们重新排序到正确的顺序。
如果您的字符串形式为 n c n + k ,则不会考虑这种情况,但可以修复如下:
S→X | ÿ
X→c | MXc | XC
M→A | B | AB
Bc→bc
Ab→ab
BA→AB
Y→aYc | Yc | ç
希望这有帮助!