计算理论习题解答Word下载.docx
《计算理论习题解答Word下载.docx》由会员分享,可在线阅读,更多相关《计算理论习题解答Word下载.docx(66页珍藏版)》请在冰豆网上搜索。
1
I){w|w含有偶数个0,或恰好两个1}
1-1.1
00
m)空集_
n)除空串外的所有字符串
1.7给出识别下述语言的NFA,且要求符合规定的状态数。
a.
{w|w以00结束},三个状态
b.语言{w|w含有子串0101,即对某个x和y,w=x0101y},5个状态.
c.
语言{w|w含有偶数个0或恰好两个1},6个状态。
d.语言{0},2个状态。
e.
语言0*1*0*0,3个状态。
g.语言0,1个状态。
一6。
2.11证明每一台NFA都能够转换成等价的只有一个接受状态的NFA。
证明:
设NFAM={Q,2,,q°
F},F={ri1,……,5}.添加一个状态p后,m……,环分别向p引&
箭头,将ri1,—,rik变为非接受状态,p变为接受状态。
又因为添加&
箭头不影响NFA识别语言,所以命题成立。
2.14a证明:
设M是一台语言B的DFA,交换M的接状态与非接受状态得到一台新的DFA,则这台新
的DFA是识别B的补集,因此,正则语言类受在补运算下封闭。
b举例说明:
设M是一台识别语言B的NFA,交换M的接受状态与非接受状态得到一台新的NFA,
这台新的NFA不一定识别B的补集。
NFA识别的语言类在补集下封闭吗?
解释你的回答。
解:
a.M是DFA,M是{Q,刀,S,q°
F},令N={Q,刀,S,q0,Q-F},设沪w血…伽是字母表上任意字符串,
因为M与N均为DFA,所以必然存在Q中状态序列ro,ri,…,n,使得:
ro=qo,S(仃,Q+i)=ri+i,
i=0,…,n-1
1)若5三F贝U3B;
2)若rMF则rn・Q-F,即N接受3,若3B,
所以N接受B的补集,即B的补集正则。
所以,正则语言类在补运算下封闭。
b.设B为{0}。
NFAM:
可识别它。
依题对它作变换,得到N:
识别B的补集。
但是由于NFA识别的语言类与DFA识别的语言类相同,即正则语言类。
由在补运算封闭,可知,NFA识别的语言类---正则语言类在补运算下封闭。
若NFA识别语言A,必有等价的DFA识别A,从而由a知,可交换DFA的接受与非接受状态构造识别A的补集的DFA,则必有等价的NFA识别A的补集。
只是,该NFA未必有原NFA交换接受与非接受状态构造而成。
1.15给出一个反例,说明下述构造不能证明定理2.24,即正则语言类在星号运算下封闭。
设N=(Qi,羽
i,qi,Fi)识别A1。
如下构造N=(Q1,声1,q1,F1)。
N应该识别A「。
a.N的状态集是N1的状态集。
b.N的起始状态是N1的起始状态相同。
c.F={qdUF1。
F的接受状态是原来的接受状态加上它的起始状态。
d.定义3如下:
对每一个q属于Q和每一个a属于2
(q,a)
d(q,a),若q老R或a®
<
d(q,a2{q1},若q迂R且an
设M识别语言A={至少含有一个1},其中输入字母表为{0,1},可知A*={空串或至少含有一个1}。
1.16使用定理2.19中给出的构造,把下图中的两台非确定型有穷自动机转换成等价的确定型有穷自动机。
2.13给出生成练习2.4中语言的正则表达式。
(注:
答案不唯一)
a.{wIw从1开始以0结束}1X0.
b.{wIw至少有3个1}丈1丈1工*1
c.{w|w含有子串0101}X0101X.
d.{w|w的长度不小于3,且第三个符号为0}XXX.
e.{wIw从0开始且为奇长度,或从1开始且为偶长度}0(XX*_.1XXX*.
f.{wIw不含子串110}(010)*1*.
g.{w|w的长度不超过5}.X_.XX.XXXXXXXXXXX
h.{wIw是除11和111以外的任何字符}0丈.102*.110X*.111X*.
i.{w|w的奇位置均为1}(1X)*(■■一1).
j.{w|w至少含有2个0,且至多含有1个1}0*(00一010一001一100)0*.
k.{§
0}.£
.Q
l.{wIw含有偶数个0,或恰好两个1}(1*01*0)*1*一0*10*10*.
m.空集.■:
'
.
n.除空串外的所有字符串xQ
1.19对下述每一个语言,给出
4个字符串,
2个是这个语言的成员,2个不是这个语言的成员。
这里假设
字母表2={a,b}.
**
a.ab
成员:
ab,aab
非成员:
aba,ba
*
b.a(ba)
ab,abab
abb,aa
c.a5
aaa,bbb
ab,ba
d.(aaa)
aaa,aaaaaa
a,aa
****
e.XaXbXaX
aba,aaba
aa,abb
f.aba_bab
aba,bab
a,b
g.(-a)b
b,ab
a,bb
h.(a_ba_bb)
£
成员
;
,b
1.21使用引理2.32中叙述的过程,把图
2-38中的有穷自动机转换成正则表达式。
.***
解:
a)ab(abab)
***
b)su(ajb)ab[(aaja2b)ab](ay).
(注:
1.29利用泵引理证明下述语言不是正则的。
nnn
a.Ai={012|n_0}。
假设Ai是正则的。
设p是泵引理给出的关于Ai的泵长度。
ppp
令S=012,
•••S是Ai的一个成员且S的长度大于p,所以泵引理保证S可被分成3段S=xyz且满足泵引理的3个条件。
根据条件3,y中只含0,xyyz中,0比1、2多,xyyz不是A1的成员。
违反泵引理的条件1,矛盾。
•••A1不是正则的。
b.A2={www|ww{a,b}}.
假设A2是正则的。
设p是泵引理给出的关于A2的泵长度。
人ppp
令S=ababab,
•••S是A2的一个成员且S的长度大于P,所以泵引理保证S可被分成3段S=xyz且满足泵引理的3个条件。
根据条件3,y中只含a,所以xyyz中第一个a的个数将比后两个a的个数多,故xyyz不是A2的成员。
违反泵引理的条件1,矛盾。
•A2不是正则的。
2门2门一n
c.A3={a|n_0}.(在这里,a表示一串2个a.)
假设A3是正则的。
设p是泵引理给出的关于A3的泵长度。
令S=a2P,
即对任意的「_0,xyiz都应在A3中,且xy"
z与xyi+1z的长度都应是2的幕.而且xyi+1z的
长度应是xyiz的长度的2倍(n_1)。
于是可以选择足够大的i,使得|xyiz|=2>
p.但是|xyi+z|-|xyiz|=|y^p.
n+1
即|xyz|<
2,矛盾。
•A3不是正则的。
1.30下面“证明”0*1*不是正则语言,指出这个“证明”中的错误。
(因为0*1*是正则的,所以一定错误。
)采用反证法证明。
假设0*1*是正则的。
令P是泵引定理给出的关于0*1*的泵长度。
取S为字符串0p1p。
S是0*1*的一个成员,但是例2.38已证明S不能被抽取。
于是得到矛盾,所以0*1*不是正则的。
nnpp**
在例2.38中的语言是{01|n_0},取S为字符串01,S确实不能被抽取;
但针对语言01,S
■i**
是能被抽取的。
将S分成三段S=xyz,由泵引理的条件3,y仅包含0,而xyz属于语言01,即卩S能被抽取,故题设中的“证明”不正确。
1.24有穷状态转换器(FST)是确定性有穷自动机的一种类型。
它的输出是一个字符串,而不仅仅是接受或拒
绝。
图2—39是两台有穷状态状态转换器T1和T2的状态图。
FST的每一个转移用两个符号标记,一个指明该转移的输入符号,另一个指明输出符号。
两个符号之间用
斜杠“/”把它们分开。
在T1中,从q1到q2的转移有输入符号2和输出符号1。
某些转移可能有多对输入-
输出,比如T1中从q1到它自身的转移。
FST在对输入串w计算时,从起始状态开始,一个接一个地取输入符号W1...Wn,并且比照输入标记和符号序列W「.Wn=W进行转移。
每一次沿一个转移走一步,输出对应
的输出符号。
例如,对输入2212011,机器T1依次进入状态q1,q2,q2,q2,q2,q1,q1,q1和输出1111000。
对输入abbb,T2输出1001。
给出在下述每一小题中机器进入的状态序列和产生的输出。
a.T1对输入串011,输出:
000,状态序列:
q1,q1,q1,q1.
b.T1对输入串211,输出:
111,状态序列:
q1,q2,q2,q2.
c.T1对输入串0202,输出:
0101,状态序列:
q1,q1,q2,q1,q2。
d.T2对输入串b,输出:
1,状态序列:
q1,q3.
e.T2对输入串bbab,输出:
1111,状态序列:
q1,q3,q2,q3,q2.
f.T2对输入串bbbbbb,输出:
110110,状态序列:
q1,q3,q2,q1,q3,q2,q1。
g.T2对输入串,输出:
状态序列:
q1。
1.25给出有穷状态转换器的形式定义。
有穷状态转换器FST是一个五元组(Q,工,r,3,q0)
1)Q是一个由穷集合,叫做状态集
2)工是一个由穷集合,叫做输入字母表
3)r是一个由穷集合,叫做输出字母表
4)3:
QX2QXr是转移函数
5)qo是起始状态
FST计算的形式定义:
M=(Q,2,r,3,q0)是一台由穷状态转换器,w=W1W2==Wn是输入字母表上的一个字符串。
若存在Q中
的状态序列:
「0,r1,…rn和输出字母表上的一个字符串s=S1…sn,满足下述条件:
1)S=q0;
2)3(ri,Wi+1)=(ri+1,s+1),i=0,1,“:
n-1
则M在W的输入下输出s.
1.26利用你给练习2.20的答案,给出练习2.19中画出的机器T1和T2的形式描述。
解:
有穷状态转换器T1的形式描述为:
T1=({q1,q2},{0,1,2},3,q1,{0,1})
其中转移函数为:
2
q1/0
q2/1
q〃0
有穷状态转换器T2的形式描述为:
T2=({{q1,q2,q3},{a,b},S,qi,{0,1})其中转移函数为:
a
b
q3/1
{0,1}。
它输出的字符串与输入
1010010。
1.27给出一台具有下述行为的FST的状态图。
它的输入、输出字母表都是
的字符串偶数为相同、奇数位相反。
例如,对于输入0000111,它应该输出
1.46证明:
pqp
s=010,q>
0。
由泵引理条件3知,
nmn
a)假设{010|m,n》0}是正则的,p是由泵引理给出的泵长度。
取
|xy|wp,故y—定由0组成,从而字符串xyyz中1前后0的数目不同,即xyyz不属于该语言,这与
泵引理矛盾。
所以该语言不是正则的。
b)假设{0n1n0}的补集是正则的,则根据正则语言在补运算下封闭可得{0n1n|n》0}是正则的,这与已
知矛盾,故假设不成立。
记c={0m1n|m^n},c为c的补集,「cQ0*1*={0n1nIn》0},已知{0n1n|n》0}不是正则的。
若「c是
正则的,由于0*1*是正则的,那么「cQ0*1*也应为正则的。
这与已知矛盾,所以「c不是正则的。
由
正则语言在补运算下的封闭性可知c也不是正则的。
c){w|w{0,1}*不是一个回文}的补集是{w|w{0,1}*是一个回文},设其是正则的,令p是由泵引理给
出的泵长度。
取字符串s=0p1q0p,显然s是一个回文且长度大于p。
由泵引理条件3知|xy|<
p,故y只
能由0组成。
而xyyz不再是一个回文,这与泵引理矛盾。
所以{w|w{0,1}*是一个回文}不是正则的。
由正则语言在补运算下的封闭性可知{w|w{0,1}*不是一个回文}也不是正则的。
1.31对于任意的字符串W=W1W2…Wn,w的反转是按相反的顺序排列w得到的字符串,记作wR,即
WR=Wn…W2W1。
对于任意的语言A,记AR={wR|-A}证明:
如果A是正则的,则AR也是正则的。
因为A是正则语言,所以可以用NFA来表示该语言,现在来构造AR的NFA,将NFAA中的接受态变
为中间态,起始态变为接受态,再添加一新的起始态,并用£
箭头连接至原来的接受态,其它所有的箭头
反向。
经过变换后得到NFA变成描述Ar的NFA.
1.32令
、3包括所有高度为3的0和1的列向量。
3上的字符串给出三行0和1的字符串。
把每一行看作一个二进制数,令
B={W三「3|w最下面一行等于上面两行的和
例如,
证明B是正则的。
由题设B的定义可知,w上面两行之和减去下面一行结果为零,由此可设计NFAM(Q,25q0,F),
其中'
=、3。
Q={qo,qi}。
qo状态表示上一次运算的进位为0,qi状态表示上一次运算的进位为1。
3由下表给出:
状态图为:
1.33令
q0
{q。
}
{q0}
{q0}
{q1}
{q1}
F={q0}
如下的NFA识别C:
其中状态qo,qi,q2分别表示目前读到的下面的数减上面
的数的
1.34
令
12=弓
匸2包含所有高度为令
D={w匚_2|w上一行大于下一行}。
证明D是正则的。
由题设可设计自动机M=(Q,2,§
q,F),其中Q={q1,q2},F={q2},
转移函数与状态图为:
{q2}
{q2}
1.35设刀2与问题2.26中的相同。
把每一行看作0和1的字符串,令E={w:
一二2*|w的下一行是上一行的反转},证明E不是正则的。
假设E是正则的,令p是有泵引理给出的泵长度。
1.36令Bn={ak|k是n的整数倍}。
证明对于每一个n-1,Bn是正则的。
设字母表刀为{a},贝Uan是一正则表达式。
所以,(an)*也是正则表达式。
由题意Bn=(an)*,即Bn
可以用正则表达式表示。
所以,Bn也是正则的。
1.37令Cn={x|x是一个二进制数,且是n的整数倍}。
证明对于每一个n_1,Cn是正则的。
下面的DFA识别Cn:
(正向读)
M=(Q,{0,1},:
q。
F),其中Q={0,1,2,…,n-1},
、(i,1)=2i+1modn,、(i,0)=(2imodn),i=0,1,2,…,n-1,
起始状态为0,F={0}.
这里i表示当前数modn余i.
下面的DFA识别CnR:
(反向读)
M=(Q,{0,1},…qo,F),其中Q={(i,j)|i,j=0,1,2,…,n-1},
、((i,j),1)=(2imodn,(2i+j)modn),、((i,j),0)=(2imodn,j),i,j=0,1,2,…,n-1
起始状态为(1,0),F={(i,0)|i=0,1,…,n-1}.
这里(i,j)表示当前数modn余j,而下一位所表示单位数modn余i(例如,若读下一位将达到k位,则
下一位所表示单位数为10k-1).
1.38考虑一种叫做全路径NFA的新型有穷自动机。
一台全路径NFAM是5元组(Q,、:
:
.,q°
F).如果M
对X."
的每一个可能的计算都结束在F中的状态,则M接受X。
注意,相反的,普通的NFA只需有一个计算结束在接受状态,就接受这个字符串。
全路径NFA识别正则语言。
一个DFA一定是一个全路径NFA。
所以下面只需证明,任意全路径NFA,都有一个与之等价
的DFA。
设有一全路径NFAN=(Q,Z5q。
F),构造一个新与N等价的全路径NFA
N1=(Q1,Z§
1,q0,F),其中Q1=Q_.{s},s9。
对于任意q:
=Q1,a:
二Z
克q,a),q丰s,且§
q,a)
§
i(q,a)={s},q丰s,且§
q,a)=0;
{§
},q=s.
现在来构造一个与全路径NFAN1等价的DFAM=(Q2,Z込q1,F2).其中
1)Q2=Power(Q1),即Q1的所有子集组成的集合(也即Q1的幕集);
2)定义函数E:
Q2Q2为:
对任意RQ2,E(R)二「(r,;
);
1•击
3)q1=E(q0);
4)对于任意的R属于Q2,a属于Z、:
2(R,a)=E;
•站(r,a).
J
5)F2={RQ2|R-F}。
综上所述,DFA等价于全路径NFA。
1.40如果存在字符串z使得xz=y,则称字符串x是字符串y的前缀。
如果x是y的前缀且x刊,则称x是y的真前缀。
下面每小题定义一个语言A上的运算。
正则语言类在每个运算下封闭。
a)NOPREFIX(A)={A|3的任意真前缀都不是A的元素}
b)NOEXTEND(A)={A|3不是A中任何字符串的真前缀}
假设DFAM=(Q,Z§
q0,F)识别语言A。
a)构造NFAN1=(Q,Z讯q。
F)识别语言NOPREFIX(A)。
其中,
^(q,a)},q€Q-F,a式名;
对任意q乏F,a乏Z£
®
(q,a)=*0,q^F;
L0,q€Q,a=E
所以,即NOPREFIX(A)为正则语言,亦即正则语言类A在NOPREFIX(A)运算下封闭。
■
b)构造NFAN2=(Q,Z,§
q0,F2)识别语言NOEXTEND(A)。
F2构造如下:
对M中的任一接受状态qi,若存在一条从它出发到达某接受状态(含本身)的路径,则将状态qi改为非
接受状态;
最后剩下的接受状态集记为F2.所得的NFAN2即识另UNOEXTEND(A)。
所以,
NOEXTEND(A)为正则语言,亦即正则语言类A在运算NOEXTEND(A)下封闭。
・
1.48证明:
构造NFAN如下:
由于该NFA识别D,故D是正则语言。
1.50参见练习1.24中给出的有穷状态转换器的非形式定义。
证明不存在FST对每一个输入w能够输出wR,
其中输入和输出的字母表为{0,1}。
假设存在一台FST对每个输入w能够输出wR。
则对于输入串W1=100,w2=101.
该FST可分别输出W1R=001,w2R=101,于是对于它的起始状态和输入字符1,会输出1和0两个
不同字符,这与FST是确定性有穷自动机相矛盾。
所以,不存在一台FST对每个输入w能够输出wR。
1.51
1)自反性。
即对任意字符串x,x三lx。
这是因为对于每个字符串z均有xz和xz同时是或不是L的
成员。
2)对称性。
即对任意字符串x和y,若x三Ly,贝Uy三lx。
这是因为若x三Ly,则对于每个字符串乙xz
和yz同时是或不是L的成员,那么yz和xz同时是或不是L的成员,于是y三Lx。
3)传递性。
即对任意字符串x,y和乙若x三Ly且y三lz,贝Ux=lz。
这是因为对任意字符串u,由x=Ly
知xu和yu同时是或不是L的成员,由y三lz知yu和zu同时是或不是L的成员,所以xu和zu同时是或不是L的成员,此即x三Lz。
综上所述,\是自反的,对称的,传递的,所以是一个等价的关系。
1.53令2={0,1