- 1、本文档共103页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从正规式构造等价的NFA ( Thompson算法) 基础: 1 对于 ? ,构造为 ? 3 对于a ,构造为 a 2 对于? ,构造为 归纳: 1 对于 R|S ,构造为 ? ? ? ? 2 对于 RS ,构造为 ? 3 对于 R* ,构造为 ? ? ? ? 例. 设正则表达式 1*0(0|1)*, 构造等价的NFA. 0|1 ? ? ? ? 1* ? ? ? ? (0|1)* ? ? ? ? ? ? ? ? 1*0(0|1)* ? ? ? ? ? ? ? ? ? ? ? ? ? ? DFA的化简 DFA M 的化简是指寻找一个状态数比 M 少的 DFA M’,使 L(M) = L(M’)。 术语 状态s和t等价: 若从状态s出发能读出字α停于终态, 则从t出发也能读出α而停于终态;反之,若从状态t出发能读出字α停于终态, 则从s出发也能读出α而停于终态 状态s和t可区别: 状态s和t不等价。 例如:终态与非终态是可区别的。 DFA化简的思路 将 DFA M 的状态集划分为不相交的子集, 使不同的两个子集的状态可区别,同一个子集的状态都等价。 DFA化简的步骤 把状态集S划分为两个子集,得初始划分 ∏= { I(1), I(2) },其中 I(1)为终态集, I(2)为非终态集; 设当前 ∏= {I(1), I(2) , … ,I(m) }, 检查∏中每个I(k)是否可以再分 依据为:如果存在一个输入字符a,使得I(k)a不全包含在现行∏的子集中,就将I(k)进行划分。 一般地,如果I(k)a落入现行∏的N个子集中,则应将I(k)划分成N个不相交的组,使得每个组I(ki) 的I(ki)a都落入∏的同一子集。 重复第二步, 直至∏中子集数不再增长为止。 初始划分∏0= { I(1) , I(2) }, I(1) = {3, 4, 5, 6 }, I(2)={0, 1, 2 } 考察I(1)a = { 3, 6 } 包含于 {3, 4, 5, 6 } I(1)b = { 4, 5 } 包含于 {3, 4, 5, 6 } I(1)不可再分, ∏0不变. 考察 I(2)a = {1, 3 },其中{1}a={3},{0,2}a={1},所以 { 0, 1, 2 }可分为{ 1 }, {0, 2 }得 ∏1= {{1}, {0, 2 }, {3, 4, 5, 6 }} 考察 {0, 2 }b ={2, 5 }, {0, 2 }可分为{0}, {2} 得∏2={{0}, {1}, {2}, {3, 4, 5, 6}} 令状态3代表{3, 4, 5, 6}, 画出化简后的DFA 0 1 2 3 4 5 6 a b a a b a b a b b b a a b 0 1 2 3 a b a b a,b b a 化简前 化简后 1 3 5 2 7 6 4 a b a b a a b a b a b a b b Π0={{1,2,3,4},{5,6,7}} 因为{1,2,3,4}a={6,7,1,4}不全包含在Π0的子集中,需划分。又因为 {1,2}a={6,7}落在{5,6,7}集合中, {3,4}a={1,4}落在{1,2,3,4}集合中, 所以得Π1={{1,2},{3,4},{5,6,7}} 因为{3,4}a={1,4},不全包含在Π1的子集中,需划分为{3},{4}得: Π2={{1,2},{3},{4},{5,6,7}} 因为{5,6,7}a={7,4},所以 Π3={{1,2},{3},{4},{5},{6,7}} a * * * 记号影响语法分析的决策,属性影响记号的翻译 * * * 从任意一个接受相同语言的DFA出发,通过分组合并等价的状态,可以得到状态数最少的DFA。 * 示例 q0 q1 q2 q3 输入(字符串): 0 0 1 0 0 0 1 0 控制器 确定有限自动机(DFA) DFA是一个五元组 M=(S, Σ,δ,s0,F) S: 有限的状态集合,每个元素称为一个状态; Σ : 有限的输入字母表,每个元素称为一个输入字符; δ: 转换函数(状态转移集合): S×Σ ? S ; s0: 初始状态, s0 ? S ; F: 终止状态集, F ? S ; 状态转换矩阵 一个DFA可用一个矩阵表示,该矩阵的行表示状态,列表示输入字符,矩阵元素表示δ(s,a)的值。 例:DFA M= ( {0,1,2,3},{a,b}, δ, 0, {3}) 其中δ(0,a)=1 δ(0,b)=2 δ(2,a
您可能关注的文档
最近下载
- 2023年河北省中考地理试题卷(含答案解析).docx
- 编外人员考试题库.pdf
- 《大学生创新创业基础教程》项目二 培养创新素养.pptx
- T∕NAIC 001-2023 近现代历史建筑外墙面修缮技术规程.pdf
- WHODASII精神残疾评定量表完整.pdf
- 2024年02月青海大学附属医院招聘编外政审人员(管理及其他岗位)笔试历年专业考点(难、易错点荟萃)附带答案详解 .docx
- 船员职业健康和安全保护及事故预防,JT_T1079-2016.pdf
- 2021年高考数学押题预测卷03(天津卷)(考试版+全解全析).pdf VIP
- 最新少数民族彝族知识介绍、彝族传统文化学习讲解PPT模板.pptx
- 水运工程质量检验标准(JTS 257-2008版)(DOC 253页).doc
文档评论(0)