以下问题已在 GATE CS 考试中提出。 1. 让 S 和 T 成为分别由正则表达式 (a+b*)* 和 (a+b)* 表示的 ={a,b} 上的语言。以下内容哪些是对的? (GATE CS 2000)
(a) ScT (S 是 T 的子集)
(b) TcS(T 是 S 的子集)
(c) S=T
(d) SnT=Ø
答案: (c)。
2. 令 L 表示由语法 S – OSO/00 生成的语言。以下内容哪些是对的? (GATE CS 2000)
(a) L = O
(b) L 是正则但不是 O
(c) L 是上下文无关的但不是正则的
(d) L 不是上下文无关的
答案: (b)
说明:请注意,语法本身不是正则的,但语言 L 是正则的,因为 L 可以使用正则文法表示,例如 S -> S00/00。
参考:
http://en.wikipedia.org/wiki/Regular_grammar
3. 考虑以下两个语句:
S1: { 0^2n |n >= l} 是一种正则语言
S2: { 0^m 0^n 0^(m+n) lm >= 1 and n >= 2} 是正则语言
以下哪个说法是正确的? (GATE CS 2001)
a) 只有 S1 是正确的
b) 只有 S2 是正确的
c) S1 和 S2 都正确
d) S1 和 S2 都不正确
答案: (c)
解释:
S1 可以写成 (00)^n,其中 n >= 1。S2 可以写成 (00)^(m+n),其中 m >=2 且 n >= 1。S2 可以进一步简化为 (00 )^x 其中 x >= 3。
我们可以轻松地为 S1 和 S2 编写正则文法。
G1 -> G100/00(对于 S1)
G2 -> G200/000000(对于 S2)
4、以下哪些说法是正确的? (GATE CS 2001)
(a) 如果一种语言是上下文无关的,它总是可以被确定性下推自动机接受
(b) 两种上下文无关语言的结合是上下文无关的
(c) 两种上下文无关语言的交集是上下文无关的
(d) 上下文无关语言的补语是上下文无关的
答案: (b)
解释:
上下文无关语言在以下操作下关闭。也就是说,如果 L 和 P 是上下文无关语言而 D 是常规语言,则以下语言也是上下文无关的:
• Kleene star L * of L
• L 在同态 Ø 下的图像 Ø(L)
• L 和 P 的串联
• L 和 P 的并集
• L 与常规语言 D (L n D) 的交集。
上下文无关语言在补语、交集或差异下不是封闭的。
为什么 a) 不是真的?
确定性下推自动机识别的语言是确定性上下文无关语言。并非所有上下文无关语言都是确定性的。这与确定性有限自动机的情况不同,确定性有限自动机也是非确定性有限自动机的子集,但可以识别同一类语言(如子集构造所示)。
参考:
http://en.wikipedia.org/wiki/Context-free_language
http://en.wikipedia.org/wiki/Deterministic_pushdown_automaton
5. 给定具有 N 个状态的任意非确定性有限自动机 (NFA),等效最小化 DFA 中的最大状态数至少为。 (GATE CS 2001)
(a) N^2
(b) 2^N
(c) 2N
(d) 否!
答案: (b)
参考:
http://en.wikipedia.org/wiki/Powerset_construction