nfa与dfa的时间复杂性权衡

时间:2011-01-02 21:37:23

标签: compiler-construction time time-complexity dfa nfa

我正在寻找有关哪种更好用以及在编译器中使用nfa或dfa的情况的讨论。什么是模拟nfa vs dfa的时间复杂度权衡,哪一个在编译器的什么情况下更合适?

1 个答案:

答案 0 :(得分:1)

  • 来自NFA的DFA的构建时间为O(2 ^ m),其中m是节点数。
  • DFA的运行时间是O(n),其中n是输入字符串的长度。这是因为给定字符串的DFA只有一条路径。
  • NFA的构建时间应为O(m),其中m是节点数
  • NFA的运行时间为O(m²n),因为它是非确定性的,计算机必须检查字符串中当前字符的每个可能路径。 (假设没有前瞻,它不知道下一个角色会是什么,所以它会进入死胡同)

这些数字可能会给你一个简短的想法