📜  设计一个 DFA,每个 00 后面紧跟着 1

📅  最后修改于: 2021-09-28 09:56:31             🧑  作者: Mango

DFA 机器被设计为接受特定类型的输入,其输出是由输入字母表从每个状态的转换生成的。

方法 :

  • 在这种情况下,字符串除了超过 3 个零之外的所有字符串都是可以接受的。在这种字符串,不能接受三个连续的零。
  • 创建初始状态并从可能的字符串的最小长度开始,将其输入 0 和 1 转换为可能的状态。
  • 根据转移,注意最终状态并标记它。

一步一步设计DFA:

第1步:
做一个初始状态,比如“A”,最小可能的字符串是 1 和 0,也可以接受任意数量的 1。为此,在状态“A”上放置 1 的自循环,并使输入字母表 0 转换为状态“B” ”。因为只有 1 是可以接受的,所以状态“A”也被称为最终状态。

第2步:
由于字符串可以接受单个零,因此使状态“B”为最终状态。将输入 0 从状态“B”横切到状态“C”。

第 3 步:
由于每个 00 后面紧跟着 1,所以现在在状态“C”之后将输入 1 从状态“C”转换为状态“A”。

第四步:
我们留下了状态“B”的输入字母表 1 的转换。因此将 1 从状态“B”转换为状态“A”。

第 5 步:
在 00 之后,连续性不能再多零。因此将状态“C”的 0 横断为死状态“D”。

第 6 步:
输入字母 0 和 1 的死状态横断面到死状态本身。

以上DFA的Transition Table和Transition规则——
状态“A”既是最终状态也是初始状态,状态“C”是最终状态,状态“D”是死状态。初始状态用 —> 表示,最终状态 ID 用 * 表示。

State Input (0) Iinput (1)
—>A* (initial and final state both) B A
B* (final state) C A
C D (dead state) A
D (dead state) D (dead state) D (dead state)

Q’:有限集的集合 = {A, B, C, D}
输入字母集 = {0, 1}

转换规则讲述了对每个输入字母表对每个状态函数的转换函数。