【发布时间】:2011-01-02 13:47:27
【问题描述】:
首先,这不是要求算法将 NFA 转换为 DFA 的问题。
已知(并证明)一个 NFA 的等效 DFA 最多有 2n 个状态,尽管大多数时候它的状态数与 NFA 或多或少相同.
我如何预测 NFA 等效 DFA 将具有的状态数的估计值?哪种特定类型的 NFA 需要等效的 DFA 才能具有 2n 个状态?
我提出这个问题的原因是能够“发明”一些 NFA,这些 NFA 在不考虑最小化的情况下肯定会产生 2n - 1 个状态加上“死状态”。
【问题讨论】:
-
我 5 年前上过这门课。举一个 NFA 的例子,好吗?
-
NFA 是一种状态机,对于给定的状态和给定的输入令牌,存在不止一种转换的可能性。因此,NFA 可能是您可以使用“a”从状态 1 到状态 2 或状态 3,或者具有自循环或 epsilon 转换(不需要输入令牌的转换)的状态。
-
您的意思是如何在不实际生成 DFA 的情况下以编程方式预测 DFA 将具有的状态数?在我看来,任何预测状态数的算法本质上都等同于生成自动机本身的算法,因此预测状态数不会为您节省任何工作。但如果有人能以不同的方式告诉我,我会感到惊喜。我认为具有最大非确定性分支的 NFA 会产生最复杂的 DFA。
标签: computer-science finite-automata computation-theory