以下哪种语言超过 ∑ = {a, b} 不是上下文无关的?
(A) {a n b i ⏐ i ∈ {n, 3n, 5n}, n≥ 0}
(B) {wa n w R b n ⏐ w ∈ {a, b}*, n≥ 0}
(C) {ww R ⏐ w ∈ {a, b}*}
(D) {wa n b n w R ⏐ w ∈ {a, b}*, n≥ 0}答案:(乙)
解释: (A):它是 CFL,因为我们有三个 CFL 的并集,而 CFL 是在 union 属性下关闭的。
{anbi ⏐ i ∈ {n, 3n, 5n}, n≥ 0}
= anbn ∪ anb3n ∪ anb5n
我们可以仅使用一个堆栈来识别这些语言的字符串。
(B):它不是CFL,因为你可以只用一个堆栈来识别给定语言的字符串,你至少需要2个堆栈。仅使用一个堆栈是不可能实现替代字符串匹配的。它是上下文敏感的语言,但不是内容自由的。
(C):这是众所周知的节能灯。它是仅使用一个堆栈即可识别的仅两个字母表的回文语言。
(D):这也是 CFL,因为我们可以先推 w,然后 a’s, b’s pop 与 a’s 和 wR pop 与 w。所以PDA可以接受这种语言。
选项(B)是正确的。
这个问题的测验