我是一名学习DFA的学生,正在寻找一个DFA,该DFA可以查找小数是否可以被7整除。
今天,我已经解决了数字2、3、4、5、6、8、9的除数问题,但是我无法解决数字7的除数问题。我已经在网上搜索了,但是找不到可以帮助我或让我理解的答案。
所以现在我在这里寻求帮助。预先感谢。
答案 0 :(得分:1)
基本思想是,我们将跟踪到目前为止所看到的数字的当前值(以7为模)。每个新数字取旧数字,乘以十,然后加上新数字。因此,从与x(mod 7)对应的状态开始,在右边加上数字d意味着我们进入与10x + d(mod 7)对应的状态。此DFA具有70个状态(数字位数为0-9乘以七个0-6所得的余数)。
q s q'
------------
q0 0 q0
q0 1 q1
q0 … …
q0 6 q6
q1 0 q3
q1 1 q4
q1 … …
q1 6 q2
…
q6 0 q4
q6 1 q5
q6 … …
q6 6 q3
考虑对号码36736的处理:
(q0) --3--> (q3) --6--> (q1) --7--> (q3) --3--> (q5) --6--> (q0)
0 0*10+3 3*10+6 1*10+7 3*10+3 5*10+6
0+3 30+6 10+7 30+3 50+6
3 36 17 33 56
3 1 3 5 0
该数字可被7整除,因为我们最终进入状态q0,该状态对应于零模7,即7的偶数倍。