1、1. 将图 1 所示的有穷自动机转换成与其等价的正规文法,其中 4、5 为终止状态。解答:本题考查有穷自动机到正规文法的转换方法。这类题只需要书中所介绍的方法进行即可得到正规文法,本题有穷自动机对应的正规文法GS为:AaB|bB|cCBaB|bD|aE|cC|b|aCbB|cC|cE|cDbD|bEaE|a12345startabb cbc aacb图 1 有穷自动机的状态转换图2.给定如图 2 所示的有穷自动机,试用正规表达式给出它能接受的语言集合。0 1 2 3aa abbabb图 2 有穷自动机解:本题考查正规表达式与有穷自动机的等价性。对于一个在输入字母表上的 FAM,一定可以在字母表
2、上构造一个正规表达式 e,使得 L(e)=L(M) .根据状态转换图,从开始状态出发,可以有任意个(包括 0 个)b 作为句子的开始部分;从 0 状态出发,每输入一个 a,不许输入两个 b 才能到达终止状态后,还可以通过输入 a 回到状态 1,或输入 b 回到状态 0,然后进入递归过程,再输入相同的符号串,所以,该有穷自动机描述的语言为:(b*(aa*b)*b)*3. 构造下述正规表达式的 DFA。Xy*|yx*y|xyx解: 本题考查由正规表达式构造有穷自动机的方法,本题可按照由正规表达式构造等价的 NFA,NFA 确定化,DFA 最小化 3 步进行求解。(1) 根据题中所给的正规表达式得到
3、相应的 DFA 如图 3 所示。SA BF GD E ZCxyxxxyy 图 3 正规表达式 Xy*|yx*y|xyx 的 DFA。(2) 依据该 NFA 采用子集法构造确定 DFA 其过程如表 1(已换名)所示。表 1 将 NFA 确定化为 DFA 的过程I Ix IyS 0 A, B, F, Z 1 C, D, E 2A, B, F, Z 1 B, G, Z 3C, D, E 2 D, E 4 Z 5B, G, Z 3 Z 5 B, Z 6D, E 4 D, E 4 Z 5Z 5B, Z 6 B, Z 6以所有包含 NFA 的终止状态 Z 的 DFA 状态作为终止状态,得到 DFA 相应的
4、状态转换图如 图 4 所示y0245561 3xxxxyyyy yy图 4 DFA 的状态转换图(3) 对 DFA 进行最小化,过程如下:已知 K=0,1,2,3,4,5,6。首先将 K 分成两个子集K1=0,2,3 (非终态集)K2=1,3,4,6 (终态集)在状态集合 K1=0,2,3中,因为0x=1K 22,4x=4K 1所以状态 0 与状态 2,4 不等价,故 K1 可分割为K11=0 K12=2,4在状态集合 K12=2,4中,因为有2,4 x=4 2,4y=5K 2所以,状态 2 和状态 4 等价。在状态集合 K2=1,3,4,6中,状态 5 无输入,状态 3 有 x、 y 输入,
5、状态 1 与状态 6 只有 y 输入,所以可将 K2 分割为K21=1,6 K22=3 K23=5在状态集合 K21=1,6中,状态 1 输入 y 到达状态 3,状态 6 输入 y 到达状态 6,所以状态 1 与 6 也不等价。进一步将 K21 分割为K211=1 K212=6于是,将原状态集合划分为:0、2,4 、1、3、5、6 。选2,4中的 2 作为代表,原来由状态 4 导入(出)其余状态的弧改为有状态 2 导入(出) ;然后消去状态 4。最后得到最小化后的状态转化图如图 5 所示。025561 3xyyy yyxx图 5 正规表达式 Xy*|yx*y|xyx 的最小化 DFA4. 构造
6、正规表达式(011)*00 相应的 DFA。解:本题考查由正规表达式构造确定的有穷自动机的方法。(1) 构造正规表达式(011)*00 的 DFA。按照图 3.2 所示的转换规则构造正规表达式(011)*00 对应的 NFA 如图 6 所示。S B C ZA010 0图 6 正规表达式(011)*00 的 DFA(2) 由正规表达式(011)*00 的 NFA 构造确定的有穷自动机 DFA。以 NFA 的开始状态 S 的 闭包 -CLOSURE(S)作为 DFA 的开始状态,采用子集法将图 3.43 中所式的 NFA 确定化,其过程如表 2 所示。表 2 将 NFA 确定化为 DFA 的过程I
7、 Ix IyS,A, B 0 A, B, C 1 A, B 2A, B, C 1 A, B, C, Z 3 A, B 2A, B 2 A, B, C 1 A, B 2A, B, C, Z 3 A, B, C, Z 3 A, B 2以所有包含 NFA 的终止状态 Z 的 DFA 状态作为终止状态,得到 DFA 相应的状态转换图(以换名)如图 7 所示。012301100011图 7 正规表达式(0|1)*00 的 DFA(3) 对该 DFA 进行最小化。采用够造状态集划分的方法对 DFA 进行最小化,过程如下:以知 K=0,1,2,3。首先将 K 分成两个子集K1=0,1,2 (非终态集)K2=3 (终态集)在 K1=0,1,2中,有00=1K 1 10=3K 2 20=1K 101=2K 1 11=2K 1 21=2K 1