03第3章词法分析2重点.ppt

  1. 1、本文档共121页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 等价的DFA a C D B A E F S b a a a a a b b b b b a b F * 3.6.4 确定的有穷自动机的化简 两个DFA M1和DFA M2,若有L(M1) = L(M2),则称M1和M2等价。 在等价的DFA中,如果某一个DFA的状态数是最少的,则这个DFA是最简的。 对于任一个DFA,存在唯一的状态数最少的DFA与之等价 最简的DFA ? 它没有多余状态和等价状态 在设计词法分析程序时,效率是很重要的一个因素, 应构造尽可能小的DFA。 * * 1、等价状态与不等价状态 ① 状态S和T必须同时为终态或非终态; ② 对于所有输入符号,S和T必须转换到等价的状态集合中。 满足以上条件则称S和T等价 例:图示的状态图,判断状态1和状态2是否等价。 解: (1)状态1和状态2同为非终态; (2)因为有δ(1,a)=3,δ(2,a)=3, δ(1,b)=Ф,δ(2,b)=Ф, 因此,状态1和状态2等价。 0 2 1 3 4 a b a a b * * 2.多余状态 从开始状态出发,任何输入串也不能到达的状态,即初始状态到该状态之间没有通路。 从初始状态出发能够到达的状态,但从它出发却无法到达终止状态的状态,即该状态到终止状态之间没有通路。 多余状态是无用的,应该删除。 删除多余状态的方法很简单,在状态图上直接将多余状态结点以及相关的弧线删除即可。 * * 例:在图(a)所示的的状态图中,判断那些状态是多余状态。 0 1 2 3 4 5 b b b a a 0 2 3 4 b b a 图(a) 有多余状态的状态图 图(b) 删除多余状态的状态图 * * 3.DFA化简算法 设DFA M= (Q,∑ ,δ ,q0,F),化简算法如下: 1)将Q划分成终态集合S1和非终态集合S2:Q= S1∪S2 2)对各状态集合进行划分。设第m次划分将Q分成n个状态集合,即Q= S1∪S2∪…∪Sn。 对状态集合Si(i=1,2,…,n)中的各个状态逐一检查,设状态q1和q2是状态集合Si中的两个状态,对于所有输入符号a(a∈∑),有δ(q1,a)= S’、δ(q2,a)=S”, 若状态S’和S”属于同一状态集合,则将状态q1和q2放在同一状态集合中;否则,将状态q1和q2放到不同的两个集合中。 3)重复第2步,直到所有状态集合都不能划分。此时,每个状态集合中的状态都是等价的。 4)将每个状态集合中的等价状态合并成一个等价代表状态。将状态函数中的所有状态用相应的等价代表状态表示。从状态图上看,要将一个状态集合中的等价状态结点合并成一个结点。 5)删除多余状态。 * * 例: 对图示的有穷自动机化简。状态函数如下: δ(0,a)=1,δ(1,a) =3,δ(2,a) =1,δ(3,a) =3,δ(4,a) =3 δ(0,b)=2,δ(1,b) =2,δ(2,b) =4,δ(3,b) =4,δ(4,b) =4 解:首先将状态集合分成非终止状态集合S1和终止状态集合S2。 S1={0,1,2},S2={3,4} 对S1={0,1,2}划分: 因为δ(0,a)=1,δ(1,a) =3,δ(2,a) =1, 1、3不属于同一状态集, 所以将S1分成S3={0,2},S4={1} 对S2={3,4}划分: δ(3,a)=3,δ(4,a) =3 δ(3,b)=4,δ(4,b) =4 因为3、4属于同一状态集, 所以S2不能划分,说明状态3和4等价。 0 1 2 3 4 b b b a a a b a a b 待化简的有穷自动机 * * 对S3={0,2}划分: 因为δ(0,a)=1,δ(2,a) =1, δ(0,b)=2,δ(2,b) =4 所以将S3分成S5={0},S6={2} 至此,不再能继续划分, 最终得到不能划分的状态集有 S2={3,4}, S4={1},S5={0},S6={2} 每个状态集留一个状态得:S2={3}, S4={1},S5={0},S6={2} 将原来的转换函数中的状态4改成状态3,得到 δ(0,a)=1,δ(1,a) =3,δ(2,a) =1,δ(3,a) =3,δ(3,a) =3 δ(0,b)=2,δ(1,b) =2,δ(2,b) =3,δ(3,b) =3,δ(3,b) =3 去掉重复的,最终得到化简后的状态函数如下,对应的状态图如图所示。 δ(0,a)=1,δ(1,a) =3,δ(2,a) =1,δ(3,a) =3 δ(0,b)=2,δ(1,b) =2,δ(2,b) =3, δ(3,b) =3 0 1 2 3 b b b a a a a b 化简后的有

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档