编译原理课件-(3).ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《编译原理课件-(3).ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 课件
- 资源描述:
-
1、 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系第3章 有穷自动机 (自动机自动机是一种能进行运算并能实现自我控制的装置,是描述符号串处理的强有力的工具。本章介绍有关有穷自动机的基本概念和理论以及正规文法、正规表达式和有穷自动机之间的相互关系) 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系3.1 有穷自动机的形式定义3.2 NDFA到DFA的转换3.3 正规文法与有穷自动机3.4 正规表达式与FA3.5 DFA在计算机中的表示3.6 小结 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系3.1 有穷自动机的形式定义一个确定的有穷自动机(DFA)M
2、是一个五元式:M=(Q , ,t ,q0 , F) 其中:1. Q 有穷状态集2. 输入字母表3. t 映射函数(也称状态转换函数) QQ t(q , a)=q , q , q Q, a4. q0 初始状态 q0 Q5. F终止状态集 FQ 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系状态转移函数可用一矩阵来表示: 输入 字符 状态 a b 0 1 2 1 3 2 2 1 3 3 3 3例如: M:(0,1,2,3,a,b,t,0,3) t(0,a)=1 t(0,b)=2 t(1,a)=3 t(1,b)=2 t(2,a)=1 t(2,b)=3 t(3,a)=3 t(3,b)=
3、3所谓确定的状态机,其确定性都表现在状态转移函数是单值函数! 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系一个DFA也可以用一状态转换图表示: 输入 字符 状态 a b 0 1 2 1 3 2 2 1 3 3 3 3DFA的状态图表示:1032startaabba,bba 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系换言之:若存在一条初始状态到某一终止状态的路径,且这条路径上能有弧的标记符号连接成符号串,则称为DFA M(接受)识别。DFA M所接受的语言为:L(M)=|t(Q0, )=Qn, Qn ZDFA M所接受的符号串:令=a1a2an,若 t (
4、t ( t (Q0, a1),a2)),an-1),an)=Qn,且Qn Z,则可以写成 t (Q0, )= Qn,我们称可为M所接受。* 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系 自动机的等价性 两个有穷自动机A1和A2, 如果L(A1)=L(A2), 则称自动机A1与A2等价。 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系 非确定有穷自动机非确定有穷自动机(NFA) 若若t是一个多值函数,且输入可允许为是一个多值函数,且输入可允许为,则有穷自动机是不确定的,则有穷自动机是不确定的,即在某个状态下,对于某个输入字符存在多个后继状态即在某个状态下,对于某
5、个输入字符存在多个后继状态.NFA的形式定义为:一个非确定的有穷自动机NFA M是一个五元式: NFA M=( Q , , t , Q0 , F )其中 Q有穷状态集 输入符号加上,即自动机的每个结点所射出的弧 可以是中的一个字符或是. Q0初态集 F终态集 t转换函数 Q 2Q (2Q -Q的幂集Q的子集构成的集合) 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系NFA M所接受的语言为所接受的语言为: L(M)=| t(Q0,)=Q QF 例: NFA M=(1,2,3,4 , a,b,c,d , t , 1 ,4) 符号 状态 a b c 1 4 2,3 2 2 4 3
6、3,4 4 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系上例题相应的状态图为: 1234startabacac*M所接受的语言(用正则表达式) R=aa b|ac c| 符号 状态 a b c 1 4 2,3 2 2 4 3 3,4 4 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系3.2 NDFA到DFA的转换 已证明:非确定的有穷自动机与确定的有穷自动机从功能上来说是等价的,也就是说,我们能够从:NDFA MDFA M构造成一个使得 L(M)=L(M) 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系 如果自动机的弧上允许标记,则称此自动机为
7、自动机,记为NDFA或DFA。 自动机的状态转换图中会出现由若干条弧组成的空移环路或空移。 消除空移环路和空移 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系 消除空移环路 找到空移环路之后,要消除它只需把空移环路上的所有节点合并成一个节点,并消除它们所有的弧。如果其中的某一个节点是开始状态或终止状态,则将此合并之后的新节点相应设置为开始状态或终止状态。 消除空移 消除某条弧的空移,需要引入若干条新弧来取代原来弧的作用。 假设状态A有一条弧发出到达状态B,则在消除空移后,如果B是终止状态,则设置A为终止状态,而如果从开始状态经过一条路径到达状态A,则设置B为开始状态。 2007
8、年年9月月湖北大学数计学院计科系湖北大学数计学院计科系 NDFA确定化 子集法 设NDFA A=(,Q ,t ,Q0,F)是一个非确定的有穷自动机,那么可以通过子集法构造一个和它等价的确定有穷自动机DFA A=(,Q, t, q0, F)。构造方法如下: 输入字母表不变 把NDFA A的每一个状态子集都作为DFA A的一个状态状态 DFA A的映射映射定义 t(r1,r2,rm , a) = q = t (r1,a)t (r2,a)t (rm,a) DFA A的开始状态开始状态q0s1 , s2 , , sk,其中,siQ0( i =1,2,k) DFA A的终态集终态集为包含原终止状态的子集
9、组成 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系 造表法 造表法中DFA A的输入字母表 、开始状态q0和终态集F的确定都与子集法的构造方法一致。 状态集Q与映射函数t则是随着造表的过程而动态生成。 首先求出开始状态q0在接受各输入字母后状态变迁的结果,将其填入表中。然后把得到的结果作为新的状态,再求其接受各输入字母后状态变迁的结果,填入表中,如此过程不断重复,直到最后无新结果(状态)出现为止,此时造表结束。 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系定义1、集合I的-闭包:令令I是一个状态集的子集,定义是一个状态集的子集,定义-closure(I)为:
10、)为:1)若)若sI,则,则s-closure(I););2)若)若sI,则从,则从s出发经过任意条出发经过任意条弧能够到达的任何弧能够到达的任何 状态都属于状态都属于-closure(I)。)。 状态集状态集-closure(I)称为)称为I的的-闭包闭包我们可以通过一例子来说明状态子集的-闭包的构造方法 NDFA的确定化 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系例:如图所示的状态图:令I=1,求-closure(I)=?156432aaa根据定义:-closure(I)=1,3 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系我们同样可以通过一例子来说明
11、上述定义,仍采用前面给定的状态图为例- J是从状态子集I中的每个状态出发,经过标记为a的弧而达到的状态集合.-I-Ia a是状态子集,其元素为J中的状态,加上从J中每一个状态出发通过弧到达的状态定义2: 令I是NFA M的状态集的一个子集, a 定义: Ia=-closure(J) 其中J = (s,a)SI 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系例:令 I=1 Ia=-closure(J) =-closure((1,a) =-closure(2,4)=2,4,6根据定义1,2,可以将上述的M确定化(即可构造出状态的转换矩阵)156432aaa 2007年年9月月湖北大
12、学数计学院计科系湖北大学数计学院计科系例:有NFA M a1234startabaccI=-closure(1)=1,4Ia=-closure(1,a)(4,a) = -closure(2,3) = -closure (2,3) =2,3Ib= -closure(1,b)(4,b) = -closure() =Ic= -closure(1,c)(4,c) = I=2,3, Ia=2,Ib=4,Ic=3,4 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系1234startabacc I Ia Ib Ic 1,4 2,3 2,3 2 4 3,4 2 2 4 4 3,4 3,4 20
13、07年年9月月湖北大学数计学院计科系湖北大学数计学院计科系将求得的状态转换矩阵重新编号DFA M状态转换矩阵: 符号状态abc0 2 341221_3344 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系DFA M的状态图:01423start1,42,342acabbc 注意:包含原初始状态1的状态子集为DFA M的初态 包含原终止状态4的状态子集为DFA M的终态。3,4 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系 消除不可达状态 在自动机中,从开始状态出发没有任何一条路径能达到的状态称为不可达状态不可达状态。 注:在使用子集法对NDFA进行确定化的过程
14、中,常会产生一些不可达状态,需要在最后将其消除。 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系 DFA的化简“对于任一个DFA,存在一个唯一的状态最少的等价的DFA”一个有穷自动机是化简的 它没有多余状态并且它的状态 中没有两个是互相等价的。一个有穷自动机可以通过消除多余状态和合并等价状态而转换成一个最小的与之等价的有穷自动机。 2007年年9月月湖北大学数计学院计科系湖北大学数计学院计科系定义:(1) 有穷自动机的多余状态有穷自动机的多余状态:从该自动机的开始状态出发,任 何输入串也不能到达那个状态01s0s1s2s3s5s7s1s5s1s2s2s5s5s1s1s3s0s1
展开阅读全文