- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1 1 对于∑上的一个正规式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,则最终得到图4.4的NFA N即为所求。 其实,分解R的方式很多,用图4.10(a)(b)(c)(d)分别表明另一种分解方式和所构造的NFA。 图4.10 从正规式r构造NFA 4.5 正规文法和有穷自动机的等价性 采用下面的规则可以从正规文法G直接构造一个有穷 自动机NFA M;使得L(M)=L(G): M的字母表与G的终结符集相同 为G中的每个非终结符生成M的一个状态,G的开始符S 是开始状态S 增加一个新状态Z,作为NFA的终态 对G中的形如A tB的规则(其中t为终结符或?,A和B为 非终结符的产生式),构造M的一个转换函数f(A,t)=B 对G中形如A t的产生式,构造M的一个转换函数 f(A,t)=Z 例4.12:与文法G[S]等价的NFA M如图4.11 G[S]: S a A S bB S ε A aB A bA B aS B bA B ε 有穷自动机转换成等价的正规文法: 对转换函数f(A,t)=B,可写一产生式:A tB 对可接受状态Z,增加一产生式:Z ε 有穷自动机的初态对应文法开始符 有穷自动机的字母表为文法的终结符集 例4.13:给出与图4.12的NFA等价的正规文法G G=({A,B,C,D},{a,b},P,A),其中P为: A a B C ε A bD D aB B bC D bD C aA D ε C bD 图4.1 状态图表示 例4.6中的DFA的状态图表示如图4.1所示: 一个DFA可以表示成一个矩阵表示,该矩阵的行表示状 态,列表示输入符号,矩阵元素表示相应状态和输入符 号将转换成的新状态,即k行a列为f(k,a)的值。用 标明初态;否则第一行即是初态,相应终态行在表的右 端标以1,非终态标以0 图4.2 矩阵表示 例4.5中的DFA的矩阵表示如图4.2所示: 若t? ∑*,f(S,t)=P,其中S为 M的开始状态,P ? Z, Z为终态集,则称t为DFA M所接受(识别) 设Q∈K,函数f(Q,ε)=Q,一个输入符号串t(t1tx,t1 ∈∑,tx ∈∑*),在DFA M上运行的定义为: f(Q,t1tx)=f(f(Q,t1),tx) 例如,证明t=baab被例4.6的DFA所接受 f(S,baab)=f(f(S,b),aab)=f(V,aab)=f(f (V,a),ab)=f(U,ab)=f(f(U,a),b)=f( Q,b)=Q Q属于终态 得证 DFA M所能接受的符号串的全体记为L(M) 结论:?上一个符号串集V???是正规的,当且仅当存 在一个?上的确定有穷自动机M,使得V=L(M) DFA的确定性表现在转换函数f:K×∑→K是一个单值 函数,也就是说,对任何状态k∈K和输入符号a ∈∑, f(k,a)唯一地确定了下一个状态 二.不确定的有穷自动机NFA 一个NFA:M=(K,?,f,S,Z) K是一个有穷集,它的每个元素称为一个状态 ?是一个有穷字母表,它的每个元素称为一个输入符号 f是一个从K? ?* 到K的子集的映像,即:K* ?* →2 K S?K是一个非空初态集 Z?K是一个终态集 例4.7:一个NFA M=({0,1,2,3,4},{a,b},f, {0},{2,4})其中 f(0,a)={0,3} f(2,b)={2} f(0,b)={0,1} f(3,a)={4} f(1,b)={2}
文档评论(0)