【发布时间】:2015-11-19 12:10:10
【问题描述】:
我有一个关于有限状态机的迫切问题,我们如何知道这种语言需要 2 个状态或 3 个状态?我的意思是有什么公式吗? 虽然我相信,我们总是会努力尽量减少状态数量,但仍然我们如何确定根据任何语言或字符串创建的状态数量(无需实际构建 DFA)?
【问题讨论】:
标签: finite-automata state-machine formal-languages
我有一个关于有限状态机的迫切问题,我们如何知道这种语言需要 2 个状态或 3 个状态?我的意思是有什么公式吗? 虽然我相信,我们总是会努力尽量减少状态数量,但仍然我们如何确定根据任何语言或字符串创建的状态数量(无需实际构建 DFA)?
【问题讨论】:
标签: finite-automata state-machine formal-languages
您实际上是在询问 DFA 最小化。这是一个经过充分研究的问题,已经开发了许多算法。上面的Wikipedia article 是一个很好的起点。
支配状态数的理论结果是Myhill-Nerode theorem,但是这个定理没有给出任何快速的公式。您必须确定根据语言定义的等价关系中等价类的数量。 Hopcroft 的 DFA 最小化算法本质上是一种用于确定 Myhill-Nerode 等价关系中的等价类的算法。我怀疑任何更直接地使用 Myhill-Nerode 的尝试都会导致类似于 Hopcroft 算法的结果,尽管我不是该领域的专家。
【讨论】:
Aho-corasick 多重模式匹配算法是一个只有一种状态的有限状态机。
【讨论】: