在DFA中,每个州的字母符号是否都有过渡?


12

如果不是,那么对于某些状态和某些符号,不存在意味着什么?qaδ(q,a)


我称这种非确定性自动机在相同状态和输入符号确定性上永远不会有多个过渡。它只是不符合DFA定义。
reinierpost 2013年

1
如果安排DFA的规则以使当磁带上的符号为a时它永远都不会处于q状态,那么我们真的需要定义δ(q,a)吗?
Peter Shor 2013年

4
答案显然是,这取决于人们如何定义“确定性有限自动机”。因此,我不确定这个问题是否具有建设性,因为没有一个普遍接受的正确答案-即,这个问题征求了意见和辩论。
Patrick87 2013年

1
如果应该是一个函数,则必须为所有对定义。δq,a
vonbrand 2015年

就我的DFA而言,这是“中止”条件,或者如果您希望隐式跳转到“拒绝”状态。
Yves Daoust 2015年

Answers:


22

您似乎偶然发现了一个有争议的问题。显然,计算机科学家喜欢争论。我当然喜欢争论,所以就去!

我的回答是明确的:不。确定性有限自动机不需要为每个符号从每个状态过渡。δ(q,a)不存在时的含义仅仅是DFA不接受输入字符串。

尽管您可以创建DFA的定义,要求它确实存在δ(q,a),但并非并非如此,因为缺少过渡而导致转换后的结构(无论您如何称呼)都不确定,因为许多评论者都是如此声称。如果您正在学习自动机理论课程,那么下一个主题将是无上下文语言和下推自动机,其中不确定性和确定性自动机之间的区别非常重要,您需要使用正确的非确定性定义。

非确定性与不止一个法律过渡有关。

我认为我们都同意以下Wikipedia定义(我将在稍后显示的内容有点含糊):

