这个 DFA 是否已经最小化了?

问题描述

我试图通过填表方法来最小化这个 DFA:

enter image description here

这是我为这个数字制作的表格

enter image description here

从这张表中我们可以得出结论,这个数字已经最小化了,不需要继续了。
对吗?

解决方法

我们可以使用 Myhill-Nerode 来检查这个 DFA 的状态是否对应于不可区分关系下的唯一等价类。

通向状态 1 的字符串后面可以跟语言中的任何字符串,并且是我们看到的第一个字符串,因此我们必须在最小 DFA 中拥有这样的状态。

通向状态 2 的字符串后面不能跟 a 以获得可接受的字符串,因此状态 2 对应于不同于状态 1 的类。

状态 3 不接受,因此必须对应于不同于状态 1 和状态 2 的类。

状态 4 不接受,因此它的类不能与状态 1 或状态 2 相同。通向状态 4 的字符串后面不能跟 b 以获得语言中的字符串,因此状态 4 也不同于状态 3。

状态 5 也不接受,因此它与状态 1 和状态 2 不同。通向状态 5 的字符串后面可以跟 a 以获取语言中的字符串,因此状态 5 也与状态 3 和状态不同4.

状态 6 不接受,因此它也不同于状态 1 和状态 2。它可以后跟 a 或 b 以获取语言中的字符串,因此它与状态 3、4 和 5 不同。

状态 7 正在接受,因此它与状态 3、4、5 和 6 不同。通向状态 7 的字符串可以跟在 a 或 aa 之后以获取语言中的字符串,因此状态 7 与状态 2 不同和 1。

因为所有状态都是可区分的,所以 DFA 对于它接受的任何语言都是最小的。

相关问答

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