【问题标题】:Regular Expression to DFA正则表达式到 DFA
【发布时间】:2015-12-21 11:53:02
【问题描述】:

谁能告诉我附加的 DFA 是否正确?

我想为具有字母 Σ ={a, b} 的语言提供 DFA

为此我需要 DFA ----> A={ε, b, ab}

【问题讨论】:

    标签: regex finite-automata automata dfa automata-theory


    【解决方案1】:

    我认为这个 DFA 对那种语言是正确的。

    【讨论】:

      【解决方案2】:

      不,有多种原因:

      1. 你的机器人bab
      2. 你的机器人不接受ab
      3. 您的自动机不是 DFA,至少在某些严格的定义中是这样

      关于第一点:从q1开始,我们看到b,到q2,看到a,到q3,看到b,再到q4,正在接受。我们看到bab 并接受了它。

      关于第二点:从q1 开始,我们看到a 但没有定义转换。自动机“崩溃”并且无法接受。所以不接受以a 开头的字符串,包括ab

      关于第三点:DFA 通常需要显示所有状态和转换,包括死状态和永远不会返回任何接受状态的转换。您不会显示所有转换,也不会显示自动机中的所有状态。

      您可以使用 Myhill-Nerode 定理来确定您的语言的最小 DFA 有多少个状态。我们注意到空状态可以附加空字符串bab 以获得语言中的字符串; a 可以附加bb 可以附加空字符串。 aabbba 不能附加任何内容来获取语言中的字符串(因此这些是无法区分的);但ab 可以附加空字符串(因此与b 无法区分)。

      如此确定的等价类对应于最小 DFA 中的状态。我们的等价类是:

      1. 类似空字符串的字符串
      2. b 等字符串
      3. a 等字符串
      4. aa 等字符串

      我们注意到b 在语言中,因此第二类将对应于接受状态。我们注意到无法将任何内容附加到 aa 以获取语言中的字符串,因此此类对应于 DFA 中的死状态。我们通过查看附加新符号将我们置于哪个新等价类来编写这些状态之间的转换:

      1. 附加 a 将我们置于 (3) 中,因为将 a 附加到空字符串会得到位于 (3) 中的 a。附加 b 将我们置于 (2) 中,因为将 b 附加到空字符串会得到位于 (2) 中的 b

      2. 附加 a 将我们置于 (4) 中,因为将 a 附加到 b 会得到 ba,这类似于 aa,因为它不是语言中任何字符串的前缀.附加b,我们通过类似的论点到达(4)。

      3. 附加 a 我们得到 aa 并在 (4) 中。附加b 我们得到ab 就像b 所以我们在(2)中。

      4. 所有从死状态的转换都返回死状态; ab 都返回到 (4)。

      你最终会得到类似的东西:

      q1 --a--> q3
       |        /|
       b  --b--< a
       | /       |
       vv        v
      q2 -a,b-> q4 \
                 ^ a,b
                 \_/
      

      或以表格形式:

      q    s    q'
      ==   =    ==
      q1   a    q3
      q1   b    q2
      q2   a    q4
      q2   b    q4
      q3   a    q4
      q3   b    q2
      q4   a    q4
      q4   b    q4
      

      【讨论】:

      • 感谢您详细解释。我现在对 DFA 有了更好的了解。
      • 我可以知道在上面的 DFA 中您提供给我的 q1(接受 ε)、q2(接受 b)和 q4(接受 ab)。所以我相信为了证明接受状态我应该在 q1、q2 和 q4 上做双圈,对吗?
      • @jon 不,只有 q1 和 q2。 q1 接受空字符串,q2 接受bab。获得状态q3 的唯一方法是查看单个a,它不在语言中,因此q3 不接受。 q4 是一种死状态,语言中的任何字符串都无法到达。
      • 谢谢您,先生。我认为我需要大量练习 DFA。
      猜你喜欢
      • 2017-02-09
      • 1970-01-01
      • 2018-04-16
      • 2019-05-05
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 2013-10-28
      相关资源
      最近更新 更多