编译原理及实现技术(郭德贵)教案.docVIP

编译原理及实现技术(郭德贵)教案.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
授课题目 NFA确定化与DFA化简 授课学时 2 授课时间 2011.9 教学重点、难点 带空边的非确定有限自动机确定化算法; 确定有限自动机化简算法; 教学内容: 1. 非确定有限自动机和确定有限自动机的等价性。 对任何一个NFA M,都存在一个DFA M’ , 使得L(M’)=L(M)  首先定义两个闭包: 1) 设I是NFA M的状态集的子集,定义I的(闭包(_CLOSURE(I)为: 若q ∈I ,则q ∈(_CLOSURE(I) 若q ∈I,那么从q出发经任意条ε弧而能到达的任何状态q’都属于(_CLOSURE(I)。 2) 设I是NFA M 的状态集的子集,a∈∑,可以定义状态子集Ia∈S,对任一sj∈Ia,必有si∈I,使得si和sj之间存在一条由si指向sj的有向弧,弧上的标记字符恰为 a。 Ia=(_CLOSURE(J) 其中,J是那些可从I中的某一状态节点出发经过一条a弧而能到达的状态节点的全体。 然后对给定的NFA按照如下的步骤进行确定化: (1) 构造一张表,共有|∑|+1列,第一列为状态子集I,然后对每个a∈∑分别设一列Ia; (2) 第一行第一列的状态子集为I为(_CLOSURE(s0),其中s0为初始状态; (3) 为第一列中的I和每个k∈∑求Ik,并记入相应的Ik列。如果它和表格第一列中的所有状态子集均不相同,则此表生成一个新行,将它填入新行的第一列中。 (4) 重复步骤(3),直到对每个I和k∈∑均已求得Ik,且不再生成新的状态子集为止。此过程在有限步内一定可以终止,因为如果|S|=n,则状态子集最多只有2n 个,上述表最多只有2n行; (5) 将第一列中的每个状态子集重命名为新的状态,则上述表格便成为新的状态状换矩阵。 例 设有NFA M =({ 1 , 2, … 9} , { a , b } , f , {1}, {6 , 7 , 9 }), 其中f如图2.8所示. 对此NFA ,我们首先构造一张表,表的每一行含有 |∑|+1 列。将表的第二行的第一列处单元格的值置为ε__CLOSURE(s0),这里为ε__CLOSURE(1)={1,2}。 然后我们开始计算表中其它单元格的值。一般而言,如果某一行的第一列中的状态子集已经确定,记为I,那么对k∈∑求Ik,并记入这一行相应的Ik列。然后我们检查这一行所有的状态子集Ik,看它们是否已经在表的第一列中出现过,如果某一个Ik没有出现过,则在此表的最下面生成一个新行,将它填入新行的第一列中。 重复上述的过程,直至所有已生成的Ik 均已在表的第一列中出现过。这种NFA确定化的方法称为子集法。 按照子集法NFA M进行确定化构造出的状态转换矩阵表如图所示。 I Ia Ib {1,2} {2,4,5,6,7} {3,8} {2,4,5,6,7} φ {3,9,8} {3,8} {9} φ {3,9,8} {9} φ {9} φ φ 对NFA M进行确定化构造出的状态转换矩阵表 对表格的状态子集进行重命名,分别用1、2、3、4、5来代表{1,2}、{2,4,5,6,7}、{3,8}、{3,9,8}、{9}这五个状态子集,形成如图2.10所示的状态转换矩阵,它即是和NFA M等价的DFA M’。 I A b 1 2 3 2* 4 3 5 4* 5 5* 和NFA M等价的DFA M’ 2. 确定有限自动机化简 对同一个语言,可以有无限多个有限自动机来描述,从功能上看,这些有限自动机是等价的,但其构成的复杂程度差别很大;对一个NFA,把它确定化后,得到的DFA所具有的状态数可能并不是最小的。那么,有没有一个最小的DFA呢,这就是有限自动机的化简或最小化问题。 一个确定有限自动机M的化简是指:寻找一个状态数最少的 DFA M’,使得L(M)=L(M’)。 定义 设DFA M 的两个不同状态q1和q2 , 如果对任意输入的符号串x,从q1和q2出发,总是同时到达接受状态或拒绝状态中,则称q1和q2是等价的。如果q1和q2不等价,则称q1和q2是可区分的。 显然,DFA的终止状态和非终止状态是不等价的。 定义 从有限自动机的初始状态开始,任何输入序列都不能到达的那些状态称为无关状态。 定义 如果DFA M 没有无关状态,也没有彼此等价的状态,则称DFA M 是最小的(或规约的)。 下面我们介绍一个常用的DFA化简方法:分离法,也称为划分法。 分离法的基本思想:首先DFA中的无关状态,可以直接去掉,对DFA的功能无影响。然后将DFA的状态集划分为一些不相交的子集,使得任何两个不同子集中的状态都是可区分的,而同一子集中的任何两个状态都是等价的,然后在每一个子集中选一个代表,合并掉其它的等价状态,这样就得到了一个最小的DFA。 分离法的步骤

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档