1、1,2018/4/13,College of Computer Science & Technology, BUPT,第三章 有限自动机与右线性文法,本章主要内容确定有限自动机非确定有限自动机确定与非确定有限自动机的等价性右线性文法和有限自动机的等价性,右线性文法的性质(泵浦定理)使用归纳法进行证明的方法。,2,2018/4/13,College of Computer Science & Technology, BUPT,第一节 有限自动机,一、有限状态系统的概念状态:状态是可以将事物区分开的一种标识。具有离散状态的系统:如数字电路(0,1), 十字路口的红绿灯。离散状态系统的状态数是有限的
2、.具有连续状态的系统:比如水库的水位,室内温度等可以连续变化,即有无穷个状态.有限状态系统必然是离散状态系统(而且状态数有限),因为只有有限个状态.,3,2018/4/13,College of Computer Science & Technology, BUPT,实例 一个人带着一头狼,一头羊,以及一棵青菜,处于河的左岸。有一条小船,每次只能携带人和其余的三者之一。人和他的伴随品都希望渡到河的右岸,而每摆渡一次,人仅能带其中之一。然而如果人留下狼和羊不论在左岸还是在右岸,狼肯定会吃掉羊。类似地,如果单独留下羊和菜,羊也肯定会吃掉菜。如何才能既渡过河而羊和菜又不被吃掉呢?,4,2018/4/
3、13,College of Computer Science & Technology, BUPT,MGWC(处于左岸的子集处于右岸的子集),将过河问题模型化:,人(M)狼(W)羊(G)菜(C),5,2018/4/13,College of Computer Science & Technology, BUPT,二、有限自动机的概念,有限自动机的概念具有离散 输入 输出系统的一种数学模型(可以没有输出,比较特殊的也可以没有输入).有限的状态状态+输入状态转移每次转换的后继状态都唯一 DFA每次转换的后继状态不唯一 NFA,6,2018/4/13,College of Computer Scie
4、nce & Technology, BUPT,FA的模型,FA可以理解成一个控制器,它读一条输入带上的字符。,(1) 控制器包括有限状态;(2) 从左到右依次读取字符;(3) 状态+激励 状态迁移 (根据当前所处状态和输入字符进行状态转移),7,2018/4/13,College of Computer Science & Technology, BUPT,有限状态集 有限输入符号集 转移函数 一个开始状态 一个终态集合,有限自动机的五要素,8,2018/4/13,College of Computer Science & Technology, BUPT,三、DFA的形式定义,定义: DFA
5、是一个五元组 M=(Q,T,q0,F)Q: 有限的状态集合T: 有限的输入字母表: 转换函数(状态转移集合): QT Qq0: 初始状态, q0 QF: 终止状态集, F Q,9,2018/4/13,College of Computer Science & Technology, BUPT,转 移 图 表 示 的 DFA,Q = q0 , q1 , q2 , q3 T = 0, 1 (q0 ,0) = q2 , (q0 ,1) = q1 (q1 ,0) = q3 , (q1 ,1) = q0 (q2 ,0) = q0 , (q2 ,1) = q3 (q3 ,0) = q1 , (q3 ,1)
6、 = q2 q0 F = q0 , q3 ,10,2018/4/13,College of Computer Science & Technology, BUPT,转 移 表 表 示 的 DFA,Q = q0 , q1 , q2 , q3 T = 0, 1 (q0 ,0) = q2 , (q0 ,1) = q1 (q1 ,0) = q3 , (q1 ,1) = q0 (q2 ,0) = q0 , (q2 ,1) = q3 (q3 ,0) = q1 , (q3 ,1) = q2 q0 F = q0 , q3 ,11,2018/4/13,College of Computer Science &
7、Technology, BUPT,四、扩展转移函数适合于输入字符串,函数:接收一个字符串的状态转移函数。 : Q T* Q 对任何q Q,定义: 1. (q , ) = q 2. 若是一个字符串, a是一个字符定义: (q,a)=(q,),a)对于DFA:(q,a)=(q, ),a)=(q,a),即对于单个字符时和是相等的。为了方便,以后在不引起混淆时用代替,12,2018/4/13,College of Computer Science & Technology, BUPT,扩展转移函数适合于输入字符串,举例 (q0 , ) = q0 (q0 , 0) = (q0 , 0) = q2 (q0
8、 , 00) = (q2 , 0) = q0 (q0 , 001) = (q0 , 1) = q1 (q0 , 0010) = (q1 , 0) = q3,13,2018/4/13,College of Computer Science & Technology, BUPT,DFA接受的语言,被DFA接收的字符串: 输入结束后使DFA的状态到达终止状态。否则该字符串不能被D FA接收.DFA接收的语言: 被DFA接收的字符串的集合.L(M) = w ( q0 , w) F 例:T = 0,1,接收含有奇数个0的任意串,14,2018/4/13,College of Computer Scien
9、ce & Technology, BUPT,五、格局,为描述有限自动机的工作过程,对于它在某一时刻的工作状态,可用两个信息表明:当前状态q,待输入字符串w。两者构成一个瞬时描述,用(q,w)表示,称为格局。初始格局:(q0,w)终止格局: (q,), qF,15,2018/4/13,College of Computer Science & Technology, BUPT,如图,接受001010的格局 (q0,001010) (q2,01010) (q0,1010) (q1,010) (q3,10) (q2,0) (q0,)格局数量是无限的。有限状态自动机是无记忆的。例如接受00101011
10、11和接受01011111时,都可以进入格局(q0,1111)。,格局示例,16,2018/4/13,College of Computer Science & Technology, BUPT,如果对某个qF,有(q0,w) (q,),则称输入字符串w是可被确定的有限自动机接受的。,17,2018/4/13,College of Computer Science & Technology, BUPT,设计有限自动机,自动机的设计是一个创造过程,没有简单的算法或过程。技巧:假设自己是机器,思考如何去实现机器的任务。为判断到目前为止所看到的字符串是否满足某个语言,须估算出读一个字符串时需要记住哪
11、些关键的东西。 例:构造自动机,识别所有由奇数个a和奇数个b组成的字符串。关键:不需要记住所看到的整个字符串,只需记住至此所看到的a、b个数是偶数还是奇数。,18,2018/4/13,College of Computer Science & Technology, BUPT,第二节不确定的有限自动机(NFA),修改DFA的模型,使之在某个状态, 对应一个输入,可以有多个转移, 到达不 同的状态, 则称为不确定的有限自动机。 例:,(1),(2),19,2018/4/13,College of Computer Science & Technology, BUPT,一、不确定有限自动机的形式定
12、义,NFA是一个五元组,M=(Q,T,q0,F).其中是QT-2Q的函数,其余与DFA相同.如果接收一个字符串后NFA进入一个状态集,而此集合中包含一个以上F中的状态, 则称NFA接收该字符串.,20,2018/4/13,College of Computer Science & Technology, BUPT,(1),(2),p,q, r,0, q , q , q, r ,1,p,q, r,0, p , r , r ,1, p, q ,转移图和转移表表示的NFA,21,2018/4/13,College of Computer Science & Technology, BUPT,格局示例
13、,如图所示,用格局序列描述自动机的工作过程,当输入字符串是0111011时,则有,22,2018/4/13,College of Computer Science & Technology, BUPT,二、NFA的状态转移函数,与 DFA 唯一不同之处 : Q 2Q同样, 可扩展为 ( : Q T* 2Q)1.(q, ) = q 含义: 不允许无输入的状态变化.2.(q,a)=p|存在r(q,)p(r,a)含义:(q,a)对应的状态集合是(q,)对应的每个状态下再接收字符a以后可能到达的状态集合的并集. 即若 ( q , ) = r 1 , r 2 , , r k , 则 ( q , a) =
14、 ( r i , a ) 其中 T* , a T, r i Q,23,2018/4/13,College of Computer Science & Technology, BUPT,举例 ( p , ) = p ( p , 0 ) = q ( p , 01 ) = q , r ( p , 010 ) = q ( p , 0100 ) = q ( p , 01001 ) = q , r ,扩展转移函数适合于输入字符串,24,2018/4/13,College of Computer Science & Technology, BUPT,NFA 接受的语言,设一个 NFA A = (Q, T,
15、, q0 , F ) 定义 A 的语言: L(A) = w ( q0 , w) F ,25,2018/4/13,College of Computer Science & Technology, BUPT,第三节 NFA与DFA的等价性,DFA是NFA的特例, 所以NFA必然能接收DFA能接收的语言. 因此证明等价性只要能够证明一个NFA所能接收的语言必能被另一个DFA所接收。1.定理: 设一个NFA接受语言L, 那么必然存在一个DFA接受L。2. 证明:策略:对于任意一个NFA,构造一个接收它所能接收语言的DFA,这个DFA的状态对应了NFA的状态集合。,26,2018/4/13,Colle
16、ge of Computer Science & Technology, BUPT,从 NFA 构造等价的 DFA (子集构造法),设 L 是某个 NFA MN = (QN, T, N , q0 , FN) 的语言, 则存在一个 DFA MD , 满足 L(MD) = L(MN) = L. 证明: 定义 M D= (QD, T, D , q0 , FD ) , 其中 QD = S S QN = 2 Q 对 S QD 和 a T , D ( S , a ) = N (q,a), FD = SS QN S FN 需要证明: 对任何w T* , D ( q0 , w ) = N (q0 ,w). 归
17、纳于 | w | 可证上述命题.,q S,27,2018/4/13,College of Computer Science & Technology, BUPT,子集构造法举例,28,2018/4/13,College of Computer Science & Technology, BUPT,子集构造法举例,29,2018/4/13,College of Computer Science & Technology, BUPT,证明:从 NFA 构造等价的 DFA,设 MN = (QN, T, N , q0 , FN) 是一个 NFA , 通过子集构造法 得到相应的DFA MD = (QD,
18、 T, D , q0, FD ), 则 对任何w T* , D ( q0 , w ) = N (q0 ,w). 证明:归纳于 | w |,30,2018/4/13,College of Computer Science & Technology, BUPT,实践中, 通过子集构造法得到的 DFA 的状态数目与原NFA 的状态数目大体相当. 在较坏的情况下,上述 DFA 的状态数目接近于所有子集的数目. 举例 由如下 NFA 构造的 DFA 的状态数目至少为2n,子集构造法得到的状态数,31,2018/4/13,College of Computer Science & Technology, BUPT,作业: P48 习题8 , P120 习题14,