如何将带有 ε 的 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 的状态转换表如下:

状态\输入ab
ABA
BBA

DFA 图如下所示

  • 由于 A={q0,q1,q2} 中包含最终状态 q2,因此 A 是最终状态。
  • 在 B ={q1,q2} 中包含状态 q2。因此,B 也是最终状态。

更新于:2023年9月13日

44K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告