转换为乔姆斯基普通形式,消除epsilon

时间:2014-03-09 17:18:40

标签: context-free-grammar computation-theory context-free-language chomsky-normal-form

我有以下CFG规则:

  • S - > BSA |小量
  • A - > abC | a | ç
  • B - > baC | b |小量
  • C - > aCc | AB |小量

我正处于算法的epsilon消除阶段,我已经消除了以下eplsions C - > epsiolon,B - > epsilon,这是我到目前为止所得到的:

  
      
  • S_0 - >小号
  •   
  • S - > BSA | SA |小量
  •   
  • A - > abC | a | ç| AB
  •   
  • B - > baC | b | BA
  •   
  • C - > aCc | AB | AC |一个   我是否也应该消除S-> epsilon(以粗体显示),因为S是原始的起始变量?
  •   

我是否还应该在算法的单位规则阶段将epsilon复制到S_0?

1 个答案:

答案 0 :(得分:1)

我是你的第一个语法,你可以从epsilon派生S。所以空单词属于所描述的语言。因此,您必须在第二个等效语法中有epsilon。 现在采用普通形式语法,当存在推导S -> epsilon时,S不能出现在推导的右侧。所以规则

S -> BSA | SA | epsilon

是不允许的是乔姆斯基普通形式。所以你可能想要一些东西

S_0 -> S | epsilon      // initial
S -> BA | A | BSA | SA
[...]