编译原理作业二

系第三章课后作业(仅限布置作业的部分)。

1、构造下列正规式相应的 \(\text{DFA}\)

(1) \(1(0|1)^*101\)

解:先构造 \(\text{NFA}\)

然后,用子集法将 \(\text{NFA}\) 确定化

除 X, A 外,重新命名其他状态,令 AB 为 B、AC 为 C、ABY 为 D,因为 D 含有 Y(NFA 的终态),所以 D 为终态。

DFA 的状态图:

3、将下图的 NFA 确定化。

NFA

解:用子集法将 NFA 确定化:

重新命名状态子集,令 VQ 为 A、QU 为 B、VZ 为 C、V 为 D、QUZ 为 E、Z 为 F。

DFA 的状态图:

7、为正规文法 \(G[S]\)

\[ \begin{split} S &\rightarrow aA|bQ \\ A &\rightarrow aA|bB|b \\ B &\rightarrow bD|aQ \\ Q &\rightarrow aQ|bD|b \\ D &\rightarrow bB|aA \\ E &\rightarrow aB|bF \\ F &\rightarrow bD|aE|b \end{split} \]

构造相应的最小的 \(\text{DFA}\)

解:先构造其 NFA:

用子集法将 NFA 确定化:

将 S、A、Q、BZ、DZ、D、B 重新命名,分别用 0、1、2、3、4、5、6 表示。因为 3、4 中含有 z,所以它们为终态。

DFA 的状态图如下:

\(P_0 = (\{0, 1, 2, 5, 6\}, \{3, 4\})\) 用 b 进行分割;
\(P_1 = (\{0, 5, 6\}, \{1, 2\}, \{3, 4\})\) 再用 b 进行分割;
\(P_2 = (\{0\}, \{5, 6\}, \{1, 2\}, \{3, 4\})\) 再用 a、b 进行分割,仍不变。

再令 \(\{0\}\) 为 A,\(\{1, 2\}\) 为 B,\(\{3, 4\}\) 为 C,\(\{5, 6\}\) 为 D。

最小化为:

11、有一种用以证明两个正规表达式等价的方法,那就是构造它们的最小 DFA,表明这两个 DFA 是一样的(除了状态名不同外)。使用此方法。证明下面的正规表达式是等价的。

\[ \begin{split} (1)& \; (a|b)^* \\ (2)& \; (a^* | b^*)^* \\ \end{split} \]

解:

(1) 的 NFA 图如下

根据 NFA 构造最小的 DFA 如下:

(2) 的 NFA 图如下

根据 NFA 构造最小的 DFA 如下:

所以,由此可以证明 (1) 和 (2) 式正规式是等价的。


编译原理作业二
http://fanyfull.github.io/2021/10/07/编译原理作业二/
作者
Fany Full
发布于
2021年10月7日
许可协议