NFA和epsilon NFA的实际例子

时间:2012-10-30 16:27:51

标签: automata

NFA和epsilon NFA的实时示例是什么,即在设计编译器时使用的实际示例

4 个答案:

答案 0 :(得分:2)

任何人使用正则表达式时,都会使用有限自动机。如果你对正则表达不太了解,那么让我告诉你它们非常普遍 - 在许多生态系统中,它是大多数人在面对从字符串中获取结构化数据时尝试应用的第一个工具。理解自动机是理解(和推理)正则表达式的一种方法,如果你在数学上有倾向,那就是一种非常可行的方法。

实际上,今天的正则表达式引擎已经超越了这些数学概念并增加了允许执行超过FA允许的功能。然而,许多正则表达式不使用这些功能,或以有限的方式使用它们,以便用FAs实现它们。

现在,我之前只讨论过有限自动机。 NFA是一个特定的FA,就像DFA一样,两者可以相互转换(从技术上讲,任何DFA都已经是NFA)。因此,虽然您可以在上面用“NFA”替换“有限自动机”,但要注意它不一定是引导下的NFA。

答案 1 :(得分:0)

如同@delnan解释的那样,自动机通常以正则表达式的形式使用。但是,他们使用的不止这些。自动机通常用于建模硬件和软件系统并验证其特定属性。您可以通过查看model checking找到更多信息。在Introduction to Automata, Languages, and Computation的介绍中可以找到一个真正简化的激励示例。

答案 2 :(得分:0)

让我们不要忘记基本上基于有限自动机的Markov chains。结合贝尔佩斯提到的硬件和软件建模,这是一个非常强大的工具。

如果您想知道为什么epsilon NFA被认为是NFA的变体,那么我认为没有充分的理由。它们以相同的方式解释,除了每一步可能不再是一个单位时间,但是NFA也不是真的。

答案 3 :(得分:0)

一个有点模糊但有效的例子是the aho-corasick algorithm,它使用有限自动机在文本中搜索多个字符串