确定有穷自动机的最小化问题探讨.docVIP

  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文档。上传文档
查看更多
确定有穷自动机的最小化问题探讨   文章编号:1672-5913(2008)07-0040-03      摘要:本文针对DFA最小化时可能遇到的各种情形,给出最小化的通用算法,并通过具体实例加以验证。此算法有利于学生对编译原理课程中DFA最小化的学习和理解,同时让学生进一步了解此知识点在其他问题求解中的应用。   关键词:有穷自动机(FA);确定有穷自动机(DFA);最小化   中图分类号:G642   文献标识码:B      1引言      词法分析是编译程序的第一阶段,其实质是从描述单词构成的工具――正规表达式,向识别单词的工具――确定有限自动机(DFA)的等价转化。此过程包括正规表达式到非确定有限自动机(NFA)的转化、NFA到确定有限自动机(DFA)的转化和DFA的最小化(化简)三个环节。DFA最小化是转化的最后一步,也是有限自动机应用及实现方面的重要研究问题之一。它揭示了状态之间的内在联系,既方便DFA存储实现,又可以提高自动识别单词的效率。本文在分析DFA最小化理论的基础上,针对转化过程中可能出现的各种情形,给出求DFA M的最小化DFA M′的一种通用算法,并给出实例加以验证。      2DFA最小化理论分析      已知一确定有限自动机DFAM,s和t是M的任意两个不同的状态。DFA最小化问题涉及到以下几个重要概念:   1) DFA的最小化定义:是指构造一个与DFA M等价且状态个数最少的DFA M′,即等价最小DFAM′,有L(M)=L(M′)。   2) 等价状态:若从状态s出发能读出某个字α而停于终态,从状态t出发也能读出同一个字α而停于终态;反之,若从t 出发能读出某个字α而停于终态,则从s出发也能读出同一个字α而停于终态,则称s和t为等价状态。如图1 中的状态6和状态7均只能读出若干b而停于终态。   也可以定义为,若分别以s和t为始点,到达终态所识别字的字集相等,则称s和t为等价状态。如图1,以状态6为始点所识别的字集为b*,而以7为始点所识别的字集为bb*,即b*,所以6和7状态为等价状态。   3) 可区别状态:简言之,如果DFA M中的两个状态s、t不等价,则称s和t是可区别状态。即:以s和t为始点,到达终态所识别字的字集不相等。      DFA M化简时的可区别状态可分为以下三种情形:   ●非终态和终态是可区别的。因为,终态识别的字集中一定有ε字而DFA M中的非初态识别的字集中不可能有ε字。   ●对同一个字w,s和t两个状态,一个到达终态,另一个到达非终态,则s和t可区别。如状态1和状态3是可区别的,因为状态3遇b字符而到达终态6,即能识别字b,而状态1遇b字符而到达非终态2,即能识别以b开头的部分字,但不能识别b字。   ●s和t两个状态,一个有a字符后继(a∈Σ),另一个无a字符后继,则s和t可区别。如状态2和状态5是可区别的,因为状态2有b字符后继,能识别以b开头的部分字,而状态5没有b字符后继,不可识别以b开头的任何字。   3上述概念中,等价状态和可区别状态是DFA最小化的两个重要依据。      3DFA最小化求解算法改进      确定有穷自动机的化简方法很多,文中以分割法介绍DFA的化简:一个DFA M最小化过程是在把M的状态集分割成一些不相交的子集,使得任何不同的两子集的状态都是可区别的,而同一子集的中的任何两个状态都是等价的。最后,让每个子集选出一个代表,同时消除其他等价状态或者为每一个子集重新命名。   那么给定DFA M,如何形成初始划分、进一步划分形成最少状态数的等价DFA M′?如何解决DFA最小化过程中可能遇到的各种情形?下面介绍一种通用算法。   3.1DFA状态转换矩阵的扩展   一个DFA可以表示成一张状态转换矩阵。上图DFA的状态转换矩阵如下表1。其 中的许多oslash;元素,表示当前状态没有以对应字符为弧的后继状态。按照此转换矩阵,由某一状态集求其对应字符的后继状态集是很方便的,例如I={1,2,3,4,5},其对应字符的后继状态集为I ={1,2,3,4,5}a={3,4, oslash;},I={1,2,3,4,5}b={2,6,7,oslash;}。      通常在教科书上,初始划分一般分为两个子集:终态组和非终态组。然后对形成的每个子集再进一步划分。但对后继状态集中的{oslash;}算法要特殊处理,因为它不属于任何已划分子集。现用一种通用算法解决DFA化简过程中的所有情形:设想在DFA M状态转换中有一个出错状态e,该状态为非终止状态,对于每个状态,若没有对应字符为弧的后继状态,均引一条弧到达出错状态e,并在弧上标注对应字符。扩展后的DFA M如图2所示

文档评论(0)

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

该用户很懒,什么也没介绍

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档