需要构造DFA(确定性有限自动机)

时间:2016-03-27 19:16:29

标签: regular-language finite-automata computation-theory dfa

我需要构造一个DFA,它识别所有仅由0和1组成的字符串,因此它具有偶数个零和可被3整除的数量。我发现偶数个0的情况下的自动机甚至1的数量:

automaton for even number of 0s and 1s

我尝试通过添加一些状态,更改分支等来从这里开始。但是我仍然没有成功,通常会忘记自动机做什么,因为我要添加分支和状态。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

你需要通过2和3记录可分性的状态,这意味着你需要6个状态。只需将其称为.babelrc0|01|00|11|10|2。第一个数字告诉你,当你到达状态时,你有一个偶数或奇数个零,第二个数字告诉你,当你到达状态时,你有1个数,当除以3时给出给定的数模量

您的状态图包含:

1|2

开始状态为0|x --0--> 1|x 1|x --0--> 0|x y|0 --1--> y|1 y|1 --1--> y|2 y|2 --1--> y|0 ,这也是唯一的停止状态。

要理解的重要一点是,每个状态记录分别为2时读取的零或1的模数。然后,0|0在两种情况下都是模数0,这是接受的标准。这一切都有效,因为要跟踪的不同状态的数量是有限的。 DFA这个名称已经告诉我们,它无法跟踪无数个状态。

答案 1 :(得分:0)

查看它的一种方法是问题要求两种语言的交集:一种包含偶数个零,另一种具有可被3整除的数量。一种方法是对两种语言进行DFA。语言,然后制作另一个DFA,在读取输入符号时跟踪每个DFA中的状态对。

I have used 'e' and 'o' to denote that the number of zeroes is even or odd respectively. The second digit in each of the states defines the remainder obtained by dividing the number of ones by 3.