finite-automata - 如何根据任意语言确定有限自动机的状态数?

标签 finite-automata state-machine formal-languages

我有一个关于有限状态机的紧迫问题,即我们如何知道这种语言需要 2 个状态或 3 个状态?我的意思是有什么公式吗? 尽管我相信,我们始终会努力减少状态数量,但仍然如何根据任何语言或字符串确定要创建的状态数量(无需实际构建 DFA)?

最佳答案

您实际上是在询问DFA 最小化。这是一个经过充分研究的问题,已经开发了许多算法。 Wikipedia article这是一个很好的起点。

控制状态数量的理论结果是 Myhill-Nerode theorem ,但这个定理没有给出任何快速公式。您必须确定根据语言定义的等价关系中的等价类的数量。 Hopcroft 的 DFA 最小化算法本质上是一种用于确定 Myhill-Nerode 等价关系中的等价类的算法。我怀疑任何更直接地使用 Myhill-Nerode 的尝试都会导致类似于 Hopcroft 算法的结果,尽管我不是该领域的专家。

关于finite-automata - 如何根据任意语言确定有限自动机的状态数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33803587/

相关文章:

haskell - 我如何构造一个函数/类型来观察这个状态机中的每个转换?

vhdl - 简单状态机问题

scala - Scala 中的通用有限状态机(转换器)

compilation - 为什么在 NFA 中使用 epsilon 转换?

finite-automata - Brzozowski 代数方法在此 FA 上的应用

algorithm - 如何合并两个自动机?

c - 用 C 语言处理不同资源的游戏状态

computer-science - 递归和递归可枚举语言有什么区别

formal-languages - 轻度上下文敏感语法

turing-machines - 证明这种语言是不可判定的