- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 正则语言 正则表达式RE与有限状态自动机DFA(或NFA)是等价的。 一个语言L,如果能够被有限状态自动机所接收,则一定存在着对应的正则表达式来代表该语言(该语言就是正则集); 一个语言L,如果能够被正则表达式来表示,则一定存在着对应的有限状态自动机,能够接收该语言(该语言就是FSL); 每个FSL都是正则集 。 右线性语言,正则集和FSL是等价的,只不过是从不同的角度来对语言进行的描述: 右线性文法产生右线性语言; 通过运算得到正则集; 有限状态自动机DFA(或NFA)接收FSL。 正则表达式表示正则语言。 4.1 正则语言与有限状态自动机 4.1.1 正则表达式与有限状态自动机 可以直接构造有限状态自动机NFA接收正则表达式表示的正则语言。 例4-1 简单的正则表达式和对应的有限状态自动机的情况。P87 正则表达式0对应的NFA: 正则表达式01对应的NFA : 正则表达式0+1对应的NFA :? ? 或构造仅有一个接收状态的带ε-NFA: 正则表达式0*对应的有限状态自动机: 对于比较复杂的正则表达式,如何得到所对应的有限状态自动机? 定理4-1 设r是一个正则表达式,则存在一个带ε动作的有限状态自动机,有L(NFA)=S(r)。 证明: 对于正则表达式r中三种运算(连接、联合和迭代)的数目n作归纳证明: 对于正则表达式r,存在一个等价的 ε-NFA; 该ε-NFA只有一个接收状态,且没有从该接收状态出发的任何状态转换。 归纳基础: 设正则表达式r的构造次数n为0,即r没有经过任何运算(连接、联合和迭代)而得,因此, r只能为ε、Φ或者是字母表∑中的某个元素a。 1) r=ε 2)r=Φ 3)r=a 所以,结论对于n=0成立; 归纳步骤: 假设结论对n≤k(k≥0)成立,则当n=k+1,根据r最后一次运算的形式,分为三种情况: 1)r=r1+r2 r1和r2中所含的运算符的个数不会大于k,根据归纳假设,存在满足定理要求的ε-NFA。 M1=(Q1,∑1,δ1,q1,{f1}) 和 M2=(Q2,∑2,δ2,q2,{f2}) 且 L(M1)=S(r1);L(M2)=S(r2) 假设Q1和Q2不相交, 设置Q= Q1UQ2U{q0,f0}, ∑ =∑1U∑2 构造 ε-NFA=(Q,∑,δ,q0,{f0}) 其中δ函数为: ①?δ(q0,ε)={ q1,q2} ②对于q∈Q1-{f1},a∈∑1U{ε} , δ(q,a)=δ1(q,a); ③对于q∈Q2-{f2},a∈∑2U{ε} , δ(q,a)=δ2(q,a); ④?δ(f1,ε)={f0} δ(f2,ε)={f0} 对于构造出的ε-NFA ,可以形象地表示: 该ε-NFA包括了原来M1和M2的所有δ函数,增加了4个扫描ε的δ函数,使得: 从ε-NFA的开始状态出发,通过两个ε动作,可以选择地到达M1或M2的开始状态q1或q2,然后,使用M1或M2的自己的δ函数,到达M1或M2的惟一接收状态f1或f2,最后,进入NFA的惟一接收状态f0。 显然,ε-NFA接收的语言是L(M1)和L(M2)的联合,即r=r1+r2。 2)r=r1r2 r1和r2中所含的运算符的个数不会大于k,根据归纳假设,存在满足定理要求的ε-NFA: M1=(Q1,∑1,δ1,q1,{f1}) 和 M2=(Q2,∑2,δ2,q2,{f2}) 且L(M1)=S(r1),L(M2)=S(r2) 假设Q1和Q2不相交,现构造 ε-NFA =(Q1UQ2,∑1U∑2,δ,q1,{f2}) 其中δ函数为 ①对于q∈Q1-{f1},a∈∑1U{ε} δ(q,a)=δ1(q,a); ②δ(f1,ε)={ q2} ③对于q∈Q2-{f2},a∈∑2U{ε} , δ(q,a)=δ2(q,a); 对于构造出的ε-NFA ,可以形象地表示: 该ε-NFA包括了原来M1和M2的所有δ函数,增加了1个扫描ε的δ函数,使得: ε-NFA从M1的开始状态q1出发,使用M1自己的δ函数,到达M1的惟一接收状态f1,使用新增加的函数δ(f1,ε)={ q2},到达M2的开始状态q2,然后,使用M2自己的δ函数,到达M2的惟一接收状态f2(也是构造的ε-NFA的惟一接收状态)。 显然,ε-NFA接收的语言是L(M1)和L(M2)的连接,即r=r1r2。 3)r=r1* r1中所含的运算符的个数不会大于k,根据归纳假设,存在满足定理要求的ε-NFA: M1=(Q1,∑1,δ1,q1,{f1}) 使得:L(M1)=S(r1) 设置Q= Q1U{q0,f0}, 构造
文档评论(0)