📌  相关文章
📜  恰好 a 中的一个和 b 中的至少一个的 DFA

📅  最后修改于: 2021-09-27 14:43:36             🧑  作者: Mango

确定性有限自动机(DFA)被定义为一个抽象的数学概念,用于解决不同软件和硬件中的各种特定问题。在这类问题中,我们有一些给定的周长,我们应该根据这些周长来设计 DFA。

在这篇文章中,给出了两条指令:

  • DFA 应具有以下其中一项
  • DFA 应该至少有一个 b

这DFA应该接受字符串如AB,BA,ABB,BAB,BBA,AB | BB,BABB,BBAB,BBBA,abbbb …。等等,但它不应该接受诸如a、b、bb、bbb、aabb、ababa等字符串。

分步设计:

第1步:
取初始状态 A,最小可能的字符串是 ab 和 ba,如果 A 将 ‘a’ 作为第一个输入字母,则进入状态 B,如果 A 将 ‘b’ 作为第一个输入字母,则进入状态 C。

第2步:
现在考虑状态 B,如果它需要输入字母 ‘a’,它会打破我们只有一个 ‘a’ 的条件,但是如果需要输入字母 ‘b’,它会生成一个可接受的字符串,现在它进入状态 D,该状态设置为最终状态。

第 3 步:
在状态 C 上,如果它可以采用任意数量的 ‘b’ 并且它也可以将 ‘a’ 作为输入字母表。将设置为最终状态。

第四步:
状态 B 的输入字母“a”打破了条件,因此它进入某个死状态(Q)。

第 5 步:
到目前为止,我们的机器接受以’a’和’ab’结尾的字符串。但是如果’a’在中间,例如bab,babb,bbab等,如果最后有很多’b’怎么办。为此,将 ‘b’ 的 self 循环赋予最终 stat 并将它们的 ‘a’ 发送到死状态。

笔记 –
死状态的输入字母表将进入死状态,这就是为什么它们没有显示在图表中。

上图的转换表和转换规则。

finite set of states = {A, B, C, D, E, Q} 

在转移表中,初始状态用 → 表示,最终状态用 E 和 D 表示。

set of input alphabets = {a, b} 

STATE INPUT (a) INPUT (b)
→A B C
B Q (dead state) D
C E C
D Q (dead state) D
E Q (dead state) E