我是TA,有学生问以下问题。令人尴尬的是,我无法想出答案,所以我转向你们。
我们知道L_1 = {a ^ n b ^ n c ^ n}是非CFL。 我们也知道L_2 = {a ^ i b ^ k c ^ j:i!= k} 无上下文。
那些联盟怎么样? (显然是非常规的) 它没有上下文吗?
答案 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。