计算理论习题解答文档格式.doc
《计算理论习题解答文档格式.doc》由会员分享,可在线阅读,更多相关《计算理论习题解答文档格式.doc(44页珍藏版)》请在冰豆网上搜索。
4)q1是起始状态
5)F1={q2}
M2=(Q2,Σ,δ2,q2,F2)其中
1)Q2={q1,q2,q3,q4};
3)δ2为:
q4
q1q2
q3q4
q2q1
q3q4
3)q2是起始状态
4)F2={q1,q4}
1.3DFAM的形式描述为({q1,q2,q3,q4,q5},{u,d},δ,q3,{q3}),其中δ在表2-3中给出。
试画出此机器的状态图。
q1
q5
q4
q2
q3
u
d
1.6画出识别下述语言的DFA的状态图。
a){w|w从1开始以0结束}
1
0,1
b){w|w至少有3个1}
c){w|w含有子串0101}
d){w|w的长度不小于3,且第三个符号为0}
e){w|w从0开始且为奇长度,或从1开始且为偶长度}
或
f){w|w不含子串110}
g){w|w的长度不超过5}
h){w|w是除11和111以外的任何字符}
i){w|w的奇位置均为1}
j){w|w至少含有2个0,且至多含有1个1}
k){ε,0}
l){w|w含有偶数个0,或恰好两个1}
m)空集n)除空串外的所有字符串
1.7给出识别下述语言的NFA,且要求符合规定的状态数。
a.{w|w以00结束},三个状态
b.语言{w|w含有子串0101,即对某个x和y,w=x0101y},5个状态.
e
c.语言{w|w含有偶数个0或恰好两个1},6个状态。
d.语言{0},2个状态。
e.语言0*1*0*0,3个状态。
f.语言{ε},1个状态。
g.语言0*,1个状态。
2.11证明每一台NFA都能够转换成等价的只有一个接受状态的NFA。
证明:
设NFAM={Q,Σ,δ,q0,F},F={ri1,……,rik}.添加一个状态p后,ri1,……,rik分别向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,∑,δ,q0,F},令N={Q,∑,δ,q0,Q-F},设ω=ω1ω2…ωn是字母表上任意字符串,因为M与N均为DFA,所以必然存在Q中状态序列r0,r1,…,rn,使得:
r0=q0,δ(ri,ωi+1)=ri+1,i=0,…,n-1
1)若rnÎ
F则ωÎ
B;
2)若rnÏ
F,则rnÎ
Q-F,即N接受ω,若ωÏ
B,
所以N接受B的补集,即B的补集正则。
所以,正则语言类在补运算下封闭。
b.设B为{0}。
NFAM:
可识别它。
依题对它作变换,得到N:
则N识别的语言{ε}不是B的子集。
所以交换M的接受状态与非接受状态得到的新的NFA不一定识别B的补集。
但是由于NFA识别的语言类与DFA识别的语言类相同,即正则语言类。
由a的证明,正则语言类在补运算封闭,可知,NFA识别的语言类---正则语言类在补运算下封闭。
若NFA识别语言A,必有等价的DFA识别A,从而由a知,可交换DFA的接受与非接受状态构造识别A的补集的DFA,则必有等价的NFA识别A的补集。
只是,该NFA未必有原NFA交换接受与非接受状态构造而成。
1.15给出一个反例,说明下述构造不能证明定理2.24,即正则语言类在星号运算下封闭。
设N=(Q1,Σ,δ1,q1,F1)识别A1。
如下构造N=(Q1,Σ,δ1,q1,F1)。
N应该识别A1*。
a.N的状态集是N1的状态集。
b.N的起始状态是N1的起始状态相同。
c.F={q1}∪F1。
F的接受状态是原来的接受状态加上它的起始状态。
d.定义δ如下:
对每一个q属于Q和每一个a属于Σ。
设N1识别语言A={至少含有一个1},其中输入字母表为{0,1},可知A*={空串或至少含有一个1}。
a,b
a
b
2
N1:
N:
按上述规定构造N的状态图如上。
可以看出L(N)={0,1}*不等于A*.所以如此构造的N不一定识别A*.
3
1.16使用定理2.19中给出的构造,把下图中的两台非确定型有穷自动机转换成等价的确定型有穷自动机。
a),b),
a),b)
23
123
Æ
12
2.13给出生成练习2.4中语言的正则表达式。
(注:
答案不唯一)
a.{w|w从1开始以0结束}1Σ*0.
b.{w|w至少有3个1}Σ*1Σ*1Σ*1Σ*.
c.{w|w含有子串0101}Σ*0101Σ*.
d.{w|w的长度不小于3,且第三个符号为0}ΣΣ0Σ*.
e.{w|w从0开始且为奇长度,或从1开始且为偶长度}0(ΣΣ)*È
1Σ(ΣΣ)*.
f.{w|w不含子串110}(0È
10)*1*.
g.{w|w的长度不超过5}eÈ
ΣÈ
ΣΣÈ
ΣΣΣÈ
ΣΣΣΣÈ
ΣΣΣΣΣ.
h.{w|w是除11和111以外的任何字符}0Σ*È
10Σ*È
110Σ*È
111ΣΣ*.
i.{w|w的奇位置均为1}(1Σ)*(eÈ
1).
j.{w|w至少含有2个0,且至多含有1个1}0*(00È
010È
001È
100)0*.
k.{ε,0}.εÈ
0.
l.{w|w含有偶数个0,或恰好两个1}(1*01*0)*1*È
0*10*10*.
m.空集.Æ
.
n.除空串外的所有字符串ΣΣ*.
1.19对下述每一个语言,给出4个字符串,2个是这个语言的成员,2个不是这个语言的成员。
这里假设字母表Σ={a,b}.
a.a*b*成员:
ab,aab非成员:
aba,ba
b.a(ba)*成员:
ab,abab非成员:
abb,aa
c.a*È
b*成员:
aaa,bbb非成员:
ab,ba
d.(aaa)*成员:
aaa,aaaaaa非成员:
a,aa
e.Σ*aΣ*bΣ*aΣ*成员:
aba,aaba非成员:
aa,abb
f.abaÈ
bab成员:
aba,bab非成员:
a,b
g.(eÈ
a)b成员:
b,ab非成员:
a,bb
h.(aÈ
baÈ
bb)Σ*成员:
a,bb非成员:
e,b
1.21使用引理2.32中叙述的过程,把图2-38中的有穷自动机转换成正则表达式。
a),b),
解:
a)a*b(aÈ
ba*b)*
b)eÈ
(aÈ
b)a*b[(aaÈ
abÈ
b)a*b]*(aÈ
e).
(注:
答案不唯一)
1.29利用泵引理证明下述语言不是正则的。
a.A1={0n1n2n|n³
0}。
证明:
假设A1是正则的。
设p是泵引理给出的关于A1的泵长度。
令S=0p1p2p,
∵S是A1的一个成员且S的长度大于p,所以泵引理保证S可被分成3段S=xyz且满足泵引理的3个条件。
根据条件3,y中只含0,xyyz中,0比1、2多,xyyz不是A1的成员。
违反泵引理的条件1,矛盾。
∴A1不是正则的。
b.A2={www|wÎ
{a,b}*}.
假设A2是正则的。
设p是泵引理给出的关于A2的泵长度。
令S=apbapbapb,
∵S是A2的一个成员且S的长度大于p,所以泵引理保证S可被分成3段S=xyz且满足泵引理的3个条件。
根据条件3,y中只含a,所以xyyz中第一个a的个数将比后两个a的个数多,故xyyz不是A2的成员。
∴A2不是正则的。
c.A3={a2n|n³
0}.(在这里,a2n表示一串2n个a.)
假设A3是正则的。
设p是泵引理给出的关于A3的泵长度。
令S=a2p,
∵S是A2的一个成员且S