编译原理nfadfa.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理nfadfa

基本定义 NFA,也称不确定的有穷自动机,是由一个五元式定义的数学模型,特点是它的不确定性,即在当前状态下,读入同一个字符,可能有多个下一状态。 DFA,也称确定的有穷自动机,也是由一个五元式定义的数学模型,相对的特点是它的确定性,即在当前状态下,读入同一个字符,最多有一个后继状态。 NFA与DFA的矩阵表示 一个NFA或者DFA还可以用一个矩阵[5]表示,矩阵也可以说是状态转换表,它的优点是可以快速访问给定的状态在给定的输入字符时能转换到的状态集。矩阵,每个状态一行,每个输入符号和ε(如果有需要的)各占一列,表的第i行中与输入符号a对应的表项是一个状态集合,表示NFA或者DFA在状态i输入a时所能到达的状态集合(DFA的集合唯一),即δ(i,a)[6]。 (7) 如图可用表表示: NFA状态转换表 输入 状态 0 1 S {P} {S,Z} P {} {Z} Z {P} {P} DFA状态转换表 输入 状态 a b 0 1 2 1 3 2 2 1 3 3 3 3 NFA向DFA的转换的思路 从NFA的矩阵表示中可以看出,表项通常是一状态的集合,而在DFA的矩阵表示中,表项是一个状态,NFA到相应的DFA的构造的基本思路是:DFA的每一个状态对应NFA的一组状态DFA使用它的状态记录在NFA读入一个输入符号后可能达到的所有状态[4]。 NFA和DFA之间的联系 在非确定的有限自动机NFA中,由于某些状态的转移需从若干个可能的后续状态中进行选择,故一个NFA对符号串的识别就必然是一个试探的过程。这种不确定性给识别过程带来的反复,无疑会影响到FA的工作效率。而DFA则是确定的,将NFA转化为DFA将大大提高工作效率,因此将NFA转化为DFA是有其一定必要的。 子集构造法 已证明:非确定的有限自动机与确定的有限自动机从功能上来说是等价的,也就是说,我们能够从: NFA M’ DFA M 使得 L(M)=L(M’) 为了使得NFA确定化,我们首先给出两个定义: 定义1:集合I的ε-闭包: 令I是一个状态集的子集,定义ε-closure(I)为: 1)若s∈I,则s∈ε-closure(I); 2)若s∈I,则从s出发经过任意条ε弧能够到达的任何 状态都属于ε-closure(I)。 状态集ε-closure(I)称为I的ε-闭包 定义2:令I是NFA M’的状态集的一个子集, a∈Σ 定义: Ia=ε-closure(J) 其中J = ∪δ(s,a) ——J是从状态子集I中的每个状态出发,经过标记为a的弧而达到的状态集合。 ——Ia是状态子集,其元素为J中的状态,加上从J中每一个状态出发通过ε弧到达的状态。 具体的转换过程 为了说明跟清晰,我们使用实例说明,构造正规式101(0|1)*011的DFA? 解:首先构造相应的NFA,如图4.2.1所示: 将其写成M五元式则为: M=({0,1,2,3,4,5,6,7,8},{0,1},δ,0,{8}) 其中δ为: δ(0,1)=1 δ(1,0)=2 δ(2,1)=3 δ(3,ε)=4 δ(4,ε)=5 δ(4,0)=4 δ(4,1)=4 δ(5,0)=6 δ(6,1)=7 δ(7,1)=8 它所对应的状态转换矩阵如表1: 表1 状态 0 1 ε 0 ε 1 ε 1 2 ε ε 2 ε 3 ε 3 ε ε 4 4 4 4 5 5 6 ε ε 6 ε 7 ε 7 ε 8 ε 8 ε ε ε 根据NFA转化为DFA的子集法转换法进行转换,对应的状态转换矩阵见表2: 表2 I I0 I1 {0} {ε} {1} {1} {2} {ε} {2} {ε} {3,4,5} {3,4,5} {4,5,6} {4,5} {4,5,6} {4,5,6} {4,5,7} {4,5} {4,5,6} {4,5} {4,5,7} {4,5,6} {4,5,8} {4,5,8} {4,5,6} {4,5} 对上表重新命名后的状态转换矩阵见表3: 表3 I I0 I1 0 ε 1 1 2 ε 2 ε 3 3 4 5 4 4 6 5 4 5 6 4 7 7 4 5 将其写成M五元式则为: M=({0,1,2,3,4,5,6,7},{0,1},δ,0,{5})

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档