以下是CFL和非CFL CFL本身的联合吗?

时间:2012-02-22 13:41:51

标签: automata

我是TA,有学生问以下问题。令人尴尬的是,我无法想出答案,所以我转向你们。

我们知道L_1 = {a ^ n b ^ n c ^ n}是非CFL。 我们也知道L_2 = {a ^ i b ^ k c ^ j:i!= k} 无上下文。

那些联盟怎么样? (显然是非常规的) 它没有上下文吗?

1 个答案:

答案 0 :(得分:3)

我们选择语言U = {a ^ i b ^ j c ^ k |作为我们的宇宙我,j,k在N}。

然后L_1 ^ C = {a ^ i b ^ j c ^ k | i!= j或j!= k} = {a ^ i b ^ j c ^ k |我!= j} union {a ^ i b ^ j c ^ k | j!= k} = L_A union L_B。请注意,L_A = L_2。

由DeMorgan,L_1联合L_2 =(L_1 ^ C与L_2 ^ C相交)^ C =((L_A union L_B)与L_2 ^ C)^ C相交,其分布定律为((L_A与L_2 ^ C相交) union(L_B与L_2 ^ C相交))^ C。

回想一下,由于L_A = L_2,我们得到(L_B与L_2 ^ C相交)^ C.通过DeMorgan,我们可以将其渲染为L_B ^ C union L_2。我们已经承认L_2没有上下文。我们宇宙中L_B的补集是{a ^ i b ^ j c ^ k | j = k},也是无上下文的。两个上下文无关语言的联合也是无上下文的,所以是的,L_1 union L_2是无上下文的。

经过手续后,直觉显而易见:L_1联盟L_2相当于说i!= j(a和b的数量不同)或者b和c的数量是相同的。如果你考虑一下,这完美地捕捉了语言的要求:如果我!= j,我们在第二部分就可以了;我们唯一不能进入L_2的方法是,如果我们已经知道i = j的事实,我们只需要担心保证j = k。

在布尔逻辑中:(a和b)或(不是a)等同于(b或(不是a))。

该语言的CFG如下:

S := A | C
A := aA | B
B := lambda | bBc
C := Cc | D | E
D := a | aD | aDb
E := b | Eb | aEb

您可以通过自上而下或自下而上的解析器结构获得PDA。