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

📅  最后修改于: 2021-08-27 04:34:45             🧑  作者: 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,该状态设置为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