所以我给定的 L = {(a^m)(b^n)(c^k)|m,n,k >= 0,并且 m=k、n=k 或 m=n}
我发现棘手的部分是m=k、n=k 或 m=n的最终规则。我无法完全找到将其纳入 CFG 规则的方法。关于(a^m)(b^n)(c^k)的第一部分,我相信这只是 a、b 和 c 的有序序列。看形式:aaaaabbbbbccccc
S0 = a|aS0|aS1|Epsilon
S1 = b|bS1|bS2|Epsilon
S2 = c|cS2|Epsilon
就像我说的,我认为我所做的上述尝试涵盖了初始形式,但没有翻译给定的规则。
我在想的事情是,我可以以这样一种方式来构建它,即 a&b 或 b&c 被统一添加。我想做的事情可能是:
S1 = aS1b
这样,当我们将aS1b放入S1时,我们会看到我们的 a和b等价地增长:aaaS1bbb意味着m和n可能相等。我无法弄清楚的是如何确保在语法中实现这一点。以这种方式使其成为可选的,但不是必需的。
有什么想法或技巧可以解决这个问题吗?