计算理论习题答案CHAP1newedit 联系客服

发布时间 : 星期三 文章计算理论习题答案CHAP1newedit更新完毕开始阅读8662752b915f804d2b16c1a6

加ε箭头不影响NFA识别语言,所以命题成立。

2.14 a 证明:设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的补集正则。 所以,正则语言类在补运算下封闭。

0 b. 设B为{0}。NFA M:

可识别它。

0 依题对它作变换,得到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属于Σ。

?(q,a)????1(q,a), 若q?F1 或 a????1(q,a)?{q1}, 若q?F1 且 a??

解:设N1识别语言A={至少含有一个1},其中输入字母表为{0,1},可知A*={空串或至少含有一个1}。 0,1 0,1 0,1 0,1 N1: N: 1 1

按上述规定构造N的状态图如上。可以看出L(N)={0,1}*不等于A*. 所以如此构? 造的N不一定识别A*.

1.16 使用定理2.19中给出的构造,把下图中的两台非确定型有穷自动机转换成等价的确定型有穷自动机。 ? a 1 2 a a,b a a), 1 2 b), a,b b 3 b

解:a), b)

a a a 12 a,b 121 1 a b b b b

a b a,b a,b ? 2 ? 23

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} ??Σ?ΣΣ?ΣΣΣ?ΣΣΣΣ?ΣΣΣΣΣ. h. {w | w是除11和111以外的任何字符} 0Σ*?10Σ*?110Σ*?111ΣΣ*. i. {w | w的奇位置均为1} (1Σ)*( ??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. (??a)b 成员:b,ab 非成员:a,bb h. (a?ba?bb) Σ* 成员:a,bb 非成员:?,b

1.21 使用引理2.32中叙述的过程,把图2-38中的有穷自动机转换成正则表达式。

a,b 1 a 2 a a), a b),

b b a 1 b 2 b 3

解: a) a*b(a?ba*b)*

b) ??(a?b)a*b[(aa?ab?b)a*b]*(a??). (注:答案不唯一)

1.29利用泵引理证明下述语言不是正则的。 a. A1={012 | n?0}。

证明:假设A1是正则的。设p是泵引理给出的关于A1的泵长度。

令S=012,

∵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=ababab,

∵S是A2的一个成员且S的长度大于p,所以泵引理保证S可被分成3段S=xyz且满足泵引理的3个条件。根据条件3,y中只含a,所以xyyz中第一个a的个数将比后两个a的个数多,故xyyz不是A2的成员。违反泵引理的条件1,矛盾。 ∴A2不是正则的。

c. A3={a2 | n?0}.(在这里,a2表示一串2个a .)

n

n

nnn

ppp

ppp

n

证明:假设A3是正则的。设p是泵引理给出的关于A3的泵长度。

令S= a2,

∵S是A2的一个成员且S的长度大于p,所以泵引理保证S可被分成3段S=xyz且满足泵引理的3个条件。即对任意的i?0,xyiz都应在A3中,且xyiz与xyi+1z的长度都应是2的幂. 而且xyi+1z的长度应是xyiz的长度的2倍(n?1)。于是可以选择足够大的i,使得|xyiz|=2>p. 但是|xyi+1z|-|xyiz|=|y|?p. 即|xyi+1z|<2∴A3不是正则的。

1.30下面“证明”0*1*不是正则语言,指出这个“证明”中的错误。(因为0*1*是正则的,所以一定错误。) 采用反证法证明。假设0*1*是正则的。令P是泵引定理给出的关于0*1*的泵长度。取S为字符串01。S是0*1*的一个成员,但是例2.38已证明S不能被抽取。于是得到矛盾,所以0*1*不是正则的。

解:在例2.38中的语言是{01 | n?0},取S为字符串01,S确实不能被抽取;但针对语言0*1*,S是能被抽取的。将S分成三段S=xyz,由泵引理的条件3,y仅包含0,而xyiz属于语言0*1*,即S能被抽取,故题设中的“证明”不正确。

1.24有穷状态转换器(FST)是确定性有穷自动机的一种类型。它的输出是一个字符串,而不仅仅是接受或拒绝。图2—39是两台有穷状态状态转换器T1和T2的状态图。

q1

0/0 1/1

a/1 1/0 2/1 a/0 b/1 b/0 2/1 q1 q2 b/1 q2 q3 0/0 a/1 T1 T2

FST的每一个转移用两个符号标记,一个指明该转移的输入符号,另一个指明输出符号。两个符号之间用斜杠“/”把它们分开。在T1中,从q1到q2的转移有输入符号2和输出符号1。某些转移可能有多对输入-输出,比如T1中从q1到它自身的转移。FST在对输入串w计算时,从起始状态开始,一个接一个地取输入符号w1?wn,并且比照输入标记和符号序列w1?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。

nn

pp

pp

n+1

n

n

p

, 矛盾。