编译原理及实现技术备课笔记_第1页
编译原理及实现技术备课笔记_第2页
编译原理及实现技术备课笔记_第3页
编译原理及实现技术备课笔记_第4页
编译原理及实现技术备课笔记_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章 形式语言与有限自动机有限自动机之第一部分目的:使学生对自动机模型有一个总的认识,了解自动机识别语言的原理。掌握非确定有限自动机到确定有限自动机的转换技术。内容:有限自动机的模型确定有限自动机DFA非确定有限自动机NFA非确定有限自动机到DFA的转换有限自动机的引入(1)引入原因:有限自动机是一种识别装置,它能准确地识别正规集。它为词法分析程序的构造提供了方法和工具。(2)性质:有限自动机是具有离散输入输出系统的数学模型。它具有有限数目的内部状态,系统可以根据当前所处的状态和面临的输入字符决定系统的后继行为。其当前状态概括了过去输入处理的信息。(3)用途:有限自动机是描述特定类型算法的数

2、学方法。特别地,有穷自动机可用作描述在输入串中识别模式的过程,因此,也能用于构造词法分析程序。2有限自动机的模型(1)模型如图所示:输入带a输入带bcde 读头读头输入输出控制器输入输出控制器状态:初始状态、中间状态和终止状态。工作过程:在初始状态下,读头指向输入带的最左单元,准备读入第一个字符,每读入一个字符,从当前状态进入下一状态;当读头读入所有字符后,状态进入终态,则输入带上的输入串被接受,否则,输入串有错。注:1)终止状态可以有若干个,而初始状态一般只有一个。 2)可用状态转换图表示状态变换,状态用结点表示,读入符号用边表示。(2)自动机实例:我们举一个大家熟悉的程序设计语言中标识符的

3、识别过程。标识符是由字母打头,后跟若干字母和数字的字符串。则其自动机表示如下:则标识符xtemp的识别匹配过程为:小结:有限自动机能够准备识别程序设计语言中的单词,因此可用于构造词法分析程序。方法是为程序中的每类单词,根据词法构成规则设计一个FA,然后将其合并在一起构成一个词法分析程序。FA可以分为确定有限自动机和非确定有限自动机两种。这次课主要学习确定有限自动机3确定有限自动机(1)定义:确定有限自动机是一个五元式 M(S,S,f,s0,Z)其中:S:有限状态集 S :有限字母表f:SS S上的单值映射,f(s,a)=s s0:唯一的初态,s0 SZ:终止状态集,ZS注:这里确定的含义,就是

4、状态转换关系f是一个函数,即对于给定的当前状态s和当前读入的符号a,有唯一确定的下一状态s(2)状态转换关系表示:状态转换矩阵:DFA的映射关系由一个矩阵来表示。状态转换图:注:1)用矩阵表示转换便于计算机处理,但不直观,而用状态转换图表示比较直观。2)在整个状态转换图中只有一个初始状态结点,用“”射入的结点表示初始状态。可有若干终止状态(也可能没有),用双圆圈表示。若初始状态结点同时又是终止状态结点,则表示空串e可为相应DFA识别。例:DFA M=(0,1,2,3,a,b,f,0,3)f: f(0,a)=1 f(0,b)=2 f(1,a)3 f(1,b)2 f(2,a)=1 f(2,b)=3

5、 f(3,a)3 f(3,b)3 状态转换矩阵 输入状态 a1 11 1a0 03 32 b a bbabba 0 1 2 1 3 2 2 1 3 3 3 3状态转换图:例:构造一个DFA M,它接受字母表a,b,c上,以a或b开始的字符串,或以c开始但所含的a不多于一个的字符串。故:DFA: M=(0,1,2,3,a,b,c,f,0,1,2,3)其中:f: f(0,a)=1 f(0,b)=1 f(0,c)=1 f(1,a)=1 f(1,b)=1 f(1,c)=1 f(2,a)=3 f(2,b)=2 f(2,c)=2 f(3,b)=3 f(3,c)=3(3)一步动作每读一个字符,状态就向前进至

6、下一状态。 记为:“ ” K 表示自动机做了K步动作 *表示自动机做了0步动作或0步以上动作 +(4) DFA对字符串的识别定义:串Sa*为 DFA M=(S, S,f,s0,Z) 所识别,当且仅当(s0, a ) *(s,e),且s Z能被DFA M所接受的字符串的集合,称为自动机M所能识别的语言,记为L(M)注:不能被自动机接受的字符串有两种情况:读完输入串,状态不停在终止状态,即: (s0,a) *(s,e),且s Z在读过程中出现不存在的映射,使自动机无法继续动作4、不确定有限自动机NFA(Non-deterministic FA)(1)定义:不确定有限自动机是一个五元式 M=(S,S

7、,f,S0,Z)其中:S:有限状态集S :有限字母表f: S S2S(S的子集)上的映射S0:非空的初态集,S0 是S的真子集Z:终止状态集,Z是S的子集,可为空集注:1)非确定主要是指后继状态可有多个。2) DFA是NFA的特例。 3)字母表可包括e例 设NFA M(q0,q1,0,1,f,q0q1) f映射为字符状态01q0q0q1q1q0, q1q0(2)两自动机等价:任何两个有限自动机M和M,若它们识别的语言相同(L(M)=L(M),则称M和M等价注:存在判定任何两个有限自动机等价性的算法5、NFA确定化(1)定理 对于每个NFA M,存在一个DFA M,使得L(M)=L(M)。即,设

8、L是一NFA接受的正规集,则存在一个DFA接受L(2)算法由NFA M=(S,S,f,S0,Z)构造一个等价的DFA M=(Q, S ,d,I0,F)1.取I0=S0,2.若状态集Q中有状态Ii=s0,s1,sj , skS , 0 kj;而且M机中有f(s0,s1,sj,a) = f(s0,a) f(s1,a) f(sj,a)=s0,s1,st =It,若It不在Q中,则将It加入Q。3.重复步骤2,直到Q中无新状态加入为止。4.取终态F=I | I Q,且I Z F 注:1)上述过程可在有限步内完成,因为M机状态的幂集是有限的;2)上述过程也可用表格法来描述,其中列是字符集S中的字符;行是

