第6789章作业及参考答案.docx

上传人:b****5 文档编号:11919290 上传时间:2023-04-16 格式:DOCX 页数:20 大小:239.40KB
下载 相关 举报
第6789章作业及参考答案.docx_第1页
第1页 / 共20页
第6789章作业及参考答案.docx_第2页
第2页 / 共20页
第6789章作业及参考答案.docx_第3页
第3页 / 共20页
第6789章作业及参考答案.docx_第4页
第4页 / 共20页
第6789章作业及参考答案.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

第6789章作业及参考答案.docx

《第6789章作业及参考答案.docx》由会员分享,可在线阅读,更多相关《第6789章作业及参考答案.docx(20页珍藏版)》请在冰豆网上搜索。

第6789章作业及参考答案.docx

第6789章作业及参考答案

 

第6789章作业及参考答案

第6章P231:

1、构造产生下列语言的CFG

(2){1n02m1n|n,m≥1}

解:

需保证1的个数相等且0的个数为偶数

S1S1|1A1

A00A|00

(4)含有相同个数的0和1的所有0、1串

S0AS|1BS|ε

A1|0AA

B0|1BB

错解1:

S10S|01S|10|01|ε

错解2:

S1S0|0S1|1A0|0A1,A10|01|ε(推不出0110)

错解3:

S→10S|1S0|S10|01S|0S1|S01|ε(推不出00111100)

讨论:

不能限制0和1必须在同一次推导中都出现

15、构造与下列文法(原题中去ε产生式后的文法)等价的CNF

S→a|b|aB|aBB|bA|bAA

B→aa|aB|Ba|aBa

A→bb|bbA

解:

第一步

S→a|b|BaB|BaBB|BbA|BbAA

B→BaBa|BaB|BBa|BaBBa

A→BbBb|BbBbA

Ba→a

Bb→b

第二步

S→a|b|BaB|BaB1|BbA|BbA1

B→BaBa|BaB|BBa|BaB2

A→BbBb|BbB3

Ba→a

Bb→b

B1→BB

A1→AA

B2→BBa

B3→BbA

讨论:

这种题需要将步骤写清,意义在于机械化这种事情是我们的目标,你不必加入太多自己的智慧.

Ba和Ba的区别?

第7章P257:

1、构造识别下列语言的PDA

(2)L={1n02m1n|n,m≥1}

要求

●用两种方法做

●用七元组表示

●用推广的状态转换图表示

解法1:

先构造产生该语言的GNF文法,再由文法推导的启示或依定理7-3的构造方法,设计出PDA

构造出产生该语言的CFG

S→1S1|1B1

B→00B|00

得到对应的GNF:

S→1SA|1BA

A→1

B→0C|0CB

C→0

构造PDAM1=({q},{0,1},{S,A,B,C},δ1,q,S,Φ)

其中δ1为:

δ1(q,1,S)={(q,SA),(q,BA)}

δ1(q,1,A)={(q,ε)}

δ1(q,0,B)={(q,C),(q,CB)}

δ1(q,0,C)={(q,ε)}

有N(M1)={1n02m1n|n,m≥1}

用推广的状态转换图如右所示:

提示,还可以仿照书中例题,加入终止状态qf及初始栈符号Z,使

N(M1)=L(M1)={1n02m1n|n,m≥1},注意:

如果要这样做,请加适当的说明

解法1拓展(2005级崔卫华的想法):

问能否把GNF中A→a中的a用作00

思考:

崔同学实际是想设计接受{1nam1n|n,m≥1}的PDA以简化,但又没有底气

这种想法很大胆(褒义的"大胆")

也是可行的.

过程是:

先设计PDA接受L={1nam1n|n,m≥1}这儿∑={1,a}

构造代换f:

f

(1)=1,f(a)=00,则f(L)就是我们要的∆={1,0}上的语言,PDA随之而定

只是未向同学们介绍如何利用代换设计PDA

解法2之一:

可以将PDA的工作分为3个阶段:

(1)接受1并记载的阶段;

(2)接受偶数个0的阶段;

(3)匹配1的阶段

设q0为开始状态,q1为接受1并记载的阶段,Z0为初始栈符号

δ2(q0,1,Z0)={(q1,AZ0)}

δ2(q1,1,A)={(q1,AA)}

q1状态下读入0将进入接受0的状态q2

δ2(q1,0,A)={(q2,BA)}

为了接受偶数个0,可设q3状态用于接受第2个0,这时只要将进入q2状态时压入的B出栈即可,q3状态下读入0的情形同q1状态下读入0时的情形

