1.试描述下列正则表达式定义的语言
- a(a|b)*a
- ((ε|a)b*)*
- (a|b)*a(a|b)(a|b)
a*ba*ba*ba*
(aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)*)*
答案:
(1)a(a|b)*a
:以 a开头以 a结束的由字母 a和 b 组成字符串
(2)((ε|a)b*)*
:由字母 a或 b 组成字符串。
(3)(a|b)*a(a|b)(a|b)
:由字母 a和 b 组成的字符串,其倒数第三个字母为 a。
(4)a*ba*ba*ba*
:由字母 a和 b 组成的字符串,整个串包含且仅包含 3 个 b
(5)(aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)*)*
:包含偶数个 a和 b 的字符串。
2.给出下列语言的正则表达式
(1) 包含 5 个元音字母(a, e, i, o, u)的所有小写英文字母串,这些串中的元音按顺序出现。
(2) 所有按字典递增序排列的小写字母组成的串。
(3) 所有由 a和 b 组成且不含有子串 abb 的串
(4) 所有由 a和 b 组成且不含有子序列 abb 的串
答案:
3.给出识别下列各正则表达式所描述语言的状态转换图
- a(a|b)*a
- ((ε|a)b*)*
- (a|b)*a(a|b)(a|b)
a*ba*ba*ba
3)(a|b)*a(a|b)(a|b)
4、为下列各正则表达式设计相应的 NFA,并分别转换成 DFA
- (a|b)*
- (a*|b*)*
- a(a|b)*a
- ((ε|a)b*)*
(a|b)*abb(a|b)*
(1)