题目
1.构造下列正规式相应的 DF A:(1) 1(0|1)*1 01(2) 1(1010* | 1(0 1 0)* 1)* 0(3) a((a|b)*|ab*a)* b(4) b((a b)* | bb)* ab
1.构造下列正规式相应的 DF A:(1) 1(0|1)*1 01(2) 1(1010* | 1(0 1 0)* 1)* 0(3) a((a|b)*|ab*a)* b(4) b((a b)* | bb)* ab
题目解答
答案
解:
(1)1(0|1)* 101 对应的N FA 为
0
110
1
0123
4
解析
考查要点:本题要求根据给定的正规式构造对应的确定有限自动机(DFA)。
解题核心思路:
- 正规式分解:将正规式按运算符(如
|、*、连接)分解为基本结构。 - NFA构造:根据分解后的结构,构造非确定有限自动机(NFA)。
- 子集法转换:通过子集法将NFA转换为DFA,消除非确定性。
关键点:
- 正确定义状态转移,尤其是处理
*运算符的循环结构。 - 合并等价状态,确保DFA的最小化(本题未要求最小化,但需保证正确性)。
第(1)题:正规式 1(0|1)*101
分解正规式结构
正规式可分解为:
- 初始部分:读取字符
1。 - 循环部分:任意次数(包括0次)的
0或1(即(0|1)*)。 - 结尾部分:固定读取
101。
构造NFA
- 状态定义:
S:初始状态,读取第一个1后进入中间状态A。A:循环状态,读取0或1后保留在自身,或读取1进入状态B(开始匹配101)。B:匹配101的中间状态,读取0后进入状态C,读取1则失败。C:读取最后一个1后进入接受状态D。D:接受状态。
转换为DFA
通过子集法合并NFA状态,消除非确定性。最终DFA状态如下:
- 状态0:初始状态,对应NFA的
S。 - 状态1:读取第一个
1后进入,对应NFA的A。 - 状态2:读取后续
0或1时循环,对应NFA的A的闭包。 - 状态3:匹配到
10时进入,对应NFA的B。 - 状态4:匹配到
101时进入,对应NFA的D(接受状态)。