从带 ε 的 NFA 转换为 DFA

17 Mar 2025 | 5 分钟阅读

非确定有限自动机 (NFA) 是一种有限自动机,在某些情况下,当向当前状态提供特定输入时,机器会进入多个状态或多个状态。 它可以包含 ε 移动。它可以表示为 M = { Q, ∑, δ, q0, F}。

其中

带有 ∈ 移动的 NFA:如果任何 FA 包含 ε 转换或移动,则该有限自动机称为带有 ∈ 移动的 NFA。

ε-闭包:给定状态 A 的 ε-闭包表示可以仅通过 ε(空)移动从状态 A 到达的状态集,包括状态 A 本身。

将带有 ε 的 NFA 转换为 DFA 的步骤

步骤 1:我们将把 NFA 的起始状态的 ε-闭包作为 DFA 的起始状态。

步骤 2:找到每个输入符号可以从当前状态遍历到的状态。这意味着对于 DFA 的当前状态中存在的 NFA 的每个状态,转换值及其闭包的并集。

步骤 3:如果我们找到一个新状态,将其作为当前状态并重复步骤 2。

步骤 4:重复步骤 2 和步骤 3,直到 DFA 的转换表中没有新的状态出现。

步骤 5:将包含 NFA 的最终状态的 DFA 状态标记为最终状态。

示例 1

将带有 ε 的 NFA 转换为其等效的 DFA。

Conversion from NFA with Null to DFA

解决方案

让我们获取每个状态的 ε-闭包。

现在,让 ε-闭包 {q0} = {q0, q1, q2} 作为状态 A。

因此

δ'(A, 0) = ε-closure {δ((q0, q1, q2), 0) }
              = ε-closure {δ(q0, 0) ∪ δ(q1, 0) ∪ δ(q2, 0) }
              = ε-closure {q3}
              = {q3}            call it as state B.

δ'(A, 1) = ε-closure {δ((q0, q1, q2), 1) }
              = ε-closure {δ((q0, 1) ∪ δ(q1, 1) ∪ δ(q2, 1) }
              = ε-closure {q3}
              = {q3} = B.

部分 DFA 将是

Conversion from NFA with Null to DFA

现在,

δ'(B, 0) = ε-closure {δ(q3, 0) }
              = ϕ
δ'(B, 1) = ε-closure {δ(q3, 1) }
              = ε-closure {q4}
              = {q4}            i.e. state C

对于状态 C

DFA 将是,

Conversion from NFA with Null to DFA

示例 2

将给定的 NFA 转换为其等效的 DFA。

Conversion from NFA with Null to DFA

解决方案:让我们获取每个状态的 ε-闭包。

现在我们将获得 δ' 转换。让 ε-闭包(q0) = {q0, q1, q2} 称其为 状态 A

δ'(A, 0) = ε-closure{δ((q0, q1, q2), 0)}
              = ε-closure{δ(q0, 0) ∪ δ(q1, 0) ∪ δ(q2, 0)}
              = ε-closure{q0}
              = {q0, q1, q2}

δ'(A, 1) = ε-closure{δ((q0, q1, q2), 1)}
              = ε-closure{δ(q0, 1) ∪ δ(q1, 1) ∪ δ(q2, 1)}
              = ε-closure{q1}
              = {q1, q2}         call it as state B

δ'(A, 2) = ε-closure{δ((q0, q1, q2), 2)}
              = ε-closure{δ(q0, 2) ∪ δ(q1, 2) ∪ δ(q2, 2)}
              = ε-closure{q2} 
              = {q2}         call it state C

因此,我们已经获得

部分 DFA 将是

Conversion from NFA with Null to DFA

现在我们将找到每个输入的状态 B 和状态 C 上的转换。

因此

δ'(B, 0) = ε-closure{δ((q1, q2), 0)}
              = ε-closure{δ(q1, 0) ∪ δ(q2, 0)}
              = ε-closure{ϕ}
              = ϕ

δ'(B, 1) = ε-closure{δ((q1, q2), 1)}
              = ε-closure{δ(q1, 1) ∪ δ(q2, 1)}
              = ε-closure{q1}
              = {q1, q2}         i.e. state B itself

δ'(B, 2) = ε-closure{δ((q1, q2), 2)}
              = ε-closure{δ(q1, 2) ∪ δ(q2, 2)}
              = ε-closure{q2}
              = {q2}         i.e. state C itself

因此,我们已经获得

部分转换图将是

Conversion from NFA with Null to DFA

现在我们将获得 C 的转换

δ'(C, 0) = ε-closure{δ(q2, 0)}
              = ε-closure{ϕ}
              = ϕ

δ'(C, 1) = ε-closure{δ(q2, 1)}
              = ε-closure{ϕ}
              = ϕ

δ'(C, 2) = ε-closure{δ(q2, 2)}
              = {q2}

因此,DFA 是

Conversion from NFA with Null to DFA

由于 A = {q0, q1, q2} 其中最终状态 q2 位于其中,因此 A 是最终状态。 B = {q1, q2} 其中状态 q2 位于其中,因此 B 也是最终状态。 C = {q2},状态 q2 位于其中,因此 C 也是最终状态。


下一主题DFA 的最小化