对语言和CFG的一些限制

时间:2014-08-28 13:53:10

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

我看到关于自动机理论的一个注释:

考虑以下语言:

  
    

L = {xy:x,y in {a,b} *}

  

并考虑以下约束:

  
    

1)x = y

         

2)x!= y

         

3)x =(y)反转

         

4)x的数量不等于y的数量

  

我读了约束2,3,4的语言是无上下文的。我们非常感谢1到3的任何提示或教程。

1 个答案:

答案 0 :(得分:0)

正如您所说,L1: {xy | x,y ∈ {a,b}* ∧ x=y}不是一种无上下文的语言。

但是,非常相似的L3: {xy | x,y ∈ {a,b}* ∧ x=y-1}是无上下文的,如下所示:

S → Ø
S → a S a
S → b S b

从技术上讲,你问题中的另外两种语言是微不足道的:

L2: {xy | x,y ∈ {a,b}* ∧ x≠y}
L4: {xy | x,y ∈ {a,b}* ∧ |x|≠|y|}

因为唯一不满足约束的字符串是空字符串。任何非空字符串S都可以简单地分解为两个不相等的字符串ØS;很明显,这两个字符串的串联是S,除非S为空,否则这两个字符串是不相等的,并且具有不同的长度。由所有非空字符串组成的语言不仅是无上下文的,而且还是常规的:(a|b)+

由于这很容易,我怀疑这不是你实际要求的,但我猜不出你的意思。我建议你把问题编辑得更精确。