δ2(q2,0,B)={(q3,ε)}

δ2(q3,0,A)={(q2,BA)}

在q3状态下读入1且栈顶是A时,进入对1的匹配阶段

δ2(q3,1,A)={(q4,ε)}

q3状态下继续进入1和A的匹配

δ2(q4,1,A)={(q4,ε)}

正确的匹配应是q3状态下读完所有的符号,且栈中只余Z0

δ2(q4,ε,Z0)={(q5,ε)}

综上,设计的PDA为:

M2=({q0,q1,q2,q3,q4,q5},{0,1},{A,B,Z0},δ2,q0,Z0,{q5})

有L(M2)=N(M2)=L

用推广的状态转换图如下所示:

解法2之二:

可以将PDA的工作分为3个阶段:

(1)接受1并记载的阶段;

(2)接受偶数个0的阶段;

(3)匹配1的阶段

设q0为开始状态,q1为接受1并记载的阶段,Z0为初始栈符号

δ2(q0,1,Z0)={(q1,AZ0)}

δ2(q1,1,A)={(q1,AA)}

q1状态下读入0将进入接受0的状态q2,用栈符号B记忆

δ2(q1,0,A)={(q2,BA)}

q2状态读入0且栈顶为B,这时一定是第偶数个0,B被匹配,B出栈

δ2(q2,0,B)={(q2,ε)}

q2状态读入0且栈顶为A,这时已经出现过偶数个0,这个零为第奇数个0,将B压栈

δ2(q2,0,A)={(q2,BA)}

在q2状态下读入1且栈顶是A时,进入对1的匹配阶段

δ2(q2,1,A)={(q3,ε)}

q3状态下继续进入1和A的匹配

δ2(q3,1,A)={(q3,ε)}

正确的匹配应是q3状态下读完所有的符号,且栈中只余Z0

δ2(q3,ε,Z0)={(q4,ε)}

综上,设计的PDA为:

M2=({q0,q1,q2,q3,q4},{0,1},{A,B,Z0},δ2,q0,Z0,{q4})

有L(M2)=N(M2)=L

解法2之三(采纳2005级岳宝的思路,贺利坚改正并整理):

M2=({q0,q1,qf},{0,1},{A,B,Z0},δ2,q0,Z0,{qf})

在记忆阶段,用A记忆读入的0,B记忆读入的1,则有:

δ2(q0,1,Z0)={(q0,BZ0)}

δ2(q0,1,B)={(q0,BB)}

δ2(q0,0,B)={(q0,AB)}

δ2(q0,0,A)={(q0,AA)}

设计不确定的PDA,由记忆阶段转到匹配阶段:

δ2(q0,ε,A)={(q1,A)}

匹配阶段的工作,再匹配的0的个数与栈中A的个数必相等,即0必为偶数个:

δ2(q1,0,A)={(q1,ε)};

匹配阶段,再匹配的1的个数与栈中B的个数必相等:

δ2(q1,1,B)={(q1,ε)};

进入终态:

δ2(q1,ε,Z0)={(q2,ε)};

这样,有L(M2)=N(M2)=L

解法2之四(2005级孙磊提供,贺利坚加说明):

将L看作两部分,前面部分为1n0m,后面部分为0m1n

M2=({q0,q1,qf},{0,1},{A,B,Z0},δ2,q0,Z0,{qf})

其中:

q0:

处理句子的前半部分

q1:

处理句子的后半部分

qf:

终止状态

(1)在q0状态时先接受1并将B压入栈

δ2(q0,1,Z0)={(q0,BZ0)}

δ2(q0,1,B)={(q0,BB)}

(2)在q0状态栈顶为B时接受一个0,首先要将A压栈以记忆

δ2(q0,0,B)={(q0,AB)}

(3)在q0状态栈顶为A时接受一个0,可能是前半部分的0需要记忆,也可能是后半部分的0需要匹配

δ2(q0,0,A)={(q0,AA),(q1,ε)}

(注意不定义δ2(q0,1,A))

(4)在q1状态下对读入的0和1逐个地进行匹配

δ2(q1,0,A)={(q1,ε)}

δ2(q1,1,B)={(q1,ε)}

(5)当栈中只留Z0时,清栈且进入终止状态

δ2(q1,ε,Z0)={(qf,ε)}

这样,有L(M2)=N(M2)=L

解法2之四(2006级的“集体智慧”,贺利坚完善):

M2=({q0,q1,q2,qf},{0,1},{A,B1,B2,Z0},δ2,q0,Z0,{qf})

(1)q0状态:

在读入0之前,记载1的个数,每读入一个1,在栈中压入符号A

