为什么我们要研究有限自动机的所有三种表示形式?


9

DFA,NFA和epsilon NFA三种功能都使我们能够代表特定的常规语言。使用这些表示中的任何一种,我们都可以得到相同的正则表达式,那么为什么我们需要研究有限自动机的所有三种表示形式?关于NFA可以做什么而DFA无法做到的一些解释,也就是NFA可以帮助我们设计不确定性。例如,在设计游戏(国际象棋)时,我们有很多选择可以从NFA轻松表示的特定位置移走特定的棋子。但是,当使用NFA或DFA可以完成epsilon NFA时又有什么用呢?


2
有三个以上。这些只是教科书中常见的内容。Epsilon转换对于证明定理很有用,但是我不确定我是否看到过它们是出于自己的目的而在模型中使用的。
wvxvw

3
@wvxvw,用于将正则表达式转换为NFA的算法非常自然地使用转换。它们不仅“仅用于证明”,而且在非确定性环境中很自然。ϵ
vonbrand '16

Answers:


13

第四次添加常规语法。还有其他...

ϵ

正则表达式(以及正则语法)是完全不同的形式主义,恰好描述了相同的语言集。同样,这一事实的证明探索了重要的相互关系,并且是形式主义看起来非常不同,基于根本不同的概念但描述相同语言的一个例子。同样,在一个相当简单的环境中。

对于“现实世界”的使用,您可以从正则表达式开始,并获得用于高性能搜索的最小DFA。数字电路本质上是DFA,了解它们是计算机工程的中心。最后但并非最不重要的一点是,即使系统离真正的DFA很远,以这种方式查看它也可能有助于理解它,但通常可以将系统建模为“处于一种状态”并“移动到另一个”。

稍后添加:正如Raphael所指出的,直接解释要搜索的NFA可能会更有效,因为创建DFA可能会很昂贵,而NFA可能会小得多。


1
“还有其他” -几十....
拉斐尔

1
您可能要提到NFA可能会有用(如果DFA是唯一的替代方法),因为它们可以小很多,但是使用一个来检查单词是否被接受并不昂贵。
拉斐尔

5

研究DFA与NFA的不同形式/对应关系的原因多种多样。这里有一些来自高级复杂性理论的精选亮点。

  • NFA是用于“并行计算”的有趣模型。人们可以将通过NFA进行的状态升级视为DFA计算的并行版本。因此DFA与NFA计算反映了顺序计算与并行计算的某些区别。通过比较这两种情况,还有助于研究问题的固有算法复杂性。

  • NFA通常用在正则表达式匹配系统中(在各种语言中普遍存在,尤其是在unix时代产生的现代语言中),通常允许对正则表达式进行描述,这些正则表达式可以转换为NFA,然后可以转换为DFA以帮助更有效的搜索。

  • 该地区仍然存在许多未解决的问题,并且经常根据DFA / NFA对应关系对其进行研究。参见例如DFA(cstheory stackexchange)上是否还有任何未解决的问题。令人惊讶的是,其中一些与CS的深层区域相关联,包括P与NP问题,即DFA的交集非空。另外一个开放区域是例如计算DFA的最小NFA

  • 也为一些相关的有识之士看到这个semifamous / highvoted问题cstheory.se什么是启蒙我应该学习有限自动机后可以实现?

  • DFA与NFA的应用非常多样化,并且在其中经常利用两者之间的对应关系。字符串模式匹配已在上面提到,但是DFA / NFA构造经常用于(自动)语音识别中。参见例如,这篇被高度引用的论文:语音识别中的加权有限状态传感器 / Mohri,Pereira,Riley


2

与NFA相比,DFA的实现更容易,因为它们的下一个状态由功能决定,而NFA可以帮助用户轻松地表达他们想要作为输出的内容,因为NFA可以在多个路径之间进行选择。epsilon-NFA是NFA的扩展,可以在不使用任何输入符号的情况下完成转换。


2
总结:NFA传达了非确定性的想法,这是一个非常深刻的想法(其“发明家” Michael O. Rabin和Dana S. Scott因这些想法而获得了图灵奖)
Ran G.

1

DFA的状态数令人讨厌。有时会爆炸。

简而言之,如果状态数太高(仍然是有限的,但我们生活在一个物理世界中),那么您就必须提高抽象级别,以应对因降低速度而带来的复杂性。其他模型(如NFA和AFA)将提供更简洁的方式来表示常规语言。

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.