【问题标题】:Finite Automata string not ending with ba有限自动机字符串不以 ba 结尾
【发布时间】:2019-04-20 12:54:52
【问题描述】:

问题:构建一个只接受不以 ba 结尾的词的 FA。 我想为这个问题绘制 DFA,但我不明白我该怎么做,请帮我画这个

【问题讨论】:

  • 给您带来麻烦的问题是什么?你知道如何为以“ba”结尾的语言制作 DFA 吗?如果是这样,你如何修改它以匹配它的逆?

标签: finite-automata


【解决方案1】:

步骤:

  1. 绘制以“ba”结尾的 DFA。
  2. 反转状态,即
  3. 制作最终状态,非最终状态。
  4. 非最终状态,最终状态

IMAGE:不以“ba”结尾的字符串的 DFA:

【讨论】:

    【解决方案2】:

    不以ba 结尾的语言的RE 是(a+b)*(aa+bb+ab)

    此处的语言以aabbab 结尾

    要从 RE 制作 DFA,您可以使用它 希望它对你有帮助 https://cyberzhg.github.io/toolbox/nfa2dfa

    在这个给定的 DFA 中 ..它接受长度为 2 或大于 2 但不以 ba

    结尾的字符串

    【讨论】:

    • 这会遗漏一些字符串,即长度小于 2 的字符串。
    • 确定要编辑我的答案..现在检查..现在它明确接受所需的字符串
    • 我理解 C0 和 C1 正在接受并且 C0 是初始的吗?如果是这样,我仍然不相信这是正确的。字符串“ba”本身可以导致状态 C0 或 C2,因此这些状态都不能接受;但空字符串是语言,所以 C0 必须接受。此外,这是 NFA,而不是 DFA。
    • 是的,C0 是(final 和 initial),因为 epsilon 可以是这种语言的一部分
    • 然后通过两次自循环转换接受 ba。您将其标记为 | b 表示任何一个都是允许的。
    【解决方案3】:

    我们需要跟踪我们是否看到了 ba 的子字符串,如果我们看到了整个事情,请确保我们当时没有处于接受状态。

    ----->(q0)--b-->(q1)--a-->(q2)
    

    这里,(q0) 接受,(q1) 接受,(q2) 不接受。 (q0) 对应于没有看到字符串 ba 的任何部分,状态 (q1) 对应于看到第一个符号, (q2) 对应于看到整个事物。因此,缺少的转换应该是:

    • q0 到 q0 上的符号 a,因为如果我们还没有开始看到 ba,a 没有帮助;我们需要一个 b
    • 符号 b 上的 q1 到 q1,因为如果我们看到 b,我们总是至少看到 ba 中的第一个符号
    • 由于上述原因,符号 a 上的 q2 到 q0 和符号 b 上的 q1。

    整个 DFA 如下所示:

                    /--|--b----\
                    b  |       |
                    |  V       |
    ----->(q0)--b-->(q1)--a-->(q2)
          |  ^                 |
          a  |                 |
          \--|-----------------/
    

    【讨论】:

      猜你喜欢
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 2011-06-06
      相关资源
      最近更新 更多