什么是语言{0 ^ m 1 ^ m 2 ^ n |的产生n> = 0,m> N}

时间:2017-05-18 02:46:46

标签: grammar production discrete-mathematics

我想知道如何获得语言{0 ^ m 1 ^ m 2 ^ n |的制作n> = 0,m> N}。

这就是我所拥有的,我不确定它是否正确。如果我错了,请纠正我:

 S -> 01A | 0B1A | 00B11A
 A -> 2A | 2 | λ
 B -> 01

谢谢。

1 个答案:

答案 0 :(得分:0)

此语言不是上下文。这可以使用针对无上下文语言的泵浦引理来显示。你最终得到五个案件;其中三个案例仅抽取符号0,1或2中的一个;两个案例泵浦相邻的符号。注意你几乎可以做到这一点,除了我们可以选择字符串0 ^(p + 1)1 ^(p + 1)2 ^ p,即使你跨越0s和1s并均匀地抽出它们你仍然会失败m> n抽水时测试。

有更强大的语法而不是上下文。我们可以为这种语言生成一般语法。

S -> RT
R -> 0R1X | 01

X1 -> 1X

XT -> T2 | T
1T -> e

前两个节目产生0 ^ n(01)(1X)^ n T形式的字符串。

第三次生成产生0 ^ n(01)1 ^ n X ^ n T形式的字符串。它允许X在所有1之后“浮动”到右边。

最后两个产生产生形式为0 ^ n(01)1 ^ n 2 ^ m,m <= n的字符串。这些允许T“向左”漂浮在Xs之外,将每个X翻译成2或不翻译。