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

时间:2015-11-19 12:10:11

标签: finite-automata state-machine formal-languages

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

Aho-corasick多模式匹配算法是一个只有1个状态的有限状态机。