构造FA(自动机理论)



您需要为所有长度为奇数但包含在字母表{a,b}上定义的偶数个b的字符串的语言构造一个有限自动机。

我已经做了这个

((a+b)(a+b))*bb+bb*((a+b)(a+b)) 

但我知道这是错误的,那么这个问题的答案是什么呢?

你说你在寻找一个自动机,但你的(错误的)答案是一个正则表达式。我将提供一个自动机。它使用两个计数器mod 2;一个表示长度,一个表示b的数量。所以状态是:

q[0,0], q[0,1], q[1,0], q[1,1]

其中,例如q[0,1]意味着总长度是偶数(第一个零),而b的个数是奇数(第一个)。所以最终状态是q[1,0],而q[0,0]是初始状态。

转换非常明显,对计数器进行了必要的更改:

q[0,0] reads a  ->  q[1,0] 
q[0,0] reads b  ->  q[1,1]
q[0,1] reads a  ->  q[1,1]  
q[0,1] reads b  ->  q[1,0]
q[1,0] reads a  ->  q[0,0] 
q[1,0] reads b  ->  q[0,1]
q[1,1] reads a  ->  q[0,1]  
q[1,1] reads b  ->  q[0,0]

最新更新