Finite automata 最小DFA中是否包含死状态?

Finite automata 最小DFA中是否包含死状态?,finite-automata,dfa,Finite Automata,Dfa,我搜索了谷歌,在很多页面上都显示,在最小化的DFA中,死区或陷阱状态被移除。我的问题是,如果某个转换未定义,它怎么可能仍然是DFA。那么你说的人呢?即使是最小的DFA也必须包括死态;否则,他们要么(a)不是DFAs,要么(b)不接受与非最小值对应者相同的语言。例如,字母表{a,b}上的语言{a}的最小DFA必须有3个状态:一个可以看到a并接受的开始状态;一种接受状态,在这种状态下,如果你看到其他任何东西,你就会拒绝;如果你看到一个b或任何东西处于接受状态,你就会进入一个死状态 从未听说过从最小D

我搜索了谷歌,在很多页面上都显示,在最小化的DFA中,死区或陷阱状态被移除。我的问题是,如果某个转换未定义,它怎么可能仍然是DFA。那么你说的人呢?

即使是最小的DFA也必须包括死态;否则,他们要么(a)不是DFAs,要么(b)不接受与非最小值对应者相同的语言。例如,字母表{a,b}上的语言{a}的最小DFA必须有3个状态:一个可以看到a并接受的开始状态;一种接受状态,在这种状态下,如果你看到其他任何东西,你就会拒绝;如果你看到一个b或任何东西处于接受状态,你就会进入一个死状态


从未听说过从最小DFA中省略死状态。亵渎神明

在“最小”版本中,死状态不会被删除,但在DFA的“反转”过程中它们会丢失(可能你把术语弄混了)

@PrashantBhardwaj:我还认为应该包括它(死状态和相应的死动作),因为包括它将完成DFA,即。,通过考虑,我们不会在最小化DFA中的特定状态上进行任何匿名移动


然而,这个问题还没有得到回答?最后,我们是否应该包括它?有人能证明吗?

看看这个。根据这一点,死亡状态被从DFA中移除。@PrashantBhardwaj这是一个奇怪、奇怪、奇怪的规则。首先,他们称之为最小DFA,我称之为NFA(DFA不能“崩溃”)。其次,该定义与迈希尔-内罗德定理不一致。我不会用老多米尼大学的课程笔记作为你的唯一参考。麻省理工学院、哈佛大学、牛津大学、耶鲁大学、斯坦福大学、剑桥大学等对此有何评论?无论如何,在最小的DFA中,你只需要一个单一的死状态。。。不知道你为什么要删除这个。奇怪,我会称之为NFA。我还搜索了UIUC计算理论课程的课堂讲稿。没有关于消除死区状态的内容。但这些是我遇到的少数链接。[Link1](www.cs.fsu.edu/~whalley/cop5621/chap3.handout.pdf)[Link2](en.wikipedia.org/wiki/DFA_minimization)[Link3](code.google.com/p/regex/)事实上,在一些编译器的书中已经给出了它。@PrashantBhardwaj我能说的是:也许对于现实生活中的应用程序,您正在编写软件来生成DFA来解析数据,一旦不匹配模式,让DFA崩溃是很有意义的。在计算理论、形式语言和语法/自动机中,它没有多大意义。公平地说,您可以用允许它们崩溃的方式定义DFA,但直到现在,我才知道这样的定义。我永远不会从一个最小的DFA中移除一个死状态,因为这样做在Myhill Nerode看来是丑陋的。这是一个丑陋的微观优化。@PrashantBhardwaj:Patric是正确的链接,你必须注意:这是我在dfa中看到的非常奇怪的规则,每个输入符号都有事务处理,但在最小化和移除死态后,他提出了NFA而不是dfa。“确定性有限状态机是一种有限状态机,它接受/拒绝有限的符号字符串,并且只为每个输入字符串生成唯一的自动化计算(或运行)。资料来源:关于DFA的维基百科。如果没有定义某个特定的移动,仅此一点就可以给出包含死区状态的理由。如果不包括,那么将其称为DFA是否公平?