δ2(q0,1,Z0)={(q1,AZ0)}

δ2(q1,1,A)={(q1,AA)}

(2)在读到0后,0的个数为偶数个,第奇数个0,压入栈符号B1,第偶数个0时,用栈符号B2取代B1。

δ2(q1,0,A)={(q1,B1A)}

δ2(q1,0,B1)={(q1,B2)}

δ2(q1,0,B2)={(q1,B1)}

δ2(q1,1,B2)={(q2,ε)}

(3)在q2状态,匹配1

δ2(q2,1,A)={(q2,ε)}

δ2(q2,ε,Z0)={(qf,ε)}

有L(M2)=N(M2)=L

本题主要存在的问题:

(1)不写解题过程的说明,无法看清思路(考试中会强调一定要写过程)

(2)不写清接受方式:

以空栈方式接受或以终止状态接受或二者均可

(3)未画状态转移图(布置时有这一要求)

8、构造与下列文法等价的PDA

(1)S→aBB|bAA,B→aBB|aA|a,A→bBA|b

解:

(根据定理7-3证明中提供的构造方法完成)

有PDAM=({q},{a,b},{S,A,B},δ,q,S,Φ)

δ(q,a,S)={(q,BB)}

δ(q,b,S)={(q,AA)}

δ(q,a,B)={(q,BB),(q,A),(q,ε)}

δ(q,b,A)={(q,BA),(q,ε)}

从而N(M)=L(G)------一定要点出接受方式是以空栈方式接受

主要问题

(1)不按定理的方法构造:

PDAM=({p,q},{a,b},{S,A,B},δ,q,S,Φ)

!

学会机械化的构造方法

如果另起炉灶(鼓励这样做,唯有此才能前进,才能进步,这也是终极目标),但要先有前期工作.

不能突然而至,似有照猫画虎嫌疑,结果不猫不虎.

(2)按教材上的原题做:

S→aBB|bAA,B→aBB|aA|a,A→bBA|ε

有PDAM=({q},{a,b},{S,A,B},δ,q,S,Φ)

δ(q,a,S)={(q,BB)}

δ(q,b,S)={(q,AA)}

δ(q,a,B)={(q,BB),(q,A),(q,ε)}

δ(q,b,A)={(q,BA)}

δ(q,ε,A)={(q,ε)}

从而N(M)=L(G)

错误!

原因:

给出的CFG是GNF吗这能保证这一点,不能这么做.

按原题的正确做法是:

首先,ε∉L(G)

消除文法S→aBB|bAA,B→aBB|aA|a,A→bBA|ε中的空产生式,并转换为等价的GNF,有

S→aBB|bAA|bA|b,B→aBB|aA|a,A→bBA|bB

从而有PDAM=({q},{a,b},{S,A,B},δ,q,S,Φ)

δ(q,a,S)={(q,BB)}

δ(q,b,S)={(q,AA),(q,A),(q,ε)}

δ(q,a,B)={(q,BB),(q,A),(q,ε)}

δ(q,b,A)={(q,BA),(q,B)}

从而N(M)=L(G)

11、构造CFG,产生如下PDA用空栈接受的语言

(1)M=({q,p},{0,1},{A,B,C},δ,q,A,Φ)

δ(q,0,A)={(q,B),(q,BB)}

δ(q,1,A)={(q,C),(q,CC)}

δ(q,0,B)={(q,BB),(q,BBB),(p,ε)}

δ(q,1,B)={(q,CB),(q,CCB)}

δ(q,0,C)={(q,BC),(q,BBC)}

δ(q,1,C)={(q,CC),(q,CCC),(p,ε)}

δ(p,0,B)={(p,ε)}

δ(p,1,C)={(p,ε)}

解:

(根据定理7-4证明中提供的构造方法完成)

构造得CFGG=(V,{0,1},P,S),其中

V={S}∪{[pAp],[pBp],[pCp],[pAq],[pBq],[pCq],[qAp],[qBp],[qCp],[qAq],[qBq],[qCq]}

产生式集合P由以下产生式构成(约定符号pa,pb,pc∈{q,p}):

首先有:

S→[qAp]|[qAq]

由(q,B)∈δ(q,0,A)有[qApa]→0[qBpa],

因pa∈{q,p},展开有:

[qAp]→0[qBp]和[qAq]→0[qBq]

由(q,BB)∈δ(q,0,A)有[qApb]→0[qBpa][paBpb]

因pa,pb∈{q,p},展开有:

[qAp]→0[qBp][pBp],[qAq]→0[qBp][pBq],

