1.写出表示下列语言的正则表达式。⑴{0,1}*。解:所求正则表达式为:(0+1)*。⑵{0,1}+。解:所求正则表达式为:(0+1)+。⑶{x│x∈{0,1}+且x中不含形如00的子串}。解:根据第三章构造的FA,可得所求正则表达式为:1*(01+)*(01+0+1)。⑷{x│x∈{0,1}*且x中不含形如00的子串}。解:根据上题的结果,可得所求正则表达式为:ε+1*(01+)*(01+0+1)。⑸{x│x∈{0,1}+且x中含形如10110的子串}。解:所求正则表达式为:(0+1)*10110(0+1)*。⑹{x│x∈{0,1}+且x中不含形如10110的子串}。解:根据第三章的习题,接受x的FA为:要求该FA对应的正则表达式,分别以q0、q1、q2、q3、q4为终结状态考虑:q0为终态时的正则表达式:(0*(11*0(10)*(ε+111*11*0(10)*)0)*)*q1为终态时的正则表达式:0*1(1*(0(10)*111*1)*(0(10)*00*1)*)*S0110q0q1q2101110q3q4q2为终态时的正则表达式:0*11*0((10)*(111*11*0)*(00*11*0)*)*q3为终态时的正则表达式:0*11*0(10)*1(11*11*0((10)*(00*11*0)*)*1)*q4为终态时的正则表达式:0*11*0(10)*11(1*(11*0((00*11*0)*(10)*)*11)*)*将以上5个正则表达式用“+”号相连,就得到所要求的正则表达式。⑺{x│x∈{0,1}+且当把x看成二进制数时,x模5与3同余和x为0时,│x│=1且x≠0时,x的首字符为1}。解:先画出状态转移图,设置5个状态q0、q1、q2、q3、q4,分别表示除5的余数是0、1、2、3、4的情形。另外,设置一个开始状态q.由于要求x模5和3同余,而3模5余3,故只有q3可以作为终态。由题设,x=0时,│x│=1,模5是1,不符合条件,所以不必增加关于它的状态。下面对每一个状态考虑输入0和1时的状态转移。q:输入1,模5是1,进入q1。q0:设x=5n。输入0,x=5n*2=10n,模5是0,故进入q0输入1,x=5n*2+1=10n+1,模5是1,故进入q1q1:设x=5n+1。输入0,x=(5n+1)*2=10n+2,模5是2,故进入q2输入1,x=(5n+1)*2+1=10n+3,模5是3,故进入q3q2:设x=5n+2。输入0,x=(5n+2)*2=10n+4,模5是4,故进入q4输入1,x=(5n+2)*2+1=10n+5,模5是0,故进入q0q3:设x=5n+3。输入0,x=(5n+3)*2=10n+6,模5是1,故进入q1输入1,x=(5n+3)*2+1=10n+7,模5是2,故进入q2q4:设x=5n+4。输入0,x=(5n+4)*2=10n+8,模5是3,故进入q3输入1,x=(5n+4)*2+1=10n+9,模5是4,故进入q4则状态转移图如下:则所求的正则表达式为:1(010*1+(1+001*0)(101*0)*(0+110*1))*(1+001*0)(101*0)*⑻{x│x∈{0,1}+且x的第10个字符是1}。解:所求正则表达式为:(0+1)91(0+1)*。⑼{x│x∈{0,1}+且x以0开头以1结尾}。解:所求正则表达式为:0(0+1)*1。⑽{x│x∈{0,1}+且x中至少含两个1}。解:所求正则表达式为:(0+1)*1(0+1)*1(0+1)*。⑾{x│x∈{0,1}*和如果x以1结尾,则它的长度为偶数;如果x以0结尾,则它的长度为奇数}。解:所求正则表达式为:(0+1)2n+11+(0+1)2n0(n∈N)或0+(0+1)((0+1)(0+1))*1+(0+1)(0+1)((0+1)(0+1))*0。q1q1S01q2q30q410101q001⑿{x│x是十进制非负实数}。解:首先定义∑={.,0,1,2,3,4,5,6,7,8,9}则所求正则表达式为:(0+1+…+9)*.(0+1+…+9)*。⒀Φ。解:所求正则表达式为:Φ。⒁{ε}。解:所求正则表达式为:ε。*********************************************************************************2.理解如下正则表达式,说明它们表示的语言(1)(00+11)+表示的语言特征是0和1都各自成对出现(2)(1+0)*0100+表示的语言特征是以010后接连续的0结尾(3)(1+01+001)*(+0+00)表示的语言特征是不含连续的3个0(4)((0+1)(0+1))*+((0+1)(0+1)(0+1))*表示所有长度为3n或2m的0,1串(n0,m0)(5)((0+1)(0+1))*((0+1)(0+1)(0+1))*表示所有长度为3n+2m的0,1串(n0,m0)(6)00+11+(01+10)(00+11)*(10+01)表示的语言特征为长度为偶数n的串.当n=2时,是00或11的串。n4时,是以01或10开头,中间的子串00或11成对出现,最后以10或01结尾的串*********************************************************************************************4.3.证明下列各式(1)结合律(rs)t=r(st)(r+s)+t=r+(s+t)1)证明对x∈(rs)t总可以找到一组x1x2x3使得x=x1x2x3其中x3∈tx1x2∈rs且x1∈r,x2∈s,则x2x3∈st因此x1(x2x3)∈r(st)即x1x2x3∈r(st)x∈r(st)得证因此(rs)tr(st)同理可证r(st)(rs)t则(rs)t=r(st)成立2)证明对x∈(r+s)+tx∈(r+s)或x∈t对于x∈r+sx∈r或r∈s,因此x∈r或x∈s或x∈tx∈r或x∈(s+t)x∈r+(s+t)所以(r+s)+tr+(s+t)同理可证r+(s+t)(r+s)+t则(r+s)+t=r+(s+t)成立(2)分配律r(s+t)=rs+rt(s+t)r=sr+tr1)证明对于x∈r(s+t)总可以找到x1x2使得x=x1x2其中x1∈r,x2∈(s+t)由x2∈(s+t)x2∈s或x2∈t则x1x2∈rs或x1x2∈rt所以r(s+t)rs+rt对于x∈rs+rtx∈rs或x∈rt且总可以找到一组x1x2使得x=x1x2其中x1∈r,x2∈s或x1∈r,x2∈tx1∈r,x2∈s或x2∈tx1∈r,x2∈(s+t)x1x2∈r(s+t)所以rs+rtr(s+t)则r(s+t)=rs+rt2)证明对于x∈(s+t)r总可以找到x1x2使得x=x1x2其中x1∈(s+t),x2∈r由x1∈(s+t)x1∈s或x1∈t则x1x2∈sr或x1x2∈tr所以(s+t)rsr+tr对于x∈sr+trx∈sr或x∈tr且总可以找到一组x1x2使得x=x1x2其中x1∈s,x2∈r或x1∈t,x2∈rx1∈s或x1∈t,x2∈rx1∈(s+t),x2∈rx1x2∈(s+t)r所以sr+tr(s+t)r则(s+t)r=sr+tr(3)交换律r+s=s+r证明对于x∈r+sx∈r或x∈sx∈s或x∈rx∈s+r所以r+ss+r同理可证s+r∈r+s则r+s=s+r(4)幂等律r+r=r证明对于x∈r+rx∈r或x∈rx∈r所以r+rr对于x∈rx∈r或x∈rx∈r+r所以rr+r因此r+r=r(5)加法运算零元素:r+=r证明对于x∈r+x∈r或x∈x∈r所以r+r对于x∈rx∈r或x∈x∈r+所以rr+因此r+=r(6)乘法运算单位元:rε=εr=r证明:∵对xRx=x=x∴R{}={}R=R∴r=r=r(7)乘法运算零元素:r=r=证明:∵对xRx=x=∴R{}={}R=R∴r=r=(8)*=ε证明*=0∪1∪2∪3…...=ε∪1∪2∪3…...=ε(9)(r+ε)*=r*由第一章的作业1.30中的第九题(L1∪{ε})*=L1*其中L1为正则语言又r为正则表达式正则语言可以用正则表达式表示,因此显然有(r+ε)*=r*成立(10)(r*s*)*=(r+s)*由第一章的作业1.30中的第八题(L2∪L1)*=(L2*L1*)*其中L1、L2为正则语言又r、s为正则表达式正则语言可以用正则表达式表示,因此显然有(r+s)*=(r*s*)*成立即(r*s*)*=(r+s)*成立(11)(r*)*=r*由第一章的作业1.30中的第三题(L1*)*=L1*其中L1为正则语言又r为正则表达式正则语言可以用正则表达式表示,因此显然有(r*)*=r*成立*********************************************************************************4下面各式成立吗?请证明你的结论(1)(r+rs)*r=r(sr+r)*证明:成立。如果对所有的k=0,(r+rs)kr=r(sr+r)k成立,则(r+rs)*r=r(sr+r)*肯定成立可以用归纳法证明(r+rs)kr=r(sr+r)k对所有的k=0成立I.k=0时候,(r+rs)0r=r=r(sr+r)0II.假设k=n时候(r+rs)nr=r(sr+r)n成立,往证k=n+1时候结论成立(r+rs)n+1r=(r+rs)n(r+rs)r=(r+rs)n(rr+rsr)=(r+rs)nr(r+sr)=r(sr+r)n(r+sr)=r(sr+r)n(sr+r)=r(sr+r)n+1这就是说,结论对k=n+1成立,即证明了(r+rs)kr=r(sr+r)k对所有的k=0成立,所以(r+rs)*r=r(sr+r)*(2)t(s+t)r=tr+tsr证明:不成立。不妨取r=0,s=1,t=2,则t(s+t)r=2(1+2)0=210+230,但tr+tsr=20+210.(3)rs=sr证明:不成立。不妨取r=0,s=1,显然rs=01,而sr=10.(4)s(rs+s)*r=rr*s(rr*s)*不成立,假设r,s分别是表示语言R,S的正则表达式,例如当R={0},S={1},L(s(rs+s)*r)是以1开头的字符串,而L(rr*s(rr*s)*)是以0开头的字符串.L(s(rs+s)*r)L(rr*s(rr*s)*)所以s(rs+s)*rrr*s(rr*s)*,结论不成立(5)(r+s)*=(r*s*)*证明:结论成立。I.L(r+s)=L(r)L(s),L(r)=L(rs0)L(r*s*),L(s)=L(r0s)L(r*s*)那么L(r+s)=L(r)L(s)L(r*s*),(L(r+s))*(L(r*s*))*,L((r+s)*)L((r*s*)*),所以(r+s)*(r*s*)*II.(r+s)*=((r+s)*)*,对任意m,n=0,rmsn(r+s)m+n,所以r*s*(r+s)*(r*s*)*((r+s)*)*=(r+s)*由I,II可以知道(r*s*)*(r+s)*,(r+s)*(r*s*)*得到(r+s)*=(r*s*)*(6)(r+s)*=r*+s*不成立,假设r,s分别是表示语言R,S的正则表达式,例如当R={0},S={1},L((r+s)*)={x|x=或者x是所有由0,1组成的字符串}L(r*+s*)=L(r*)L(s*)={,0,00,000,……}{,1,11,111,……}L((r+s)*)L(r*+s*),例如10L((r+s)*),10L(r*+s*)*************************************