【问题标题】:How to determine the number of states of finite automata according to any language?如何根据任何语言确定有限自动机的状态数?
【发布时间】:2015-11-19 12:10:10
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 不,不是最小化!我只是想问有没有办法说将为这种语言创建这么多状态?
    • 但是您正在问一个关于最小化的问题——需要多少个状态?天真的答案是构建最小 DFA 并查看它有多少个状态。如果您的问题是是否可以在不显式构建的情况下确定最小 DFA 中的状态数 - 您应该编辑您的问题以使其明确,
    • 我是有限状态机的初学者。如果有任何 DFA 具有最小状态,我们能否仅通过查看任何特定语言或字符串来判断用于构造最小 DFA 的状态数量?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-09-18
      • 2020-09-09
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 2019-08-08
      • 2014-03-25
      • 2011-11-22
      • 2015-09-15
      相关资源
      最近更新 更多