确定性有限自动机(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,该状态设置为final状态。
步骤3:
在状态C上,如果可以取任何可能的数字’b’,并且也可以将’a’用作输入字母,则在字母’b’上它保持相同的状态,但是在输入’a’上它进入状态E将设置为最终状态。
第四步:
状态B的输入字母’a’破坏了条件,因此它变为某个无效状态(Q)。
步骤5:
到目前为止,我们的机器接受以’a’和’ab’结尾的字符串,但是如果’a’出现在诸如bab,babb,bbab之类的中间怎么办?如果末尾有很多’b’怎么办?为此,将最终状态的“ b”自循环,并将其“ 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 |