CHAP2new
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.1 略。
2.2 a. 利用语言A={a m b n c n | m,n ≥0}和A={a n b n c m | m,n ≥0}以及例
3.20,证明上下文无关语言在交的运算下不封闭。
b. 利用(a)和DeMorgan 律(定理1.10),证明上下文无关语言在补运算下不封闭。
证明:a.先说明A,B 均为上下文无关文法,对A 构造CFG C 1
S →aS|T|ε
T →bTc|ε
对B,构造CFG C 2
S →Sc|R|ε
R →aRb
由此知 A,B 均为上下文无关语言。
但是由例3.20, A ∩B={a n b n c n |n ≥0}不是上下文无关语言,所以上下文无关语言在交的运算下不封闭。
b.用反证法。假设CFL 在补运算下封闭,则对于(a)中上下文无关语言A,B ,A ,B 也为CFL ,且CFL 对并运算封闭,所以B A ⋃也为CFL ,进而知道B A ⋃为CFL ,由DeMorgan 定律B A ⋃=A ∩B ,由此A ∩B 是CFL,这与(a)的结论矛盾,所以CFL 对补运算不封闭。
2.3 略。
2.4和2.5 给出产生下述语言的上下文无关文法和PDA ,其中字母表∑={0,1}。
a. {w | w 至少含有3个1} S →A1A1A1A A →0A|1A|ε
b. {w | w 以相同的符号开始和结束}
S →0A0|1A1 A →0A|1A|ε
c. {w | w 的长度为奇数} S →0A|1A A →0B|1B|ε
B →0A|1A
d. {w | w 的长度为奇数且正中间的符号为0}
S →0S0|1S1|0S1|1S0|0
0, ε→ε
0,ε→ε 0,ε→ε 1,ε→ε 0,ε→ε
e. {w | w
S →A1A A →0A1|1A0|1A|AA|ε
f. {w | w=w R }
S →0S0|1S1|1|0
g.
空集
S →S
2.6 给出产生下述语言的上下文无关文法:
a . 字母表{a,b}上a 的个数是
b 的个数的两倍的所有字符串组成的集合。 S →bSaSaS|aSbSaS|aSaSbS|ε
b .语言{a n b n |n ≥0}的补集。见问题
3.25中的CFG:
S →aSb|bY|Ta
T →aT|bT|ε
c .{w#x | w, x ∈{0,1}*
且w R 是x 的子串}。
S →UV
U →0U0|1U1|W
W →W1|W0|#
V →0V|1V|ε
d .{x 1#x 2#⋯#x k |k ≥1, 每一个x i ∈{a,b}* , 且存在i 和j 使得x i =x j R }。 S →UVW
U →A|ε
A →aA|bA|#A|#
V →aVa|bVb|#B|#
B →aB|bB|#B|#
W →B|ε
2.8 证明上下文无关语言类在并,连接和星号三种正则运算下封闭。
a. A ⋃B
方法一:CFG 。设有CFG G 1=(Q 1,∑,R 1,S 1)和G 2=(Q 2,∑,R 2,S 2)且L(G 1)=A, 0,ε→0 0,0→ε 0,ε→0 1,0→ε 0,1→ε 0,ε→0 0,0→ε
L(G 2)=B 。构造CFG G=(Q,∑,R,S 0),其中
Q= Q 1⋃Q 2⋃{S 0}, S 0是起始变元,R= R 1⋃R 2⋃{S 0→ S 1|S 2}.
方法二:PDA 。
设P 1=(Q 1,∑,Γ1,δ1,q 1,F 1)识别A ,P 2=(Q 1,∑,Γ2,δ2,q 2,F 2)是识别B 。
则如下构造的P=(Q,∑,Γ,δ,q 0,F)识别A ⋃B ,其中
1) Q=Q 1⋃Q 2⋃{q 0}是状态集,
2) Γ=Γ1⋃Γ2,是栈字母表,
3) q 0是起始状态,
4) F =F 1⋃F 2是接受状态集,
5) δ是转移函数,满足对任意q ∈Q, a ∈∑ε,b ∈Γε
δ(q,a,b)=.,)(,,)(,,,,),,,(),,,()},,(),,{(221102121else b Q q b Q q b a q q b a q b a q q q εεεδδεεΓ∈∈Γ∈∈===⎪⎪⎩
⎪⎪⎨⎧∅若若若 b. 连接AB
方法一:CFG 。设有CFG G 1=(Q 1,∑,R 1,S 1)和G 2=(Q 2,∑,R 2,S 2)且L(G 1)=A, L(G 2)=B 。构造CFG G=(Q,∑,R,S 0),其中
Q= Q 1⋃Q 2⋃{S 0}, S 0是起始变元,R= R 1⋃R 2⋃{S 0→ S 1S 2}.
方法二:PDA 。
设P 1=(Q 1,∑,Γ1,δ1,q 1,F 1)识别A ,P 2=(Q 1,∑,Γ2,δ2,q 2,F 2)是识别B ,而且P 1满足在接受之前排空栈(即若进入接受状态,则栈中为空)这个要求。
则如下构造的P=(Q,∑,Γ,δ,q 1,F)识别A ⋃B ,其中
1) Q=Q 1⋃Q 2是状态集,
2) Γ=Γ1⋃Γ2,是栈字母表,
3) q 1是起始状态,
4) F =F 1⋃F 2是接受状态集,
5) δ是转移函数,满足对任意q ∈Q, a ∈∑ε,b ∈Γε
δ(q,a,b)=.,,)(,),,,(),,(),(,),,,(,,)},,{(),,(,)(,),,,(222111211111else b Q q b a q b a F q b a q b a F q q b a q b F Q q b a q ∅Γ∈∈≠∈==∈⋃Γ∈-∈⎪⎪⎪⎩
⎪⎪⎪⎨⎧εεδεεδεεδδ若若若若
c. A *
方法一:CFG 。设有CFG G 1=(Q 1,∑,R 1,S 1),L(G 1)=A 。构造CFG G=(Q,∑,R,S 0),其中Q= Q 1 ⋃{S 0}, S 0是起始变元,R= R 1⋃{S 0→S 0S 0|S 1|ε}.
方法二:PDA 。
设P 1=(Q 1,∑,Γ1,δ1,q 1,F 1)识别A ,而且P 1满足在接受之前排空栈(即若进入接受状态,则栈中为空)这个要求。
则如下构造的P=(Q,∑,Γ,δ,q 1,F)识别A *,其中
1) Q=Q 1⋃{q 0}是状态集,
2) Γ=Γ1,是栈字母表,