提供无上下文语法,生成奇数长度的语言{w = 0 * 1 *:| w |很奇怪}

时间:2016-11-29 05:42:22

标签: complexity-theory context-free-grammar automata context-free-language

提供无上下文语法,通过

生成以下语言

Σ= {0,1}:{w = 0 * 1 *:| w |很奇怪}

我的解决方案:

S-> AB | 0 | 1

A-> 0A | ^

B-> 1B | ^

但是使用这种语法我们可以创建偶数个字符串。

我想要产生L = {0,1,000,111,001,011,00000,11111,00001,00011 ......}的语法

1 个答案:

答案 0 :(得分:3)

奇数是奇数和偶数之和,因此语言中的句子是奇数0后跟偶数1,或偶数0后跟奇数那些。而且,奇数是偶数加1;如果我们在前面的描述中进行了替换,我们得到“偶数0,后跟0或1,后跟偶数1”。由于每个偶数都是0或2,而不是偶数,我们最终会得到。

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

S -> 0 | 1 | 0 0 S | S 1 1