DFA 适用于除以 3 余数为 1 的二进制数

问题描述

对于以 1 开头的所有字符串的集合,我需要一个 DFA,该字符串被解释为整数的二进制表示,除以 3 时的余数为 1。

例如,二进制数 1010 b 是十进制的 10。当您将 10 除以 3 时,得到的余数为 1,因此 1010 在语言中。但是,二进制数 1111 b 是十进制的 15。15 除以 3 的余数为 0,因此语言中没有 1111。

我在下面附上了我的 DFA。你能检查一下吗?

My DFA

解决方法

在我看来是正确的。

你可以做两个简化:

  1. q4 代表 (mod 0),所以你可以把它设为起始状态并去掉 q0 sub> 和 q5。 (除非您需要拒绝以 0 开头的字符串?您的问题没有指定。)

  2. q1q3 可以合并。它们都代表 (mod 1) 并且具有相同的转换。

这两个变化会让你正好有 3 个状态,每个剩余一个。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...