考虑以下语言。
L 1 = { ap | p 是素数}
L 2 = {a n b m c 2m | n >= 0, m >= 0}
L 3 = {a n b n c 2n | n >= 0}
L 4 = {a n b n | n >= 1}
以下哪些是正确的?
I. L 1是上下文无关的,但不是常规的。
二、 L 2不是上下文无关的。
三、 L 3不是上下文无关的,而是递归的。
四、 L 4是确定性上下文无关的。
(A)仅 I、II 和 IV
(B)仅限 II 和 III
(C)仅 I 和 IV
(D)仅限 III 和 IV
答案: (D)
解释:
L1 既不是常规语言,也不是上下文无关语言,而是上下文敏感的语言。
L2 是上下文无关的,压入任意数量的 a,然后对于每个 b,弹出两个 c,直到所有 b 都结束,这可以通过仅使用一个堆栈来完成。
L3 不是上下文无关的,因为我们不确定何时弹出 b 和推送 a,因为它是三个连续终端之间的比较。
显然,L4 是确定性上下文无关的,因为我们确定首先将 a 压入堆栈,并且在看到 b 时我们确定弹出 a。
陈述 III 和 IV 是正确的,选项(D)是正确的。
这个问题的测验