假设有一个语法
有一个循环:
转换为CNF时如何消除它? 我不认为将规则添加到语法中(如在单元消除中) X - > X,对,因为它基本上是另一个循环?
答案 0 :(得分:1)
如果X -> Y
和Y -> X
的非终结符是可互换的,则可以用两个中的另一个安全地替换两个中的任何一个实例,从而完全消除两个中的一个。正如您还指出的那样,可以安全地消除X -> X
形式的规则。因此,这种语法等同于您提供的语法:
S -> PQT
R -> T
U -> aU | bX
P -> bQ
X -> SX | c
Q -> aRX
T -> U
这也是:
S -> PQT
R -> T
U -> aU | bY
P -> bQ
Y -> SY | c
Q -> aRY
T -> U