9、Q中的各状态,开始仅包含I0状态,随着算法的执行,Q的状态逐渐增多直止不再增多为止;表格元素就是d映射函数。注:3)NFA确定化的实质是以原有状态集上的覆盖片(COVER)作为DFA上的一个状态,将原状态间的转换改为覆盖片间的转换,从而将不确定问题确定化。4)通常,经确定化后,状态数增加,而且可能出现一些等价状态,这时需要化简。例 把上例的NFA确定化1.M的初态:I0=q0。则Q中就有了I0状态2.由Q中的状态I0=q0,查看M机,有: f(q0,0)=q0、 f(q0,1)=q1=I1此时,Q=I0,I13.由Q中的状态I1=q1,查看M机,有: f(q1,0)=q0,q1 =I2、 f(

10、q1,1)=q0=I0此时,Q=I0,I1,I23.由Q中的状态I2=q0,q1 ,查看M机,有: f(q0,q1 ,0)=q0,q1 、 f(q0,q1 ,1)=q0,q1 =I2此时,Q=I0,I1 ,I24.F=I1 ,I2NFA经过确定化后,变为:DFA M=(I0,I1 ,I2,0,1, S,I0, I1 ,I2 ) SQ01I0 =q0I0 =q0I1 =q1I1 =q1I2 =q0,q1 I0 =q0I2 =q0,q1 I2 =q0,q1 I2 =q0,q1 d01I0I0I1 I1 I2I0I2I2I2状态转换图如下:第二章 形式语言与有限自动机有限自动机之第二部分目的:使学生

11、在了解了非确定有限自动机的基础上,进一步认识其更一般的形式-带空边的非确定有限自动机,并掌握其到确定有限自动机的转换技术,进而学习DFA的最小化技术。内容:有限自动机的模型确定有限自动机DFA非确定有限自动机NFA非确定有限自动机到DFA的转换1、含空边的非确定有限自动机2、含空边的非确定有限自动机到DFA的转换3、确定有限自动机的化简(最小化)(1)化简条件:接受的语言必须相同(2)化简(最小化)算法基本思想划分法1.将DFA M 中的状态划分为互不相交的子集,每个子集内部的状态都等价;而在不同子集间的状态均不等价。2.从每个子集中任选一个状态作为代表,消去其它等价状态。3.把那些原来射入其

12、它等价状态的弧改为射入相应的代表状态。(3) 状态等价:设DFA M中有两个状态s,t, s,t 等价: (s,w) *(s1,e)同时(t,w) *(t1, e),s1,t1都是终态,w VT* ,即如果从状态s出发能读出某个字w而 停于 终态,从t出发也能读出同样的字w而停于终态,则称s,t 等价。 s,t可区别 :如果s,t不等价,则称为s,t可区别(4)化简(最小化)算法 1.把状态集S划分为终态集和非终态集: 0I01,I02,I01属于非终态集,I02属于终态集。因为终态能识别e,而非终态不能,所以它们是可区别的; 2.假定经过k次划分后: kIk0,Ik1Ikm.这m个子集之间可

13、区分,子集内部还是否可以划分?任取一个子集Iki=s1,s2,sk,若存在某读入字符a,使f(Iki,a)的结果不是全部包含在k的某个子集中,则说明Iki中有不等价的状态,还要进一步划分。对k中所有子集都进行测试,以完成一次划分。 3.重复步骤2,直到所含的子集数不再增加为止。 4.对每个子集任取一状态为代表。若该子集包含原有的初态,则相应代表状态就是最小化后M的初态;同样,若该子集包含原有的终态,则相应代表状态就是最小化后M的终态。注:1)当一个自动机没有任何多余的状态,并且它的状态中没有两个是互相等价的时,我们说这个有限自动机是化简了的。 2)可以通过消除多余状态,合并等价状态而转化成一个最小化的与之等价的有限自动机。例:设有一DFA 的状态转换图如下,试化简之。解:1.把M的状态分为两组:终态集,非终态集00,1,2,3,4,5,62.1考察非终态集: f(0,1,2,a)=1,3 不属于0的任何一个子集,所以0,1,2要分开得到:11,0,2,3,4,5,6再看:f(0,2,a)=1属于1的子集 f(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论