📅  最后修改于: 2020-12-17 06:58:37             🧑  作者: Mango
要将RE转换为FA,我们将使用一种称为子集方法的方法。此方法用于从给定的正则表达式获取FA。该方法如下:
步骤1:使用带有NF动作的NFA设计给定正则表达式的转换图。
步骤2:将此带ε的NFA转换为不带ε的NFA。
步骤3:将获得的NFA转换为等效的DFA。
根据给定的正则表达式10 +(0 + 11)0 * 1。
解决方案:首先,我们将为给定的正则表达式构造过渡图。
第1步:
第2步:
第三步:
步骤4:
步骤5:
现在我们得到了不带ε的NFA。现在,我们将其转换为所需的DFA,首先将为此NFA编写一个过渡表。
State | 0 | 1 |
---|---|---|
→q0 | q3 | {q1, q2} |
q1 | qf | ϕ |
q2 | ϕ | q3 |
q3 | q3 | qf |
*qf | ϕ | ϕ |
等效的DFA为:
State | 0 | 1 |
---|---|---|
→[q0] | [q3] | [q1, q2] |
[q1] | [qf] | ϕ |
[q2] | ϕ | [q3] |
[q3] | [q3] | [qf] |
[q1, q2] | [qf] | [qf] |
*[qf] | ϕ | ϕ |
根据给定的正则表达式1(1 * 01 * 01 *)*设计NFA。
解决方案:给定正则表达式的NFA如下:
第1步:
第2步:
第三步:
为正则表达式0 * 1 + 10构造FA。
解:
我们将首先为R = 0 * 1 + 10构造FA,如下所示:
第1步:
第2步:
第三步:
步骤4: