微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DFA 创建和最小化

如何解决DFA 创建和最小化

任务:绘制一个 DFA,它接受字母 {0,1} 中的单词,其中最后一个字符不在单词的其他任何地方重复。 (例如:单词 0,1,00001,111110,ε 是这个 NFA 的语言,而单词 010,111,0010,101 不是)

我认为我的 DFA 是正确的,但我无法将其最小化,因为我有一个陷阱状态,无论我做什么,我都无法摆脱它。有什么建议或提示吗?

enter image description here

解决方法

您的 DFA 是正确的(除了初始状态 q0 应该接受,因为空字符串在语言中)。它也是最小的;我们可以证明导致每个状态的字符串集都是可区分的 w.r.t.语言根据 Myhill-Nerode 不可区分关系。

  • q0:L 中的任何字符串都可以附加到这里的字符串(空字符串)以获得 L 中的另一个字符串

  • q1:将 L 中的字符串 0 附加到 0 中会得到不在 L 中的 00,因此 q1 与 q0 不同。

  • q2:将 L 中的字符串 1 附加到 1 中得到 11 不在 L 中,因此 q2 与 q0 和 q1 不同(因为将 1 附加到 0 中得到 01,它也在 L 中)

  • 导致 q3 的字符串与 q1 不同,因为您不能附加空字符串(即 q1 接受而 q3 不接受),但其他方面相同,因此 q3 也不同于 q0-q2

  • 导致 q4 的字符串与 q2 不同,因为您不能附加空字符串(即 q2 接受而 q4 不接受),但其他方面相同,因此 q4 也不同于 q0-q2

  • 将除空字符串以外的任何内容附加到导致 q5 的字符串会导致字符串不在语言中,因此它与 q0-q4 不同

  • 将任何内容附加到导致 q6 的字符串会导致一个不在语言中的字符串,因此它与 q0-q5 不同(这些字符串与导致 q5 的字符串不同,仅在于您甚至不能附加空字符串给他们得到L中的一个字符串,即q6不接受而q5是)。

因此,您的 DFA 是最小的。您可以通过尝试运行最小化算法并注意没有删除任何状态来证明这一点。

注意:这取决于您的定义,但它是 DFA 的正常(我会说是首选)定义,它们定义所有转换,这意味着需要显示死(或您称之为陷阱)状态.最小化算法可能不会删除它们,但您可以根据需要删除它们(尽管我将生成的自动机称为不确定性,因为某些转换没有指定确定性行为)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?