计算理论课后习题答案
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
b
Φ
c
{f}
d
{f}
e
{f}
f
Φ
1
{d,b }{d,b} {f,d,b}
{d,b}
{f,d,b}
Φ
5.化简正规表达式 a(ε+aa)*(ε+a)b+b+φ(ab*+b)*。 解:上式=a(aa)*(ε+a)b+b 其中(aa)*(ε+a)代表集合: {ε,aa,aaaa,aaaaaa,…}{ε,a} = {ε,aa,aaaa,aaaaaa,…}{a,aaa,aaaaa,…} ={ε,a,aa,aaa,aaaa,aaaaa,aaaaaa,…}={a}* 于是上式=aa*b+b=a+ b+b= (a++ε)b= a*b
df
(b,c):
b
0 e
1
ca
(b,d) 0 1 : bef
df e
(c,d): 0 1 ca
df
(e,f): 0 1 edf
f de
得:bd, ef ,
aa ,cc
于是 K/{{a},{b,d},{c},{e,f}},
五.构造简化的有限自动机
定理2-5.1 给定DFA M=(K,∑,δ,q0,F),可根据引理2-1中 的算法构造出除去不可达状态的具有更少状态的DFA
q0’=[q0] ,
F’={[q1,q2,…,qi]|[q1,q2,…,qi]∈K’且{q1,q2,…,qi}∩F≠Φ} δ’ :K’×∑→K’,对[q1,q2,…,qi]∈K’, a∈∑,有
δ’([q1,q2,…,qi],a)=[p1,p2,…,pj] 当且仅当
δ({q1,q2,…,qi},a)={p1,p2,…,pj}
因为fCLOSURE(a)={a,b}, 所以F’=F={f} δ’ :q∈K,任何a∈∑, δ’(q,a)= (ˆq,a) 。
ε
ε a0
b c
1 ε
d ε
e
0 1
f
在计算 ˆ (q,a)时,要将a理解成a路径! 例如δ’(a,0)= (ˆa,0)={c,e,d,b} 。
δ’:
0
a {c,e,d,b}
F{F{q0} F
如果 ε- CL O U S0)U FR Φ E (q 否则
δ’ :对任何q∈K,任何a∈∑, δ’(q,a)= (qˆ,a) 。
公式(1):对于q∈K, , ˆ (q,ε)=ε-CLOSURE(q) 公式(2): 对于q∈K, w∈∑*, a∈∑,
ˆ (q,wa)=ε-CLOSURE(δ( (ˆq,w),a))
6.构造一个FA M,使得T(M)的正规表达式为 01+((0+1)*1)*。 解:1.分解表达式,找出基本单元:0,1,01,1。设计接收 这些基本单元的自动机如下:
q1 0 q2
q3 1 q4
q5 0 q6
q7 1 q8
q9 1 q10
2.组装: (按照优先权从高到低) 01+((0+1)*1)*
1
A0 B1 C
0
0,1
1
A
0 B
1
ε
C
S
0 0,1
ε
P={qap|δ(q,a)=p}∪{qa|δ(q,a)∈F}。
SA|C| ε A0B
B0A|0C|1C|0
C1A|1B|1
SA|C| ε
3.将G’逆转成左线性 文法G:
AB0 BA0|C0|C1|0 CA1|B1|1
方法2 1.先根据M构造右线性文法G’:
凡是符合要求的句子G都能产生出来; G产生出来的所有句子都是符合要求的。
(1) G=({S,A,B,C},{a,b,c},P,S)
P: S→ABC , A→aA|a, B→bB|b,C→cC|c
(2) G=({S,A,B,C},{a,b,c},P,S) P: S→aA , A→aA| bB, B→bB|cC, C→cC|ε
2.设计二个FA M1和M2,分别满足
T(M1)={02i∣i是自然数}
T(M2)={02i+1∣i=0,1,2,3,4,…}
解: M1 :
q0 0
0
q1
q3
0
0
q0
q1
0
M2 :
0
q0
q1
0
3. 给定NFA M1 =({p,q,r,s},{0,1},δ,p,{s}),如下表所示。
构造一个DFA M2,使得T(M1)=T(M2) 。
给定DFA M=(K,∑,δ,q0,F),
a 0 b1 f
p,q∈K, pq 对 x∈∑*, 有
1 0,1 0 1 1 0 0
δ(p,x)∈Fδ(q,x)∈F
c
如果pq 也称p与q是不可区分的。
e
0 1d
二.商集K/
三.的逆关系̷
p̷q x(x∈∑*∧(δ(p,x)∈Fδ(q,x)∈F))
x(x∈∑*∧ ((δ(p,x)∈F∧δ(q,x)F)∨(δ(p,x)F∧δ(q,x)∈F)))
D1→1D,E0→0E, E1→1E, C→ε, DC→B0C, EC→B1C,0B→B0,1B→B1 试写出句子01100110的派生过程。 解:SABC0ADC0AB0C01AE0C01A0EC 01A0B1C01AB01C011AE01C011A0E1C 011A01EC011A01B1C011A0B11C011AB011C 0110AD011C0110A0D11C0110A01D1C 0110A011DC0110A011B0C0110A01B10C 0110A0B110C0110AB0110C01100110C01100110
x(x∈∑*,使得δ(p,x)与δ(q,x)恰有一个在F中 )
如果p̷q, 称p与q是可区分的。判断p̷q是比较容易的。
4.判断可区分状态对的算法
引理2-1 设M=(K,∑,δ,q0,F)是DFA,则状态对(p,q)是可区分 的(即p̷q),当且仅当在下面算法中(p,q)格写上×。 begin 1.for p∈F,q∈K-F, do 给(p,q)格写×; 2.for F×F或(K-F)×(K-F)中每个状态对(p,q) (p≠q),do 3.if a∈∑,使得格(δ(p,a),δ(q,a))内已经写上×,then
K/{{a},{b,d},{c},{e,f}}={[a],[b],[c],[e]},([b]=[b,d],[e]={e,f})
K’= {[a],[b],[c],[e]} F’={[e]} M’=(K’,∑,δ’,[a], F’)
a 0 b1 f
=({[a],[b],[c],[e]},{0,1},δ’,[a],{[e]}) δ’([q],a)=[δ(q,a)]
(3) G=({S},{0,1},P,S) P: S→0S0|1S1|00|11
第二章 习题
1.设计一个有限自动机(FA) M,使得T(M)中的每个句
子w同时满足下面三个条件:
1) w∈{a,b,}*;
2) |w|是3的整数倍;
3) w以a开头,以b结尾。
解:
q0 a
q1 a,b q2 b q4
a,b q3 a,b
r= r122 r1 1(2 r2 1)2*r2 1 2r1 12 r1 1(2 r2 1)2 r1 12 r1 1(2r(2 1)2 ε ) r1 1(2 r2 1)2* 1*0(1*0ε) * 1*0(1*0) * (1*0)
8.将下面有限自动机简化(要求有简化过程)。
解:一.定义K上等价关系
ε ε
ε q1 0 q2 ε
ε q11
q13
ε q3
1
q4 ε
q12 ε
ε q14
q9
1 q10
ε
ε
ε
q16
q15
ε
ε
ε
q0
ε
q5 0 q6 ε q,求它所接收的语言T(M)的正
规表达式。 解:
10 0 q 1 q2
1
ri0j{a a 1 1 a a 2 2 .. .a .. m .a m
A0B|1C|1 (其中A是开始变元)
B0A|1C|0|1
1
A0 B1 C
0
0,1
C0B|1B
2.再将G’直接变成左线性文法G: 根据定理:
(1) Sα, 当且仅当 Sα∈P;
(2) Aiα, 当且仅当 SαAi∈P; (3) AiAjα, 当且仅当 AjαAi∈P; (4) SAjα, 当且仅当 Ajα∈P。 (1)由A1 得: A1
解:令 M2=(K’,∑, δ’, q0’,F’), 其中 K’2K,K’中的元素是由K的子集
δ0 1 p {p,q} {p} q {r } {r}
{q1,q2,…,qi}构成,但是要把子集
r {s} Φ
{q1,q2,…,qi}作为的一个状态看待,
s {s} {s}
因此把此子集写成[q1,q2,…,qi]。
K’={[p],[p,q],[p,r],[p,s],[p,q,r],[p,q,s],[p,r,s],[p,q,r,s]} F’ ={ [p,s],[p,q,s],[p,r,s],[p,q,r,s]}
4.将下面的ε-NFA M等价变换成NFA M’。
ε
ε a0
b c
1 ε
d ε
e
0 1
f
解:M’=(K, ∑, δ’,q0 ,F’),q0是M的开始状态,其中
执行此算法的结果用一个表表示,实际上,执行此算 法的过程就是向这个表内写入“×”的过程。
b× c ×× d ×?× e × × ×× f × × × × (b,d)
a b cde
a 0 b1 f
1 0,1 0 1 1 0 0
c
e
0 1d
(a,b): 0 1 (a,c): 0 1
ab
ab
be
ca
(a,d): 0 1 ab
对任何qpk任何a任何a如果有qaa中含有p则有产生式qapa无产生式无产生式无产生式无产生式无产生式将14代入后死循环去掉6后无产生式去掉56后无产生式47最后得
第一章 习题
1.给定文法G=({S,B,C,D,E},{0,1},P,S),其中P: S→ABC,AB→0AD,AB→1AE,AB→ε,D0→0D,
begin 4. 给(p,q)格写×; 5. 如果刚刚写上×的格内有先前写入的状态对,此状态对
的格同时也写入×。反复执行5, 直到写入×的格内没 有先前写入的状态对为止;
end else /** 格(δ(p,a),δ(q,a))内无× **/ 6.for 每个a∈∑, do 7.把(p,q)写入格(δ(p,a),δ(q,a))内,除非δ(p,a)=δ(q,a)。 end
r 1 0 11 ε r 1 0 20 r 2 0 11 r 2 0 20 ε
r1 12 r1 0(1 r1 0)1 *r1 0 2r1 02 (r1 0)1 r1 0 2r1 02 (r (1 0)1 ε)r1 02 (r1 0)1 *r1 02 (1ε)*01*0
r2 12 r2 0(1 r10)1*r10 2r2 02 1(1ε)*00ε 1* 100ε100ε(1ε)0ε1*0ε
11
0
[p,q,s] [p,r,s] [p,s] [p,q,r,s]
[p,q,r,s] [p,q,s] [p,q,s] [p,q,r,s]
[p,r,s]
[p,r] 1 [p,q,r]
[p,s] [p,s]
0
0
[p,q,s] 0 [p,q,r,s] 0
0
1 0
1
[p,r,s] 1 [p,s] 1 [p,r,s]
2.设计下列各文法G,使得它们分别是: (1)G是个上下文无关文法,且
L(G)={aibj ck ∣ i,j,k≥1}。 (2)G是个正规文法,且
L(G)={aibj ck ∣ i,j,k≥1}。 (3)G是个上下文无关文法,且
L(G)={ wwR∣w∈{0,1}+ }。其中wR是w的逆转,例 如w=001, 则wR=100. 解:设计一个文法G要验证:
ij ij }δ(qi,a k)qj (1km)
rikjrik k1(rkk k 1)*rkk j1rik j1
r 1 0 11 ε r 1 0 20 r 2 0 11 r 2 0 20 ε
因为M接收的语T言(M的 ) 正规表达r为 式 r=r122 r112(r212)*r212r112
所以只求 r112和r212即可。
1 0,1 0 1 1 0 0
c
e
0 1d
δ’: 0 1
[a] [b [c] [b] ][e] [e] [c] [a] [a] [e] [b [e]
]
[a] 0 [b]
1 0,1 0 0,1
[c]
[e]
1
9.给定DFA M如图所示。求一个左线性文法G,使得
L(G)=T(M)。 解:有两种方法。
方法1 1.先将M逆转成M’: 2.根据M’构造右线性文 法G’:
M’, 使得T(M’)=T(M)。 证明:先对M用引理2-1中的算法求出K/。再构造M’: M’=(K’,∑,δ’,[q0], F’),其中
K’={[q]| [q]∈K/且在M中q是从q0 可达的状态} F’={[q]| q∈F} δ’:对任何[q]∈K’,任何a∈∑,
δ’([q],a)=[δ(q,a)]
q0’=[p] , K’和F’以后确定。
δ0 1
δ’:
p {p,q} {p}
0
1
q {r } {r}
[p] [p,q]
[p]
[p,q] [p,q,r]
[p,r]
[p,r] [p,q,s]
[p]
r {s} Φ
s {s} {s} 1 [p] 0 [p,q]
[p,q,r] [p,q,r,s] [p,r]