编译原理 第2章习题课
- 格式:doc
- 大小:229.50 KB
- 文档页数:17
1.构造正规式的DFA。
(1)1(0|1)*101状态转换表:化简后得:(2)(a|b)*(aa|bb)(a|b)*化简后得;2.将下图确定化和最小化。
⇒解: 首先取A=ε-CLOSURE({0})={0},NFA确定化后的状态矩阵为:NFA确定化后的DFA为:⇒将A,B 合并得:⇒3.构造一个DFA ,它接受∑={0,1}上所有满足如下条件的字符串,每个1都有0直接跟在后边。
解:按题意相应的正规表达式是0*(0 | 10)*0*构造相应的DFA ,首先构造NFA 为DFA 为4.给出NFA等价的正规式R。
方法一:首先将状态图转化为得0,1消去其余结点NFA等价的正规式为(0|1)*11方法二:NFA→右线性文法→正规式A→0A|1A|1BB→1CC→εA=0A+1A+1BB=1A=0A+1A+11A=(0+1)*11→(0|1)*115.试证明正规式(a|b )*与正规式(a *|b *)*是等价的。
证明: (1)正规式(a|b)*的NFA 为=>其最简DFA 为(2)正规式(a*|b*)*的 NFA 为: 其最简化DFA 为:由于这两个正规式的最小DFA 相同,所以正规式(a|b)*等价于正规式(a*|b*)*。
6.设字母表∑={a,b},给出∑上的正规式R=b*ab(b|ab)*。
(1)试构造状态最小化的DFA M,使得L(M)=L(R)。
(2)求右线性文法G,使L(G)=L(M)。
解: (1)构造NFA:(2)将其化为DFA,转换矩阵为:再将其最小化得:(2)对应的右线性文法G=({X,W,Y},{a,b},P,X)P: X→aW|bX W→b Y|b y→a W|bY|b3.8文法G[〈单词〉]为:〈单词〉-〉〈标识符〉|〈整数〉〈标识符〉-〉〈标识符〉〈字母〉|〈标识符〉〈数字〉|〈字母〉〈整数〉-〉〈数字〉|〈整数〉〈数字〉〈字母〉-〉A|B|C〈数字〉|->1|2|3(1)改写文法G为G’,使L(G’)=L(G)。
(2)给出相应的有穷自动机。
解:(1)令D代表单词,I代表标识符,Z代表整数,有G’(D):D→I | ZI→A | B | C | IA | IB | IC | I1 | I2 | I3Z→1 | 2 | 3 | Z1 | Z2 | Z3(2) 左线性文法G’所对应的有穷自动机为:M=({S,D,I,Z},{1,2,3,A,B,C},f,S,{D})f: f(S,A)=I, f(S,B)=I, f(S,C)=If(S,1)=Z f(S,2)=Z f(S,3)=Zf(I,A)=I f(I,B)=I f(I,C)=If(I,1)=I f(I,2)=I f(I,3)=I f(I,ε)=If(Z,1)=Z f(Z,2)=Z f(Z,3)=Z f(Z, ε)=D3.10给出下述文法所对应的正规式。
S→0A|1BA→1S|1B→0S|0解: 相应的正规式方程组为:S=0A+1B ①A=1S+1 ②B=0S+0 ③将②,③代入①,得S=01S+01+10S+10 ④对④使用求解规则,得 (01|10)* (01|10)为所求。
3.4给出文法G[S],构造相应最小的DFA 。
S->aS|bA|b A-> aS方法一: S=aS+bA+b A=aSS=aS+baS+bS=(a+ba)*b即:S=(a|ba)*b正规式(a|ba)*b 对应的NFA :正规式(a|ba)*b 对应的DFA :化简后:b方法二:P43 右线性正规文法到有穷自动机的转换。
文法S->aS|bA|bA-> aS对应的NFA为:M=({S,A,D},{a,b},f,{S},{D})其中:f (S,a)=S, f(S,b)=A, f(S,b)=D, f(A,a)=S其NFA图为:⇒NFA确定化后的DFA为:⇒3.5给出下述文法所对应的正规式:S->aAA->bA+aB+bB->aA解:将文法改为:S=aA ①A=bA+aB+b ②B=aA ③将③代入②,得A=bA+aaA+b ④将④用求解规则,得A= (b|aa)*b ⑤,带入①得,S= a(b|aa)*b,故文法所对应的正规式为R= a(b|aa)*b。
3.6给出与下图等价的正规文法G。
答: 该有穷自动机为:M=({A,B,C,D},{a,b},f,{A},{C,D})其中f(A,a)=B, f(A,b)=D, f(B,a)=φ, f(B,b)=C, f(C,a)=A, f(C,b)=D, f(D,a)=B, f(D,b)=D根据其转换规则,与其等价的正规文法G为G=({A,B,C,D},{a,b},P,A),其中P : A→aB|bD B→bC C→aA|bD|εD→aB|b D|ε3.12.解释下列术语和概念:(1)确定有穷自动机答:一个确定有穷自动机M是一个五元组M=(Q,Σ,f,S,Z),其中:Q是一个有穷状态集合,每一个元素称为一个状态;Σ是一个有穷输入字母表,每个元素称为一个输入字符;f是一个从Q*Σ到Q的单值映射;f(qi ,a)=qj(qi,qj∈Q,a∈Σ)表示当前状态为qi ,输入字符为a时,自动机将转换到下一个状态qj,qj称为 qi 的一个后继状态。
我们说状态转换函数是单值函数,是指 f(qi,a)惟一地确定了下一个要转移的状态,即每个状态的所有输出边上标记的输入字符不同。
S∈Q,是惟一的一个初态;Z 真包含于Q,是一个终态集。
(2)非确定有穷自动机一个非确定有穷自动机M是一个五元组M=(Q,Σ,f,S,Z),其中:Q是一个有穷状态集合,每一个元素称为一个状态;Σ是一个有穷输入字母表,每个元素称为一个输入字符;状态转换函数是一个多值函数。
f(qi ,a)={某些状态的集合}(qi∈Q),表示不能由当前状态、当前输入字符惟一地确定下一个要转移的状态,即允许同一个状态对同一输入字符有不同的输出边。
S 包含于A,是非空初态集。
Z 真包含于 Q,是一个终态集。
(3)正规式和正规集有字母表Σ={a1,a2,…an},在字母表Σ上的正规式和它所表示的正规集可用如下规则来定义:(1)φ是Σ是的正规式,它所表示的正规集是φ,即空集{}。
(2)ε是Σ上的正规式,它所表示的正规集仅含一空符号串,即{ε} 。
(3)是Σ上的一个正规式,它所表示的正规集是由单个符号ai 所组成,即{ai}。
(4)e1和e2是Σ是的正规式,它们所表示的正规集分别为L(e1)和L(e2),则①e1 | e2是Σ上的一个正规式,它所表示的正规集为L(e1 | e2)=L(e1)∪L(e2).②e1e2是Σ上的一个正规式,它所表示的正规集为L(e1e2)=L(e1)L(e2).③(e1)*是Σ上的一个正规式,它所表示的正规集为L((e1)*)=L((e1))*.3.1构造下列正规式相应的DFA。
(1) 1 ( 0 | 1)*101(2)( a | b )*( aa | bb )( a | b )*(3)(( 0 | 1 )* | ( 11 ))*(4)( 0 | 11*0 )*3.2将下面图(a)和(b)分别确定化和最小化.⇒(a)a(b)3.3构造一个DFA,他接收∑={0,1}上所有满足如下条件的字符串,每个1都有0直接跟在右边。
3.4给出文法G[S],构造相应最小的DFA。
S aS | bA | bA aS3.5给出下述文法所对应的正规式:S->AaA->bA+aB+bB->aA3.6给出与下图等价的正规文法G。
⇒3.7给出与图3.29中的NFA等价的正规式R。
3.8 文法G[〈单词〉]为:〈单词〉〈标识符〉| 〈整数〉〈标识符〉〈标识符〉〈字母〉| 〈标识符〉〈数字〉|〈字母〉〈整数〉〈数字〉|〈整数〉〈数字〉〈字母〉 A | B | C〈数字〉 1 | 2 | 3(1)改写文法G为G’,使L(G’)=L(G).(2)给出相应的有穷自动机。
3.9试证明正规式(a|b)*与正规式(a*|b*)*是等价的。
3.10给出下述文法所对应的正规式:S 0A | 1BA 1S | 1B 0S | 03.11设字母表Σ={a,b},给出Σ上的正规式R=b*ab(b | ab)*.(1)试构造状态最小化的DFA M,使得L(M)=L(R)。
(2) 求右线性文法G,使L(G)=L(M)。
3.12解释下列术语和概念。
(1)确定有穷自动机(2)非确定有穷自动机(3)正规式和正规集。