📜  从具有空值的NFA到DFA的自动机转换

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

从带有ε的NFA转换为DFA

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

哪里

  Q: finite set of states
  ∑: finite set of the input symbol
  q0: initial state 
  F: final state
  δ: Transition function

NFA带ε移动:如果任何FA包含ε事务或移动,则有限自动机称为NFA带ε移动。

ε闭包:给定状态A的ε闭包是指可以从状态A到达的一组状态,只有ε(空)移动,包括状态A本身。

将带有NF的NFA转换为DFA的步骤:

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

步骤2:找到可以从现在开始遍历的每个输入符号的状态。也就是说,对于DFA当前状态中存在的每个NFA状态,过渡值的合并及其闭包。

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

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

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

范例1:

用ε将NFA转换为等效的DFA。

解:

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

ε-closure {q0} = {q0, q1, q2}
ε-closure {q1} = {q1}
ε-closure {q2} = {q2}
ε-closure {q3} = {q3}
ε-closure {q4} = {q4}

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

因此

部分DFA为

现在,

对于状态C:

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

DFA将是

范例2:

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

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

ε-closure(q0) = {q0, q1, q2}
ε-closure(q1) = {q1, q2}
ε-closure(q2) = {q2}

现在我们将获得δ'跃迁。令ε-closure(q0)= {q0,q1,q2}称为状态A。

这样我们得到了

δ'(A, 0) = A
δ'(A, 1) = B
δ'(A, 2) = C

部分DFA为:

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

因此

这样我们得到了

δ'(B, 0) = ϕ
δ'(B, 1) = B
δ'(B, 2) = C

部分过渡图将是

现在我们将获得C的转换:

因此,DFA为

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