是否必须在确定性有限自动机中为每个可能的字母定义过渡?


13

明天是我的演讲,我想阐明我的概念…

我已经读过DFA中的“对于每种状态,应定义所有可能的符号(字母)的转换”。

是否为每个状态在DFA中定义了所有可能符号上的强制转换?如果不是,那么请举任何例子?


1
欢迎来到CS.SE!我们希望您每个帖子只问一个问题。这看起来像两个单独的问题。最好单独发布第二个(关于NFA)。另外,您是否在此站点上进行了彻底搜索,并检查了教科书中的正式定义?如果没有,您应该在询问之前先这样做。并且您应该向我们展示这个问题时所发现的问题。
DW

感谢您的热情欢迎,我也确实搜查这个网站,并在谷歌一样好,但我得到这实际上是混淆了我相反的观点..
HQuser

第二个问题已删除,但是您可以在编辑历史记录中找到它,并使用右上角的“问问题”按钮将其作为单独的问题单独发布。但是,在询问之前,请务必进行建议的研究,并在问题中告诉我们您进行了哪些研究,包括告诉我们您阅读了哪些教科书。至于这个问题,您仍然可以编辑此问题,以通过在您的教科书中查找形式定义(包括问题中的形式定义)并显示您对该定义的解释来解决我在此处给出的反馈。
DW

9
无论如何,这似乎已被cs.stackexchange.com/q/12587/755覆盖。请社区投票:这是重复的吗?
DW

1
我不太了解您的问题。似乎是“我读过定义是X。定义是X吗?”
David Richerby

Answers:


12

DFA由以下数据指定:

  • Σ
  • Q
  • q0Q
  • FQ
  • δ:Q×ΣQ

δ


7
除了有时用部分转换函数定义DFA之外。
吉尔斯(Gilles)'所以别再邪恶了'

6
没错,DFA没有“官方”定义。但是OP的阅读背叛了这个特定定义的影响。
Yuval Filmus's

应该明确地说过渡函数是合计的。
瑞安

24

假设允许DFA具有丢失的过渡。如果遇到未定义转换的符号会怎样?结果是不确定的。这似乎违反了DFA的“确定性”特征。

但是,将不完整的 DFA转换为完整的DFA 并不容易。只需添加一个新状态,illegal然后将所有未定义的转换映射到该illegal状态。最后,为每个符号添加从illegal状态到自身的过渡。此illegal状态通常称为接收状态,因为一旦数据落入接收器,就无法脱身。

因此,从实际的角度来看,只要您有明确定义的方法来处理缺失的过渡,就没有什么意义。


10
小心:未定义的过渡不会使自动机具有不确定性,只是不完整。DFA中有一些定义允许进行这种未定义的转换,恰恰是因为要系统地完成该转换很简单。
Darkhogg '16

1
@Darkhogg,我未必不同意,但不完整DFA的确定性不取决于特定实现如何处理这些未定义/缺失的转换吗?这样的实现是否会隐含地完成DFA?
内森·戴维斯

1
不,它不依赖于实现,它依赖于定义。如果您将DFA定义为具有总体转换函数,然后确定使用部分函数,​​则您将具有未定义的行为,并且最终可能会产生不确定性,但这不是给定的。但是,有时会明确定义DFA 以使用部分函数,​​并且在遇到未定义的转换时,行为是“不接受”。对于任何实现,都没有不确定性或任何时髦的地方,因为即使没有转换,结果也已定义。
Darkhogg

顺便说一句:您也可以进行相反的转换。采取“全部自动机”并删除下沉状态以获得“不完全自动机”。最后,唯一的区别是,完全自动机始终能够读取一个单词,此后它决定是否接受该单词,而部分自动机则可以在读取所有单词之前拒绝某些单词字符。
巴库里

5

ΣQρQ×Σ×Qδ:(Q×Σ)2Q|δ(q,σ)|1qQσΣδ(q,σ)qQσΣ

如果单词具有接受能力,则被NFA接受。确定性自动机最多可以运行一次。一个完整的自动机至少运行一次。

一些作者将修剪自动机定义为其中每个状态都处于从初始状态到最终状态的某种路径上的自动修剪。对于某些语言,不能同时具有修剪和完整的自动机。在这些情况下,将完整性要求排除在确定性自动机的定义之外是很方便的。

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.