Math 上下文无关语法引入更多条件

Math 上下文无关语法引入更多条件,math,context-free-grammar,Math,Context Free Grammar,我需要为语言a={a^ib^jc^k | i,j,k>0j!=k}编写一个cfg 我的第一个想法是创建一个没有j=k限制 S -> A B C A -> aA | a B -> bB | b C -> cC | c 这显然不适用于限制,我如何介绍j=要创建新的CFG?您需要将其分为两种情况,具体取决于j>k还是k>j S -> A X | A Y A -> aA | a X -> bX | bZ # every X -> bX gives yo

我需要为语言a={a^ib^jc^k | i,j,k>0j!=k}编写一个cfg

我的第一个想法是创建一个没有j=k限制

S -> A B C
A -> aA | a
B -> bB | b
C -> cC | c

这显然不适用于限制,我如何介绍j=要创建新的CFG?

您需要将其分为两种情况,具体取决于j>k还是k>j

S -> A X | A Y
A -> aA | a
X -> bX | bZ  # every X -> bX gives you an extra b
Y -> Yc | Zc  # every Y -> Yc gives you an extra c
Z -> bZc | bc  # Z produces b^j c^j strings

谢谢,我现在明白了,你必须把语法分成两种不同的情况!