我需要为语言A = {a ^ i b ^ j c ^ k |编写cfg i,j,k> 0 j!= k}
我的第一个想法是创建一个没有j!= k限制的简单语法
S -> A B C
A -> aA | a
B -> bB | b
C -> cC | c
这显然不适用于限制,我如何引入j!= k来创建新的CFG?
答案 0 :(得分:0)
您需要将其拆分为两种情况,具体取决于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