有限自动机字符串不以ba结尾

时间:2019-04-20 12:54:52

标签: finite-automata

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

3 个答案:

答案 0 :(得分:2)

步骤:

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

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

enter image description here

答案 1 :(得分:0)

对于不以ba结尾的语言,

RE为(a+b)*(aa+bb+ab)

此处语言以aabbab结束

enter image description here

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

enter image description here

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

结尾的字符串

答案 2 :(得分:0)

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

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

在此,(q0)正在接受,(q1)正在接受,(q2)正在接受。 (q0)对应于未看到字符串ba的任何部分,状态(q1)对应于已看到第一个符号,状态(q2)对应于已看到整个字符串。因此,缺少的过渡应该是:

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

整个DFA如下所示:

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