📜  门| GATE CS 2020 |第 42 题

📅  最后修改于: 2021-09-25 06:33:12             🧑  作者: Mango

考虑以下语言。

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

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

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

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

基于以上思路,我们定义C的CFG如下:

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

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