【问题标题】:Converting NFA to DFA将 NFA 转换为 DFA
【发布时间】:2013-01-28 18:57:49
【问题描述】:

我无法理解如何转换。

如果 2 得到 'a' 的输入,它会因为空字符串而变为 (1,4) 还是 (1,2,4)?

谢谢!

【问题讨论】:

  • 没有要求任何人做我的作业。

标签: automata nfa


【解决方案1】:

如果状态Q2 获得“a”的输入,则下一个状态可能是Q1Q2、0r Q4

在您的 NFA 中,您将获得最终状态 Q4

它的等效DFA如下:

                 a-  
                 ||
                 ▼|
--►(Q0)---a---►((Q1))---b----►((Qf))  
                 ▲-----a--------| 

Q1Q2 是最终状态。

其正则表达式为:a(a + ba)*(b + ε )

ε 是空符号 (epsilon)

【讨论】:

    【解决方案2】:

    我们开始通过识别空输入闭包集将 NFA 转换为 DFA(从这里开始,我将用 L-闭包表示空输入闭包)。
    L(1)=(1,2) 我们可以在空输入上从 1 访问 2。
    L(2)=(2) 2 中没有空输入边。
    L(3)=(3) 没有从 3 出来的空输入边。
    L(4)=(1,2,4) 我们可以从4访问1,从1访问2。

    如果 2 得到一个输入 'a' 它会变成 (1,4) 还是 (1,2,4) 因为 空字符串?

    如果 2 得到输入 'a',它将变为 L(1)UL(4)=(1,2,4)。

    由于我们的起始节点在 NFA 中是 1,因此在 DFA 中它将是 L(1),即 (1,2)。

    T((1,2),a)=L(1)UL(3)UL(4)=(1,2,3,4)  
    T((1,2),b)=F  
    T((1,2,3,4),a)=L(1)UL(3)UL(4)=(1,2,3,4)  
    T((1,2,3,4),b)=L(4)=(1,2,4)  
    T((1,2,4),a)=L(1)UL(3)UL(4)=(1,2,3,4)  
    T((1,2,4),b)=F  
    

    由于NFA中4是accept节点,所以在DFA中包括4个节点都是accept节点,分别是(1,2,3,4)和(1,2,4)。

    【讨论】:

      猜你喜欢
      • 2011-08-16
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 2011-12-07
      • 2011-05-07
      • 2022-06-30
      • 2019-10-18
      相关资源
      最近更新 更多