计算理论习题答案 CHAP2 new

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,是栈字母表,

相关文档
最新文档