确定性有限自动机(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 |