如何将带有 ε 的 NFA 转换为 DFA?(理论计算机科学)
在这个方法中,我们首先将带有 ε 的非确定性有限自动机 (NFA) 转换为不带 ε 的 NFA。
然后,不带 ε 的 NFA 可以转换为其等效的确定性有限自动机 (DFA)。
转换方法
将带有 ε 的 NFA 转换为 DFA 的方法解释如下:
步骤 1 - 假设 M={Q, Σ, δ,q0,F) 是带有 ε 的 NFA。我们必须将这个带有 ε 的 NFA 转换为等效的 DFA,记为
M0=(Q0,Σ, δ0,q0,F0)
然后得到:
ε-闭包(q0) ={p1,p2,p3,……pn}
然后 [p1,p2,p2,….pn] 成为 DFA 的起始状态
现在 [p1,p2,p3,….pn] ∈ Q0
步骤 2 - 我们将为每个输入获得 [p1,p2,p3,…pn] 上的 δ 转移。
δ 0([p1,p2,p3,..pn],a) = ε-闭包(δ(p1,a) U δ(p2,a2)U……………… δ(pn,a))
= U (i=1 to n) ε-闭包 d(pi,a)
其中 a 是输入 ∈Σ
步骤 3 - 获得的状态 [p1,p2,p3,…pn] ∈ Q0。
包含最终状态 pi 的状态是 DFA 中的最终状态
示例
将以下带有 epsilon 的 NFA 转换为等效的 DFA
解答
考虑以下用于将带有 epsilon 的 NFA 转换为 DFA 的 NFA:
为了转换这个带有 epsilon 的 NFA,我们将首先找到 ε-闭包,如下所示:
- ε-闭包(q0)={q0,q1,q2}
- ε-闭包(q1)={q1,q2}
- ε-闭包(q2)={q2}
让我们从起始状态的 ε-闭包开始,如下所示:
当 ε-闭包(q0)={q0,q1,q2} 时,我们将此状态称为 A。
现在,让我们找到对 A 的每个输入符号的转移,如下所示:
δ'(A, a) = ε-closure(δ(A,a)) = ε-closure(δ(q0,q1,q2), a)) = ε-closure(δ(q0, a) ∪ δ(q1,a) U δ(q2,a) ) = ε-closure(ΦUq1 ∪q2) = ε-closure(q1) = {q1, q2} let us call it as state B δ'(A, b) = ε-closure(δ(A,b)) = ε-closure(δ(q0,q1,q2), b)) = ε-closure(δ(q0, b) ∪ δ(q1,b) U δ(q2,b) ) = ε-closure(q0 U Φ∪q0) = ε-closure(q0) = {q0,q1, q2} its nothing but state A δ'(B, a) = ε-closure(δ(B,a)) = ε-closure(δ(q1,q2), a)) = ε-closure(δ(q1,a) U δ(q2,a) ) = ε-closure(q1 ∪q2) = ε-closure(q1) = {q1, q2} its nothing but state B δ'(B, b) = ε-closure(δ(B,b)) = ε-closure(δ(q1,q2), b)) = ε-closure(δ(q1,b) U δ(q2,b) ) = ε-closure(Φ∪q0) = ε-closure(q0) = {q0,q1, q2} its nothing but state A
因此,生成的 DFA 的状态转换表如下:
状态\输入 | a | b |
---|---|---|
A | B | A |
B | B | A |
DFA 图如下所示:
- 由于 A={q0,q1,q2} 中包含最终状态 q2,因此 A 是最终状态。
- 在 B ={q1,q2} 中包含状态 q2。因此,B 也是最终状态。
广告