[qAp]→0[qBq][qBp],[qAq]→0[qBq][qBq]

因pa∈{q,p}展开有[qAp]→0[qBp]和[qAq]→0[qBq]

由(q,C)∈δ(q,1,A)有[qApa]→1[qCpa],…….(以下同法展开)

由(q,CC)∈δ(q,1,A)有[qApb]→0[qCpa][paCpb]

由(q,BB)∈δ(q,0,B)有[qBpb]→0[qBpa][paBpb]

由(q,BBB)∈δ(q,0,B)有[qBpc]→0[qBpa][paBpb][pbBpc]

由(p,ε)∈δ(q,0,B)有[qBp]→0

由(q,CB)∈δ(q,1,B)有[qBpb]→1[qCpa][paBpb]

由(q,CCB)∈δ(q,1,B)有[qBpc]→1[qCpa][paCpb][pbBpc]

由(q,BC)∈δ(q,0,C)有[qCpb]→0[qBpa][paCpb]

由(q,BBC)∈δ(q,0,C)有[qCpc]→0[qBpa][paBpb][pbCpc]

由(q,CC)∈δ(q,1,C)有[qCpb]→1[qCpa][paCpb]

由(q,CCC)∈δ(q,1,C)有[qCpc]→1[qCpa][paCpb][pbCpc]

由(p,ε)∈δ(q,1,C)有[qCp]→1

由(p,ε)∈δ(p,0,B)有[pBp]→0

由(p,ε)∈δ(p,1,C)有[pCp]→1

可以对上面的CFG进行化简。

主要问题:

(1)有些同学看不懂问题:

要构造的是CFG

(2)要把五元组首先写出来

(3)我意想不到的错误

根据给定PDA,设计出相应的GNF:

A→0B|0BB|1C|1CC

B→0BB|0BBB|0|1CB|1CCB

C→0BC|0BBC|1CC|1CCC|1

(有些还在继续)则相应的CFG是:

A→0B|1C

B→0B|BB|1C|0

C→CB|1C|0BC|CC|1

(或者有些在这样继续,可能是在做补充题)构造与其等价的以终止状态接受的PDA是

M=(,,,,,,)……甚至M=(,,,,,,Φ)

补充题:

构造与11

(1)中PDA等价的以终止状态接受语言的PDAM’

11

(1)M=({q,p},{0,1},{A,B,C},δ,q,A,Φ)

δ(q,0,A)={(q,B),(q,BB)}

δ(q,1,A)={(q,C),(q,CC)}

δ(q,0,B)={(q,BB),(q,BBB),(p,ε)}

δ(q,1,B)={(q,CB),(q,CCB)}

δ(q,0,C)={(q,BC),(q,BBC)}

δ(q,1,C)={(q,CC),(q,CCC),(p,ε)}

δ(p,0,B)={(p,ε)}

δ(p,1,C)={(p,ε)}

解:

(根据定理7-4证明中提供的构造方法完成)

PDAM=({q,p},{0,1},{A,B,C},δ,q,A,Φ)

取PDAM’=({q,p,q02,qf},{0,1},{A,B,C,Z02},δ’,q02,Z02,{qf})

δ’的定义如下,

 ①M’进入M的开始状态:

δ’(q02,ε,Z02)={(q,AZ02)}

 ②M2完全模拟M1的移动:

 对于∀(q,a,Z)∈{q,p}×{0,1,ε}×{A,B,C},δ’(q,a,Z)=δ(q,a,Z),即有

δ’(q,0,A)=δ(q,0,A)={(q,B),(q,BB)}

δ’(q,1,A)=δ(q,1,A)={(q,C),(q,CC)}

δ’(q,0,B)=δ(q,0,B)={(q,BB),(q,BBB),(p,ε)}

δ’(q,1,B)=δ(q,1,B)={(q,CB),(q,CCB)}

δ’(q,0,C)=δ(q,0,C)={(q,BC),(q,BBC)}

δ’(q,1,C)=δ(q,1,C)={(q,CC),(q,CCC),(p,ε)}

δ’(p,0,B)=δ(p,0,B)={(p,ε)}

δ’(p,1,C)=δ(p,1,C)={(p,ε)}

 ③M的栈已空时,Z02成为栈中唯一符号,M’进入终止状态,以终态接受,有

δ’(q,ε,Z02)={(qf,ε)}和

δ’(p,ε,Z02)={(qf,ε)}

则L(M’)=L(M)

存在的问题:

(1)不写解题说明;

(2)PDAM’=(,,,,,,Φ)

6、构造PDAM,使L(M)=N(M)={1n0n|n≥1}{1n02n|n≥1}

解:

(1)首先构造PDAM1,使L(M1)=N(M1)={1n0n|n≥1},有

M1=({q1,q1f},{0,1},{A,Z1},δ1,q1,Z1,{q1f})

其中δ1定义为:

δ1(q1,1,Z1)={(q1,AZ1)}

δ1(q1,1,A)={(q1,AA)}

δ1(q1,0,A)={(q1,ε)}

δ1(q1,ε,Z1)={(q1f,ε)}

(2)再构造PDAM2,使L(M2)=N(M2)={1n02n|n≥1},有

M2=({q2,q2f},{0,1},{B,Z2},δ2,q2,Z2,{q2f})

其中δ2定义为:

δ2(q2,1,Z2)={(q2,BBZ2)}

δ2(q2,1,B)={(q2,BBB)}

δ2(q2,0,B)={(q2,ε)}

δ2(q2,ε,Z2)={(q2f,ε)}

(3)在M1和M2基础上构造PDAM,使L(M)=N(M)={1n0n|n≥1}{1n02n|n≥1}

M=({q0,qf,q1,q1f,q2,q2f},{0,1},{A,B,Z1,Z2,Z0},δ,q0,Z0,{qf})

其中δ定义为:

在M开始工作时,转入M1开始工作,栈底保留

δ(q,ε,Z0)={(q1,Z1Z0)}

M完全模拟M1的工作

对∀(q,a,Z)∈{q1,q1f}⨯{0,1,ε}⨯{A,Z1},δ(q,a,Z)=δ1(q,a,Z)

在M1本身的栈空且进入终止状态后,进入M2工作,栈底仍然保留

δ(q1f,ε,Z0)={(q2,Z2Z0)}

M完全模拟M2的工作

对∀(q,a,Z)∈{q2,q2f}⨯{0,1,ε}⨯{B,Z2},δ(q,a,Z)=δ2(q,a,Z)

在M2本身的栈空且进入终止状态后,进入M的终止状态且清空栈

δ(q2f,ε,Z0)={(qf,ε)}

这样,L(M)=N(M)={1n0n|n≥1}{1n02n|n≥1}

若仅构造以空栈方式接受的PDA,可用解法2(根据2006级岳光同的思路整理)

产生{1n0n|n≥1}的文法是:

S1→1S1A|1A,A→0

产生{1n02n|n≥1}的文法是:

S2→1S2BB|1BB,B→0

设计PDAM1=({q1},{0,1},{S1A},δ1,q1,S1,{})

δ1(q1,1,S1)={(q1,S1A),(q1,A)}

δ1(q1,0,A)={(q1,ε)}

有:

N(M1)={1n0n|n≥1}

设计PDAM2=({q2},{0,1},{S2,A},δ2,q2,S2,{})

δ2(q2,1,S2)={(q2,S2BB),(q2,BB)}

δ2(q2,0,B)={(q2,ε)}

有:

N(M2)={1n02n|n≥1}

增加一个开始状态q0,增加一个初始栈符号S,开始时使M1工作,同时在栈中置入M2的栈底符号,当M1的栈空后,进入M2工作,构造的PDAM是:

M=({q0,q1,q2},{0,1},{S,S1,S2,A,B},δ,q0,S,{})

δ(q0,ε,S)={(q1,S1S2)

δ(q1,1,S1)={(q1,S1A),(q1,A)}

δ(q1,0,A)={(q1,ε)}

δ(q1,ε,S2)={(q2,S2)

δ(q2,1,S2)={(q2,S2BB),(q2,BB)}

δ(q2,0,B)={(q2,ε)}

有N(M)={1n0n|n≥1}{1n02n|n≥1}

 

补充题:

构造产生(识别)语言L的CFG

    L={0n1n0m12m|n,m≥1}

解:

L(G)={0n1n0m12m|n,m≥1}={0n1n|n≥1}{0n12n|n≥1}

构造G1=({A},{0,1},{A→01|0A1},A),L(G1)={0n1n|n≥1}

构造G2=({B},{0,1},{B→011|0B11},A),L(G2)={0n12n|n≥1}

在G1和G2基础上可以构造出

G=({S,A,B},{0,1},{S→AB,A→01|0A1,B→011|0B11},S),

L(G)=L(G1)L(G2)

推荐:

对两个补充题,要有利用运算性质构造的意识

第9章P318

3、给出M处理4+3的过程

解:

输入4+3表示为00001000,则有

q000001000├0q20001000├00q2001000├000q201000├0000q21000├00000q2000

├000000

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1