有限自动机理论-4章正则语言.ppt
《有限自动机理论-4章正则语言.ppt》由会员分享,可在线阅读,更多相关《有限自动机理论-4章正则语言.ppt(134页珍藏版)》请在三一办公上搜索。
1、第四章 正则语言,正则表达式RE与有限状态自动机DFA(或NFA)是等价的。一个语言L,如果能够被有限状态自动机所接收,则一定存在着对应的正则表达式来代表该语言(该语言就是正则集);,一个语言L,如果能够被正则表达式来表示,则一定存在着对应的有限状态自动机,能够接收该语言(该语言就是FSL);每个FSL都是正则集。,右线性语言,正则集和FSL是等价的,只不过是从不同的角度来对语言进行的描述:右线性文法产生右线性语言;通过运算得到正则集;有限状态自动机DFA(或NFA)接收FSL。正则表达式表示正则语言。,4.1 正则语言与有限状态自动机,4.1.1 正则表达式与有限状态自动机可以直接构造有限状
2、态自动机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只有一个接收状态,且没有从该接收状态出发的
3、任何状态转换。,归纳基础:,设正则表达式r的构造次数n为0,即r没有经过任何运算(连接、联合和迭代)而得,因此,r只能为、或者是字母表中的某个元素a。1)r=2)r=3)r=a所以,结论对于n=0成立;,归纳步骤:,假设结论对nk(k0)成立,则当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=Q1UQ2Uq0,f0,=1U2构造-NF
4、A=(Q,q0,f0),其中函数为:,(q0,)=q1,q2对于qQ1-f1,a1U,(q,a)=1(q,a);对于qQ2-f2,a2U,(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
5、 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,1U2,q1,f2),其中函数为,对于qQ1-f1,a1U(q,a)=1(q,a);(f1,)=q2对于qQ2-f2,a2U,(q,a)=2(q,a);,对于构造出的-NFA,可以形象地表示:,该-NFA包括了原来M1和M2的所有函数,增加了1个扫描的函数,使得:,-NFA从M1的开始状态q1出发,使用M1自己的函数,到达M1的惟一接收状
6、态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=Q1Uq0,f0,构造-NFA=(Q,1,q0,f0),其中函数为:,(q0,)=q1,f0 对于qQ1-f1,a1U(q,a)=1(q,a);(f1,)=q0,f0,对于构造出的-NFA,可以形象地表
7、示:,该-NFA包括了原来M1的所有函数,增加了4个扫描的函数,使得:,从-NFA的开始状态出发,通过两个动作,可以直接进入NFA的惟一接收状态f0(以便能够接收空串);或者到达M1的开始状态q1,然后,从M1的开始状态q1出发,使用M1自己的函数,到达M1的惟一接收状态f1,,通过两个动作,可以直接进入-NFA的接收状态f0,以便结束接收过程;也可以再将状态转换为M1的开始状态q1,以便迭代地接收输入串。,显然,-NFA接收的语言是L(M1)的闭包,即r=r1*。,根据r最后一次运算的三种情况,可知,当n=k+1,结论也成立。,对于正则表达式r,存在一个等价的-NFA,该-NFA只有一个接收
8、状态,且没有从该接收状态出发的任何状态转换。,该定理也说明了正则语言对于联合、连接和闭包三种运算是封闭的。,例4-2,为正则表达式10*+0构造等价的NFA。分析:根据运算符的优先级,正则表达式10*+0实际上为:(1(0*)+0,是r1+r2(联合)的形式;其中:r1=10*,r2=0;r1可以表示为r3r4的形式;其中:r3=1,r4=0*;,可以简化为无的NFA,定理4-2,如果语言L被一个DFA所接收,则语言L可以用一个正则表达式来表示。证明:设语言L被DFA=(Q,q1,F)所接收;,状态集合Q中有n个状态,按任意顺序进行编号;即Q=q1,q2,q3,qn。使用记号Rijk代表字符串
9、的集合,具体定义为:,Rijk=w|*(qi,w)=qj,且对于w的任何前缀x(xw,x),如果*(qi,x)=ql,则lk,Rijk是所有那些将DFA从给定状态qi引导到状态qj,并且中间不经过(进入并离开)编号大于k的任何状态的所有字符串的集合,,要注意的是,i,j的大小与k的大小无关;显然,Rijn是所有那些将DFA从给定状态qi引导到状态qj的字符串的集合。,根据定义,可以得出如下的递推公式:a|(qi,a)=qj 若ijRij0=a|(qi,a)=qjU 若i=j,Rijk=Rikk-1(Rkkk-1)*Rkjk-1URijk-1(k=1,2,3,n),输入串w使DFA由状态qi到状
10、态qj,且中间不经过编号大于k的任何状态,只可能有两种情况:,(1)w在Rijk-1中,即中间不经过编号大于等于k(不超过k-1)的任何状态;(2)在由状态qi到状态qj的过程中,中间可能经过一个或者多个qk状态,即状态变化序列呈下述形式qiqkqkqkqj其中:在处出现的状态的编号均小于k;,从qiqk读过的w的子串属于Rikk-1,从qkqkqk读过的w的子串属于(Rkkk-1)*,从qkqj读过的w的子串属于Rkjk-1。现在证明,对于任何Rijk,存在正则表达式rijk能代表的Rijk,可采用对k的归纳法进行证明。,归纳基础:,k=0时,因为 a|(qi,a)=qj 若ijRij0=a
11、|(qi,a)=qjU 若i=j即Rij0是一个有穷集,其中每个元素,或是中的元素或是。,Rij0=a1+a2+ap 若ij 或Rij0=a1+a2+ap+若i=j 其中a1,a2,ap是使(qi,a)=qj的一切字母a的集合。,归纳步骤:,假设对lk的l,Rijl,都已经求出对应的正则表达式rijl代表Rijl,现考虑l=k,根据递推公式,存在正则表达式rijk=rikk-1(rkkk-1)*rkjk-1Urijk-1代表Rijk。,设DFA的接收状态集合F=qj1,qj2,qj3,qjp,因为q1是开始状态,qj是接收状态之一,R1jn表示状态q1到状态qj且中间不经过编号大于n的状态(因
12、为n是状态最大的编号,也就是说,对于中间经过的状态不加任何限制)所读过的字符串的集合,则,该DFA接收的语言对应的正则表达式为:r1j1n+r1j2n+r1jpn即 L(DFA)=R1j1nUR1j2nUUR1jpn=UR1fn qfF所以,对于任何Rijk,存在正则表达式rijk能代表的Rijk。证毕。,例4-3对于给定的DFA,给出对应的正则表达式。,k=0 k=1 k=2,r11k(00)*r12k 0 0 0(00)*r13k 1 1 0*1r21k 0 0 0(00)*r22k+00(00)*r23k 1 1+01 0*1r31k(0+1)(00)*0r32k 0+1 0+1(0+1
13、)(00)*r33k+(0+1)0*1,其中某些正则表达式已经被化简;例如r221=r210(r110)*r120+r220=0()*0+,可以化简为00+;,又例如r132=r121(r221)*r231+r131=0(+00)*(1+01)+1,由于(+00)*可以化简为(00)*,(1+01)可以化简为(+0)1,则r132=0(00)*(+0)1+1由于(00)*(+0)可以化简为0*,于是,r132=00*1+1=0*1,由于L(DFA)=R123UR133,所以,代表该语言的正则表达式为r123+r133,则r123=r132(r332)*r322+r122=0*1(+(0+1)0
14、*1)*(0+1)(00)*+0(00)*=0*1(0+1)0*1)*(0+1)(00)*+0(00)*,r133=r132(r332)*r332+r132=0*1(+(0+1)0*1)*(+(0+1)0*1)+0*1=0*1(0+1)0*1)*(+(0+1)0*1)+0*1=0*1(0+1)0*1)*D+(0+1)0*1)*(0+1)0*1)+)=0*1(0+1)0*1)*,因此 r123+r133=0*1(0+1)0*1)*(0+1)(00)*+0(00)*+0*1(0+1)0*1)*=0*1(0+1)0*1)*(0+1)(00)*+)+0(00)*,使用上述方法求一个DFA接收语言的正则
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有限 自动机 理论 正则 语言

链接地址:https://www.31ppt.com/p-5769298.html