📜  门| GATE CS 2020 |第42章

📅  最后修改于: 2021-06-29 21:12:13             🧑  作者: Mango

考虑以下语言。

L1 = { wxyx ∣ w,x,y ∈ (0+1)+ }
L2 = { xy ∣ x,y ∈ (a+b)*, ∣x∣=∣y∣, x≠y } 

以下哪一项是TRUE?
(A) L 1是规则的,而L 2是无上下文的
(B) L 1与上下文无关,但不是常规的,L 2与上下文无关
(C) L 1和L 2都不是上下文无关的
(D) L 1与上下文无关,但L 2与上下文无关答案: (A)
解释:

L1 = { wxyx ∣ w,x,y ∈ (0+1)+ } 

在L 1中,将x设为0和1,我们得到一个子集,

L1 = w0y 0 + w1y1 
L1 = (0 + 1)+0(0 + 1)+0 + (0 + 1)+1(0 + 1)+1 

因此,L 1是常规语言。

L2 = { xy ∣ x,y ∈ (a+b)*, ∣x∣=∣y∣, x≠y } is CFL

我们观察到,当且仅当使用| x |将字符串写为xy时,字符串在L 2中。 = | y |使得对于某个i,x的第i个字符是从y的第i个字符的不同。为了获得这样的字符串,我们开始生成相应的第ith个字符,并填充剩余的字符。

基于以上想法,我们为C定义CFG如下:

S → AB | BA
A → XAX | 0
B → XBX | 1
X → 0 | 1 

选项(A)是正确的。
这个问题的测验