我有一个关于有限状态机的问题,我们怎么知道这种语言需要2个状态还是3个状态?我的意思是有任何公式吗? 虽然我相信,我们总是努力减少状态数量,但仍然我们如何根据任何语言或字符串确定要创建的状态数量(没有实际构建DFA)?
答案 0 :(得分:2)
您实际上在询问 DFA最小化。这是一个经过充分研究的问题,已经开发了许多算法。 Wikipedia article就是一个很好的起点。
控制状态数的理论结果是Myhill-Nerode theorem,但这个定理没有给出任何快速公式。您必须确定根据语言定义的等价关系中的等价类的数量。 Hopcroft用于DFA最小化的算法本质上是用于确定Myhill-Nerode等价关系中的等价类的算法。我怀疑任何更直接使用Myhill-Nerode的尝试都会导致类似于Hopcroft的算法,尽管我不是该领域的专家。
答案 1 :(得分:0)
Aho-corasick多模式匹配算法是一个只有1个状态的有限状态机。