CFG及其逆转

时间:2013-02-22 14:45:53

标签: context-free-grammar computation-theory

我试图把头脑包裹在CGS的周围。让E^*为ε星,',e为空字符串,ww^r为w的反向。

我知道建立一个接受E^*的CFG很简单S -> 0S | 1S | e

接受{ww^r} such that w in E^*的CGG很简单S –> 0S0 | 1S1 | e

这是否意味着接受{wxw^r} such that w, x in E^*的CFG是一种'组合'这两个导致S –> 0S0 | 1S1 | e | B where B –> 0B | 1B | e

1 个答案:

答案 0 :(得分:2)

是的,你的语法是正确的!

CFG到{wxw^r} such that w, x in E^* S –> 0S0 | 1S1 | e | B where B –> 0B | 1B | e是正确的语法。

但重要的是,语言{wxw^r} such that w, x in E^*Regular Language,因此也可以编写Left-Linear and Right-Linear Grammars

此语言的 Right-Liner等效语法是:

S --> 0B | 1A | ^
B --> 0B | 1B | 0
A --> 0A | 1A | 1

左班轮等效于:

S --> B0 | A1 | ^
B --> B0 | B1 | 0
A --> A0 | A1 | 1

它的正则表达式是:

  

0(0 + 1)* 0 + 1(0 + 1)* 1 + ^

类似语言described here in my answer with DFA

注意:语言结构相同但符号不相同,也有^空字符串是不可能的。 + ( 0 + 1) *也是0(1 + 0)*0 + 1(1 + 0)*1

其DFA

DFA

此外,我还建议您查看^的DFA。请注意RE中{{1}}的小变化,但DFA完全不同。