以下内容大部分来自Sippu和Soisalon-Soininen的解析理论。
令为DFA的状态集。令为输入字母。令为机器的大小。练习3.40给出了用于状态最小化的算法。如Wikipedia所述,Hopcroft算法的运行时间为而Moore算法的运行时间为。T | M | = Ö (| Ť |·&| Q |)ø (| Ť |·&| Q | 2)ø (| Ť |·&| Q |·&日志| Ť |)ø (| Ť | 2·&| Q |)问Ť| 中号| =O( | T| ⋅ | 问 | )O (| T| ⋅ | 问 |2)O (| T| ⋅ | 问 | ⋅日志| Ť| )O (| T|2⋅ | 问| )
定理3.30指出,子集构造可以在产生大小为(实际上,如果生成的自动机具有状态,则运行时间为)。因此,两次反转和第二次确定在运行时间上都是无关紧要的,因此Brzozowski算法的渐近运行时间与子集构造的渐近运行时间相同。O (2 | T | + log | Q |)| T ' | (| T ' | + | T | ⋅ | M |)⋅ | 问|O (2| Ť| +日志| Ť| +日志| 问 |)O (2| Ť| +日志| 问 |)| Ť′|(| T′| + | Ť| ⋅ | 中号| )⋅ | 问 |
这意味着在最坏的情况下,Brzozowski的算法要比其他三种算法快得多。请注意,确实发生了最坏的情况:语言的NFA的经典示例具有个状态,其对应的最小DFA具有个状态,而反之NFA的确定性是确定性的,因此在此反向NFA上运行Brzozowski的算法会触发最坏情况的行为。 k + 1 O (2 k)(a | b )∗一种ķk + 1O (2ķ)
但是,如果子集构造产生大小为的自动机,则其运行时间也为。在现实生活中的投入。此外,如果在计算状态的闭合时采取适当的措施,那么在大多数情况下(闭合很小的情况下),这样做可以更快地完成,从而节省因子在实践中(出于与在现实世界中的示例可以相当快地计算出传递闭包的本质相同的原因)。此外,如果输入和中间自动机是稀疏的,这意味着状态具有很少的转变,则因数将被保存,从而在“良好”输入上给出运行时间。| Ť′| =O( | T| )O (| T|2⋅ | 问|2)| Ť|| 问 |O (| T| ⋅ | 问 | )
不幸的是,我对Hopcroft或Moore的算法还不够熟悉,无法对典型情况下的运行时间进行分析。维基百科在某些情况下谈论运行时间,这将使这三种算法具有可比性。O (| T|日志日志| Ť| )