📜  从NFA到DFA的自动机转换

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

从NFA转换为DFA

在本节中,我们将讨论将NFA转换为其等效DFA的方法。在NFA中,当将特定的输入提供给当前状态时,机器将进入多个状态。在给定的输入符号上,它可以有零个,一个或多个移动。另一方面,在DFA中,当将特定输入提供给当前状态时,机器只会进入一个状态。 DFA在给定的输入符号上仅可移动一次。

令,M =(Q,∑,δ,q0,F)是一个接受语言L(M)的NFA。应该存在由M'=(Q',∑',q0',δ',F')表示的等效DFA,以使L(M)= L(M')。

将NFA转换为DFA的步骤:

步骤1:最初,Q'= ϕ

步骤2:将NFA的q0加到Q'。然后找到从此开始状态开始的过渡。

步骤3:在Q'中,找到每个输入符号的可能状态集。如果这组状态不在Q'中,则将其添加到Q'中。

步骤4:在DFA中,最终状态将是所有包含F的状态(NFA的最终状态)

范例1:

将给定的NFA转换为DFA。

解决方案:对于给定的过渡图,我们将首先构造过渡表。

State 0 1
→q0 q0 q1
q1 {q1, q2} q1
*q2 q2 {q1, q2}

现在我们将获得状态q0的δ'跃迁。

δ'([q0], 0) = [q0]
δ'([q0], 1) = [q1]

状态q1的δ'转换为:

δ'([q1], 0) = [q1, q2]       (new state generated)
δ'([q1], 1) = [q1]

状态q2的δ'转换为:

δ'([q2], 0) = [q2]
δ'([q2], 1) = [q1, q2]

现在我们将在[q1,q2]上获得δ'跃迁。

δ'([q1, q2], 0) = δ(q1, 0) ∪ δ(q2, 0)
                      = {q1, q2} ∪ {q2}
                      = [q1, q2]
δ'([q1, q2], 1) = δ(q1, 1) ∪ δ(q2, 1)
                      = {q1} ∪ {q1, q2}
                      = {q1, q2}
                      = [q1, q2]

状态[q1,q2]也是最终状态,因为它包含最终状态q2。构造的DFA的过渡表将为:

State 0 1
→[q0] [q0] [q1]
[q1] [q1, q2] [q1]
*[q2] [q2] [q1, q2]
*[q1, q2] [q1, q2] [q1, q2]

转换图将为:

由于q2是不可访问状态,因此可以消除状态q2。

范例2:

将给定的NFA转换为DFA。

解决方案:对于给定的过渡图,我们将首先构造过渡表。

State 0 1
→q0 {q0, q1} {q1}
*q1 ϕ {q0, q1}

现在我们将获得状态q0的δ'跃迁。

δ'([q0], 0) = {q0, q1}
               = [q0, q1]       (new state generated)
δ'([q0], 1) = {q1} = [q1]

状态q1的δ'转换为:

δ'([q1], 0) = ϕ
δ'([q1], 1) = [q0, q1]

现在我们将在[q0,q1]上获得δ'跃迁。

δ'([q0, q1], 0) = δ(q0, 0) ∪ δ(q1, 0)
                      = {q0, q1} ∪ ϕ
                      = {q0, q1}
                      = [q0, q1]

同样,

δ'([q0, q1], 1) = δ(q0, 1) ∪ δ(q1, 1)
                      = {q1} ∪ {q0, q1}
                      = {q0, q1}
                      = [q0, q1]

就像在给定的NFA中一样,q1是最终状态,然后在DFA中无论哪里存在,q1都将成为最终状态。因此,在DFA中,最终状态为[q1]和[q0,q1]。因此,最终状态集F = {[q1],[q0,q1]}。

构造的DFA的过渡表将为:

State 0 1
→[q0] [q0, q1] [q1]
*[q1] ϕ [q0, q1]
*[q0, q1] [q0, q1] [q0, q1]

转换图将为:

甚至我们都可以更改DFA状态的名称。

假设

A = [q0]
B = [q1]
C = [q0, q1]

使用这些新名称,DFA将如下所示: