对于字符串w,我们将 w R定义为 w 的逆。例如,如果 w = 01101,则 w R = 10110。
以下哪种语言是/是上下文无关的?
(A) {wxw R x R ∣ w,x∈{0,1}*}
(B) {ww R xx R ∣ w,x∈{0,1}*}
(C) {wxw R ∣ w,x∈{0,1}*}
(D) {wxx R w R ∣ w,x∈{0,1}*}答案: (B) (C) (D)
解释:选项A:L={wxw^R x^R | w, x ∈ {0,1}* }
这不是 CFL,好像我们先压入“w”然后“x”然后我们无法将 w^R 与“w”匹配,因为堆栈顶部包含 x。
选项 B:L={ww^R xx^R | w, x ∈ {0,1}* }
这是 CFL。我们不确定地猜测字符串的中间位置。所以我们推“w”然后与w^R匹配,再次推x并与x^R匹配
选项 C:L={wxx^R w^R | w, x ∈ {0,1}* }
这也是 CFL。我们不确定地猜测字符串的中间位置。所以我们推“w”然后推x然后与x^R匹配并再次与w^R匹配
选项 D:L={wxw^R | w, x ∈ {0,1}* }
这是一种常规语言(因此是 CFL)。在这种语言中,每个字符串以相同的符号开始和结束(因为 x 可以扩展)。
这个问题的测验