如果不是,那么对于某些状态和某些符号,不存在意味着什么?
如果不是,那么对于某些状态和某些符号,不存在意味着什么?
Answers:
您似乎偶然发现了一个有争议的问题。显然,计算机科学家喜欢争论。我当然喜欢争论,所以就去!
我的回答是明确的:不。确定性有限自动机不需要为每个符号从每个状态过渡。不存在时的含义仅仅是DFA不接受输入字符串。
尽管您可以创建DFA的定义,要求它确实存在,但并非并非如此,因为缺少过渡而导致转换后的结构(无论您如何称呼)都不确定,因为许多评论者都是如此声称。如果您正在学习自动机理论课程,那么下一个主题将是无上下文语言和下推自动机,其中不确定性和确定性自动机之间的区别非常重要,您需要使用正确的非确定性定义。
非确定性与不止一个法律过渡有关。
我认为我们都同意以下Wikipedia定义(我将在稍后显示的内容有点含糊):
确定性有限自动机为5元组(,,,,),由
令是字母的字符串。如果在以下条件下Q中存在状态序列r 0,r 1,… ,r n,则自动机接受字符串:
歧义性和争议在于转换函数(第一个项目符号列表中的数字“ 3”)的定义。我们都同意,将DFA与NFA区别开的是是函数而不是关系。但是是部分函数还是全部函数?
如果是部分函数,则DFA的定义就可以正常工作。给定一个输入字符串,如果使用输入符号a j到达状态,而没有下一个状态,则自动机根本不接受。
此外,当您扩展此定义以创建下推自动机的定义时,必须区分带有部分功能的过渡函数的下推自动机归为确定性而不是非确定性。
如果偏函数困扰您,那么这里是使成为总函数的琐碎变换。(这种转变是不一样的子集构造算法,它增加最多O(1)状态,是线性的原数状态,并可以扩展到掌上电脑的工作。这些事实都不是子集构造算法的真实)
此自动机的是一个总函数,接受和拒绝原始自动机所接受和拒绝的状态集完全相同。
评论员@Alex Smart正确地批评了我既不提供参考,也不解释我们为什么要关心。因此,这里去:
我们关心确定性与非确定性的确切定义的原因是,某些类型的非确定性自动机比其确定性表亲更强大,而某些类型的非确定性自动机并不比其确定性表亲更强大。对于有限自动机和图灵机,确定性和非确定性变体具有同等的功效。对于下推式自动机,有些语言的区别很重要:有些NPDA接受该语言,而没有DPDA接受该语言。对于线性有界自动机,问题(或上次我检查过)是开放的。在DPDA NPDA功率的增加来自于允许多个 转换,而不是将转换功能从总功能转换为部分功能。
来自编译器社区的书籍:
Aho和Ullman,《编译器设计原理》,1977年:首先用过渡关系定义NFA(第88页),然后(第90-91页):
我们说,如果1,则有限自动机是确定性的。它在输入上没有转移。2.对于每个状态和输入符号,最多有一个边缘标记的离去。
1988年重印的Aho,Sethi和Ullman的《Compilers,Principles,tecniques,and tools》类似,它首先用过渡关系定义了NFA,然后(p。115-116):
甲确定性有限自动机(DFA,对于短)是一种非确定性自动机finitie的一种特殊情况,其中...有标记的至多一个边缘离去。
(请注意,@ Alex Smart在评论中说:“龙特别提到了该功能是完整的。”我想他正在与合著者Lam谈论更高版本,目前我无法访问。 )
Appel,《Java的现代编译器实现》,1988年,第22页:
在确定性有限自动机(DFA)中,没有从相同状态离开的两个边都用相同的符号标记。
然后,阿佩尔继续说明,当使用DFA识别最长的匹配项时,我们明确利用缺失的过渡来决定何时停止(第23页):
当达到死状态(没有输出转换的非最终状态)时,变量[记录了迄今为止我们所见的最长匹配项]会告诉您匹配了哪些令牌以及令牌的终止位置。
转换理论社区的书籍:
Kohavi,《切换和有限自动机理论》,第2卷,e,1978年,第2页。611说:
因为状态图描述了确定性机器,所以下一个状态转换必须由当前状态和当前扫描的输入符号唯一地确定。
我通常将唯一的含义解释为“恰好一个”,而不是“不超过一个”。(即,Kohavi似乎在说确定性需要整体功能)
来自计算理论界的书籍:
在这里,在NFA之前先定义DFA,并要求DFA具有全部转换功能,然后在DPDA之前先定义NPDA,然后将“确定性”定义为对转换关系的限制,这种情况似乎更为普遍。 -每个状态/符号对一个条目。
霍普克罗夫特和乌尔曼(1979),刘易斯(Lewis)和帕帕迪米特里乌(Papadimitriou)(1981)尤其如此,尤其是西普瑟(Sipser)(2006),他们在教学法上使用DFA的定义来引入精确的形式定义,并解释其重要性并明确表示(第36页):
转移函数为状态和输入符号的每种可能组合指定一个下一个状态。
这似乎是沿历史发展的。确定性有限自动机是在40年代和50年代引入的。非确定性有限自动机由Rabin和Scott提出,“有限自动机及其决策问题,IBM J. Rsrch和Dvpt,3(2):114-125,1959年。在先前的作者之后,Rabin和Scott定义了确定性有限自动机(它们称为普通自动机)具有转换函数“在所有状态和符号对的笛卡尔乘积上定义”。(我将其解释为总功能)。
有趣的是,Rabin和Scott也根据总函数定义了不确定的有限自动机!页面120,定义9:
阿非确定性(有限的)自动机 ...是一个系统,其中,... 是一个函数[!]的与该组中的所有子集的值。
也就是说:过渡函数的总和不能使系统具有确定性!
Sipser 2006沿用了Rabin和Scott的方法,并使用从状态/符号到状态幂集的总转移函数来定义非确定性有限自动机,非确定性PDA和非确定性图灵机,但是跳过了确定性主题掌上电脑。
Hopcroft和Ullman(1979)以及Lewis和Papadimitriou(1981)都在确定性PDA的定义中使用了部分函数。他们首先用过渡关系定义了NPDA,然后当他们到达PDA时,Lewis和Papadimitriou说(第135页),
从直觉上讲,下推自动机是确定性的,如果每个配置最多有一个过渡可用。
霍普克罗夫特和乌尔曼说(第112页)时:
PDA ...是确定性的,即从任何ID最多只能进行一次移动。
在可计算性方面,NFA等同于DFA-有一种算法可以将NFA转换为DFA,而DFA只是不使用任何不确定性的NFA,因此它们都定义了常规语言集。
DFA的定义大致如下:
如果
在这种情况下,您不需要所有转换。如果自动机没有适合下一个输入符号的过渡,它将拒绝。
很好的练习是证明两种定义在可以接受的语言方面是等效的。