计算模型-(确定性有限自动机

时间:2019-11-11 18:22:54

标签: dfa

我是计算机科学专业的学生-第二年。我研究计算模型。

我试图解决几个小时的问题,但不确定如何准确地解决它。 问题是:

“ DFA(确定性有限自动机),它接受∑ = {0,1, 2}可以被3整除,并且不包含子字符串012。“

有什么可能的方法来解决这个问题而无需猜测?

1 个答案:

答案 0 :(得分:0)

由于这是家庭作业,因此我将为您提供解决方案的草图,而不是细节。

第一步是将问题分解为DFA A和B,其中A和B的交点是您想要的DFA。

  • A:接受{0,1,2}上所有可被3整除的字符串。
  • B:接受{0,1,2}上不包含子字符串012的所有字符串。

然后,您可以计算这些DFA的交集,这将是您在问题中描述的语言。

这些DFA是什么样的?

B更容易描述:从包含012的所有字符串的DFA开始,然后取其补码。

A要求您跟踪余数。基本上,您的接受状态应为余数0,并且余数1和2需要另外两个状态。例如,如果您正在读取字符串012,则将移至状态0,然后移至状态1 ,然后再设为0(如(1+2) % 3 = 0)。

您如何与它们相交?创建一个新的DFA,其状态与A和B中状态数的乘积一样多。每个状态由A中的一个状态和B中的一个状态唯一标识。设置转换,就好像每个状态都由A和B操作一样B,移动到代表该输入的新状态对的任何状态。

例如,如果A的q1在输入1上移至q2,而B的q2在输入1上移至q2,则交点DFA的过渡为{Aq1,Bq2},1,{Aq2,Bq2}

交集DFA中的接受状态将是A和B都接受的状态。