📜  将RE自动转换为FA

📅  最后修改于: 2020-12-17 06:58:37             🧑  作者: Mango

将RE转换为FA

要将RE转换为FA,我们将使用一种称为子集方法的方法。此方法用于从给定的正则表达式获取FA。该方法如下:

步骤1:使用带有NF动作的NFA设计给定正则表达式的转换图。

步骤2:将此带ε的NFA转换为不带ε的NFA。

步骤3:将获得的NFA转换为等效的DFA。

范例1:

根据给定的正则表达式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] ϕ ϕ

范例2:

根据给定的正则表达式1(1 * 01 * 01 *)*设计NFA。

解决方案:给定正则表达式的NFA如下:

第1步:

第2步:

第三步:

范例3:

为正则表达式0 * 1 + 10构造FA。

解:

我们将首先为R = 0 * 1 + 10构造FA,如下所示:

第1步:

第2步:

第三步:

步骤4: