有限自动机有什么用?

时间:2009-10-03 20:17:30

标签: theory finite-automata

finite automata有什么用?以及我们在计算理论中研究的所有概念。我还没见过他们的用途。

8 个答案:

答案 0 :(得分:25)

它们是计算机科学和编程中广泛使用的概念的理论基础,理解它们有助于您更好地理解如何使用它们(以及它们的极限)。你应该遇到的三个基本问题是:按照权力的增加顺序:

  • 有限自动机,等同于正则表达式。正则表达式广泛用于编程以匹配字符串和提取文本。它们是使用基本字符,分组和重复描述一组有效字符串的简单方法。他们可以做很多事,但他们无法匹配平衡的括号。
  • 下推式自动机,相当于无上下文语法。当正则表达式不够强大时,文本/输入解析器和编译器会使用这些(在学习有限自动机时学到的东西之一就是正则表达式不能做的事情,这对于知道何时编写正则表达式以及何时编写是至关重要的使用更复杂的东西)。无上下文语法可以描述“语言”(有效字符串集),其中解析字符串中某一点的有效性不依赖于已经看到的其他内容。
  • 图灵机,相当于一般计算(你可以用电脑做的任何事情)。当您了解这些内容时,您学到的一些知识可以让您了解计算本身的局限性。一个好的理论课程将教你停止问题,它可以让你找出无法编写程序的问题。一旦你发现了这样的问题,那么你就知道要停止尝试(或者将其改进为可能的东西)。

了解这些不同计算机制的理论和局限性,使您能够更好地理解问题和程序,并更深入地思考编程。

大约一年前,在一个自由编码交换网站上发布了一份工作请求,主要是要求一个解决停机问题的程序。有几个人回应了提议,称他们“理解要求”并且可以“立即开始”。编写满足要求的程序是不可能的。理解计算理论使您不会成为那个在公开场合表明他真的不懂计算的投标人(并且在宣布理解和提出要约之前没有彻底调查问题)。

答案 1 :(得分:4)

有限自动机对于通信协议和匹配正则表达式的字符串非常有用。

答案 2 :(得分:2)

自动机用于硬件和软件应用程序。请阅读此处http://en.wikipedia.org/wiki/Finite-state_machine#Implementation

的实施部分

还有一种基于Automata的编程概念。请查看此http://en.wikipedia.org/wiki/Automata-based_programming

欢呼声

答案 3 :(得分:2)

有限自动机是例如用于解析正式语言。这意味着有限自动机在编译和解释器技术的创建中非常有用。

Historicaly,有限状态机显示很多问题都可以通过一个非常简单的自动化来解决。

答案 4 :(得分:1)

尝试参加编译器课程。您很可能使用有限状态自动机生成编译器或解释器来实现递归下降解析器。

答案 5 :(得分:1)

每个GUI,每个工作流程都可以视为有限自动机。将每个页面视为状态,并由于某些事件而发生转换。在满足一系列条件之前,您可能无法进入某个页面或工作流程的下一个阶段。

答案 6 :(得分:1)

例如,管理具有已定义生命周期的某些对象的状态。 例如:书店的订单。 订单可以具有以下状态: -ordered -payed -运输 完成度的数

有限自动机的程序知道一个状态如何被其他状态改变。

答案 7 :(得分:1)

有限自动机是一种状态机(SM)。通常,SM用于解析formal languages

您可以使用许多实体作为正式语言,而不仅仅是字符。

常规语言是一种形式语言。 有一些理论表明,什么类型的SM更好地解析常规语言: http://en.wikipedia.org/wiki/Regular_language