确定性有限自动机M为5元组(QΣδq0F),由

  1. 有限状态集(Q
  2. 一组有限的输入符号,称为字母(Σ
  3. 转移函数δ×Σ
  4. 起始状态(q0
  5. 一组接受状态(F)。

w=一种1个一种2一种ñ是字母Σ的字符串。如果在以下条件下Q中存在状态序列r 0r 1r n,则自动机中号接受字符串w[R0[R1个[Rñ

  1. [R0=q0
  2. [R一世+1个=δ[R一世一种一世+1个,对于一世=0ñ-1个
  3. [RñF

歧义性和争议在于转换函数δ第一个项目符号列表中的数字“ 3”)的定义。我们都同意,将DFA与NFA区别开的是δ是函数而不是关系。但是δ部分函数还是全部函数

如果δ是部分函数,则DFA的定义就可以正常工作。给定一个输入字符串,如果使用输入符号a j到达状态q一世,而没有下一个状态,则自动机根本不接受。一种Ĵ

此外,当您扩展此定义以创建下推自动机的定义时,必须区分带有部分功能的过渡函数的下推自动机归为确定性而不是非确定性。

如果偏函数困扰您,那么这里是使δ成为总函数的琐碎变换。(这种转变是一样的子集构造算法,它增加最多O(1)状态,是线性的原数状态,并可以扩展到掌上电脑的工作。这些事实都不是子集构造算法的真实)

  1. 添加状态qË[R[RØ[R
  2. 对于每对q一世sĴ其中δ是未定义的,定义δq一世sĴ=qË[R[RØ[R

此自动机的δ是一个总函数,接受和拒绝原始自动机所接受和拒绝的状态集完全相同。

编辑,2019年1月

评论员@Alex Smart正确地批评了我既不提供参考,也不解释我们为什么要关心。因此,这里去:

我们关心确定性与非确定性的确切定义的原因是,某些类型的非确定性自动机比其确定性表亲更强大,而某些类型的非确定性自动机并不比其确定性表亲更强大。对于有限自动机和图灵机,确定性和非确定性变体具有同等的功效。对于下推式自动机,有些语言的区别很重要:有些NPDA接受该语言,而没有DPDA接受该语言。对于线性有界自动机,问题(或上次我检查过)是开放的。在DPDA NPDA功率的增加来自于允许多个 转换,而不是将转换功能从总功能转换为部分功能。

来自编译器社区的书籍:

Aho和Ullman,《编译器设计原理》,1977年:首先用过渡关系定义NFA(第88页),然后(第90-91页):

我们说,如果1,则有限自动机是确定性的。它在输入ϵ上没有转移。2.对于每个状态s和输入符号一种,最多有一个边缘标记的一种离去s

1988年重印的Aho,Sethi和Ullman的《Compilers,Principles,tecniques,and tools》类似,它首先用过渡关系定义了NFA,然后(p。115-116):

确定性有限自动机(DFA,对于短)是一种非确定性自动机finitie的一种特殊情况,其中...有标记的至多一个边缘一种离去s

(请注意,@ 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定义了确定性有限自动机(它们称为普通自动机)具有转换函数“在所有状态和符号对的笛卡尔乘积s×Σ上定义”。(我将其解释为总功能)。

有趣的是,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。您是正确的一件事:部分函数还是全部函数?大多数数学家在说函数时都表示总函数。他们说部分功能,而不是说全部功能。这就是为什么我认为我们需要在问题中包括正式定义。qË[R[RØ[R
scaaahu 2013年

2
部分函数版本是Hopcroft和Ullman中提供的版本,如果有区别的话。因此,偏函数固有地不确定的想法绝非标准。
jmite 2013年

1
@jmite并不是说部分函数意味着不确定性。正是总功能暗示着确定性,才使总功能成为更好的选择。当然,您使用的定义或多或少是任意的。
Patrick87 2013年

3
δ是偏函数时,称为不完全确定有限自动机。δ
scaaahu 2013年

1
正如您所显示的,部分函数版本可以轻松转换为全部函数版本,据我所知,通过允许部分翻译功能,在教学上或其他方面,您绝对不会获得任何收益。龙特别提到功能是全部。当选择非标准定义绝对没有任何收获时,为什么我们要在世界上为标准教科书中已经明确定义的事物争论不休?
亚历克斯·斯玛特

8

δq一种q一种ΣΣ

ε

在可计算性方面,NFA等同于DFA-有一种算法可以将NFA转换为DFA,而DFA只是不使用任何不确定性的NFA,因此它们都定义了常规语言集。


2
这取决于定义。有几个是等效的。
拉斐尔

3
+1最好坚持这一定义,恕我直言,因为每个人都会同意,为每个(状态,符号)对精确定义一个过渡的FA构成有效的DFA。
Patrick87 2013年

1
当您尝试将其扩展到确定上下文无关语言是确定性语言还是不确定性语言时,此定义是绝对错误的。缺少转换的下推自动机可以始终转换为每个状态/输入符号/堆栈符号仅具有一个转换的下推自动机。与每状态/输入符号/堆栈符号的多个可能的转换非确定性的下推自动机可以必然被变换成确定下推自动机。(例如:在公认的语言是非确定性上下文无关的情况下。)
Wandering Logic

2
@jmite只需独立于DFA定义修剪自动机即可。我认为,根据Myhill-Nerode定理,最少的DFA具有正确数量的状态,这是非常重要的,而只有在失效状态下才能获得。
Patrick87 2013年

4
ϵϵϵ

6

DFA的定义大致如下:

如果 一种|δq一种|1个q一种δqεδq一种=一种Σ一种

在这种情况下,您不需要所有转换。如果自动机没有适合下一个输入符号的过渡,它将拒绝。

很好的练习是证明两种定义在可以接受的语言方面是等效的。


我认为OP的问题需要进行修改,以包含DFA的正式定义。
scaaahu 2013年

0

在DFA的定义中,每个州都应使用£中的所有字母。例如,如果£= {a,b,c}和Q = {q0,q1,q2},则所有这些状态都应具有转换为其他状态或相同状态的所有a,b,c符号。


1
与现有答案有什么区别,以便您发布新答案?
xskxzr

0

最简单的答案是,为左侧符号添加状态。与从NFA转换为DFA一样,对于某些符号,我们得到Φtransion,这表示我们为其创建了死态。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.