您需要为所有长度为奇数但包含在字母表{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]