上下文自由泵浦引理

时间:2012-04-24 23:51:01

标签: theory context-free-grammar language-theory pumping-lemma

以下语言环境是免费的吗?

L = {a^i b^k c^r d^s | i+s = k+r, i,k,r,s >= 0}

我试图想出一个无上下文语法来生成这个,但我不能,所以我假设它不是上下文。至于我通过矛盾证明:

假设L是无上下文的,

设p是泵浦引理给出的常数,

选择字符串S = a ^ p b ^ p c ^ p d ^ p其中S = uvwxy

作为| vwx | < = p,那么最多vwx可以包含两个不同的符号:

案例a)vwx只包含一种类型的符号,因此uv ^ 2wx ^ 2y将导致i + s!= k + r

案例b)vwx包含两种类型的符号:

i)vwx由b和c组成,因此uv ^ 2wx ^ 2y将导致i + s!= k + r

现在我的问题是,如果vwx由a和b组成,或者c和s组成,那么抽取它们将不会破坏语言,因为i和k或s和r可以一致地增加,导致i + s == k + r。

我做错了什么或者这是一种无背景语言?

2 个答案:

答案 0 :(得分:1)

我无法想出一个CFG来生成我的头脑中的特定语言,但我们知道如果一些下推自动机识别它,语言是无上下文的。

设计这样的PDA不会太困难。一些让你入门的想法:    我们知道i + s = k + r。等价地,i-k-r + s = 0(我按顺序写了它,因为它是它们出现的顺序)。问题的关键在于如果(k + r)> i决定如何处理堆栈。

如果您不熟悉PDA或无法使用它们来解决问题,至少您现在知道它是无上下文的。

祝你好运!

答案 1 :(得分:0)

这是一种接受这种语言的语法:

A -> aAd
A -> B
A -> C
B -> aBc
B -> D
C -> bCd
C -> D
D -> bDc
D -> ε