语言和补语语言由以下Context语言生成?

时间:2013-01-03 12:04:46

标签: context-free-grammar

G={ {S,A} , {a} , {S -> SAS | a , A -> aS | a} ,S}

在答案部分,其中写道:

  

L(G) = {a, a3, a4, a6, a7}   和

L(G)的补充写为:{a2, a5, a8, ...}

请帮助我了解上述语言及其补充是如何产生的?

我的尝试/分析:

上述语法的字符串应至少为3个(不是?):S-> SAS,替换S --> aA --> a,我们得到S --> aaa。但解决方案L(G)a开头。

请帮我理解这个概念,还是我解释错误。

另外,请解释是否有任何标准方法可以从任何语法中找出语言?我google了很多,但找不到一般程序。 提前致谢。 PS-我正准备参加即将到来的竞争考试。

1 个答案:

答案 0 :(得分:-1)

对于以下语法G:

G = {{S, A}, {a}, {S -> SAS | a, A -> aS | a}, S}  

语言:

  

L(G) = {a, a3, a4, a6, a7} 正确无误。

字符串a 5 也是可能的。

a是可能的,因为有一个作品S --> a

S - 作品

S --> SAS 
S --> a    

A - 制作

A --> a
A --> aS 

L(G)中的每个字符串都来自S。要将任何句子形式转换为句子,您必须应用A --> aS --> a,即(奇数长度为1)。

从任何语法中找出语言的conman方法是“按顺序生成树”。 :

要生成大于w长度的字符串|w| > 1,您必须使用生产规则S --> SAS

    T1:            T2:

     s             S
    /|\           /|\
   / | \         / | \  
  S  A  S       S  A  S 
  |  |  |      /  / \  \
  a  a  a     a  |   |  a
                 a   a 

4 后的最小可能字符串仅为 5

    T3:  

     s             
    /|\           
   / | \         
  S  A   s       
 /  / \  |\
a  |   | a \
   a   a    a

所以 5 不能用L(G)的恭维语言。

修改

8 的想法:

     T4:          

     s             
    /|\           
   / | \         
  S  A   S       
 /  / \   \
a  |   |   \
   a   a    T2  

来自T2的三个a'+五个a =八个a s

语法语言:

  

L(G) = {an |其中n != 2}

L(G)

补充仅为{aa}