- 1、本文档共92页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
正规式有穷自动机
1 1 例4.9 将图4.8中的DFA M最小化 P0=({1,2,3,4},{5,6,7}) a P1=({1,2},{3,4},{5,6,7}) a P2=({1,2},{3},{4},{5,6,7}) a P3=({1,2},{3},{4},{5},{6,7}) b 令1代表{1,2}消去2,令6代表{6,7},消去7,得到图4.8(b) 的DFA M`,它是4.8(a)的DFA M的最小化 图4.8 DFA M和DFA M` 4.4 正规式和有穷自动机的等价性 对于∑上的一个NFA M,可以构造一个∑上的正规式 R,使得L(R)=L(M) 第一步,在M的状态转换图上加进两个结,一个为x结 点,一个为y结点。从x结点用?弧连接到M的所有初始 结点,从M的所有终态结点用?弧连接到y结点。形成 一个与M等价的M`, M`只有一个初态x和一个终态y 第二步,逐步消去M`中的所有结点,直至只剩下x和y 结点。在消结过程中,逐步用正规式来标记弧 其消结的规则如下: 最后x和y结点间的弧上的标记则为所求的正规式r 例4.10 以例4.7的NFA M为例,M的状态图在图4.3,求 正规式r,使L(r)=L(M) 对于∑上的一个正规式R,可以构造一个∑上的NFA M,似的L(M)=L(R) 语法制导方法:按正规式的语法结构指引构造过程,首先 将正规式分解成一系列子表达式,然后使用下面规则为r 构造NFA,对r的各种语法结构的构造规则具体描述如下: 1. ①对于正规式?,所构造的NFA为: 例4.11 为r=(a|b)*abb构造NFA N,使得L(N)=L(r) 从左到右分解r,令r1=a,第1个a,则有 令r2=b,则有 令r3=r1|r2,则有 令r4=r3*,则有: 令r5=a,令r6=b,令r7=b,令r8=r5r6,令r9=r8r7,则有:令r10=r4r9, 则最终得到的NFA N: 图4.10 从正规式r构造NFA 其实,分解r的方式很多,用图4.10(a)(b)(c)(d)分别表明另一种分解方式和所构造的NFA。 思考:如果不用?怎么分解 r=(a|b)*abb ? 0 1 2 3 3 a b b a b 思考:如何把上面的NFA变成DFA? 0 01 03 03 01 02 02 01 01 0 01 0 b a 0 1 2 3 3 a b b a b a b a 4.5 正规文法和有穷自动机的等价性 采用下面的规则可以从正规文法G直接构造一个有穷 自动机NFA M;使得L(M)=L(G): M的字母表与G的终结符集相同 为G中的每个非终结符生成M的一个状态,G的开始符S 是开始状态S 例4.5 G[s]: S aA S a A aA A dA A a A d ①S aA|a A aA|a|dA|d (a|d)A|(a|d) (a|d)*(a|d) ②s=a(a|d)*(a|d)|a=a((a|d)*(a|d)|ε)=a((a|d)*|ε) ③r=a(a|d)* 4.3 有穷自动机 一.确定的有穷自动机(DFA)(有限自动机) DFA:能准确地识别正规集 一个确定的DFA:M=(K,Σ,f,S,Z) K是一个有穷集,它的每个元素称为一个状态 Σ是一个有穷字母表,它的每个元素称为一个输入符 号,所以也称Σ为输入符号字母表 f是转换函数,是在K×Σ→K上的映射,即,如 f(ki,a)=kj,(ki∈K,kj∈K)就意味着,当前状 态为ki,输入符为a时,将转换为下一个状态kj,我们 把kj称作ki的一个后继状态 S∈K是唯一的一个初态 Z? K是一个终态集,终态也称可接受状态或结束状态 例4.6:DFA M=({S,U,V,Q},{a,b},f,S,{Q}) 其中f定义为: f(S,a)=U f(V,a)=U f(S,b)=V f(v,b)=Q f(U,a)=Q f(Q,a)=Q f(U,b)=V f(Q,b)=Q 一个DFA可以表示成一个状态图(状态转换图) 假定DFA M含有m个状态,n个输入符号,那么这个 状态图含有m个结点,每个结点最多有n个弧射出,整 个图含有唯一一个初态结点( 、-)和若干个终态结 点(双圈、+),若f(ki,a)=kj,则从状态结点ki到状态结点 kj画标记为a的弧 图4.1 状态图表示 例4.6中的DFA的状态图表示如图4.1所示: 一个DFA可以表示成一个矩阵表示,该矩阵的行表示状 态,列表示输入符号,矩阵元素表示相应状态和输入符 号将转换成的新状态,即k行a列为f(k,a)的值。用
文档评论(0)