Pey*_*man 4 automata finite-automata dfa
我是一名学习 DFA 的学生,正在寻找一个可以查找十进制数是否能被 7 整除的 DFA。
今天我已经解决了数字 2,3,4,5,6,8,9 的整除问题,但我无法解决数字 7 的这个问题。我在网上搜索过,但找不到任何帮助我的答案或者对我来说是可以理解的。
所以现在我来这里寻求帮助。提前致谢。
基本思想是,我们将跟踪迄今为止所看到的数字的当前值(模七)。每个新数字都将旧数字乘以十,然后加上新数字。因此,从 x (mod 7) 对应的状态,向右添加数字 d 意味着我们进入 10x + d (mod 7) 对应的状态。这个DFA有70种状态(0-9的位数乘以7个0-6后的余数)。
\n\nq s q'\n------------\nq0 0 q0\nq0 1 q1\nq0 \xe2\x80\xa6 \xe2\x80\xa6\nq0 6 q6\n\nq1 0 q3\nq1 1 q4\nq1 \xe2\x80\xa6 \xe2\x80\xa6\nq1 6 q2\n\n\xe2\x80\xa6\n\nq6 0 q4\nq6 1 q5\nq6 \xe2\x80\xa6 \xe2\x80\xa6\nq6 6 q3\nRun Code Online (Sandbox Code Playgroud)\n\n考虑数字 36736 的处理:
\n\n(q0) --3--> (q3) --6--> (q1) --7--> (q3) --3--> (q5) --6--> (q0)\n0 0*10+3 3*10+6 1*10+7 3*10+3 5*10+6\n 0+3 30+6 10+7 30+3 50+6\n 3 36 17 33 56\n 3 1 3 5 0\nRun Code Online (Sandbox Code Playgroud)\n\n这个数字可以被七整除,因为我们最终处于状态 q0,该状态对应于零模七——意味着七的偶数倍。
\n