Der größte Teil des Folgenden stammt aus der Parsing-Theorie von Sippu und Soisalon-Soininen.
Sei die Menge der Zustände des DFA. Sei das Eingabealphabet. Sei die Größe der Maschine. Aufgabe 3.40 liefert einen -Algorithmus zur Zustandsminimierung. Wie Wikipedia beschreibt , hat Hopcrofts Algorithmus eine Laufzeit von und Moores Algorithmus eine Laufzeit von .T | M | = O ( | T | ⋅ | Q | ) O ( | T | ⋅ | Q | 2QT|M|=O(|T|⋅|Q|)O ( | T | ⋅ | Q | ⋅ log | T | ) O ( | T | 2 ⋅ | Q | )O(|T|⋅|Q|2)O(|T|⋅|Q|⋅log|T|)O(|T|2⋅|Q|)
Satz 3.30 besagt, dass die Teilmengenkonstruktion in was einen Automaten der Größe ergibt (tatsächlich, wenn der resultierende Automat Zustände hat, ist die Laufzeit ). Die beiden Umkehrungen und die zweite Bestimmung sind daher für die Laufzeit unerheblich, sodass die asymptotische Laufzeit des Brzozowski-Algorithmus mit der der Teilmengenkonstruktion identisch ist.O ( 2 | T | + logO(2|T|+log|T|+log|Q|)O(2|T|+log|Q|)|T′|(|T′|+|T|⋅|M|)⋅|Q|
Dies bedeutet, dass der Brzozowski-Algorithmus im schlimmsten Fall exponentiell langsamer ist als die anderen drei Algorithmen. Es ist zu beachten, dass der schlimmste Fall tatsächlich eintritt: Das klassische Beispiel der NFA für die Sprache hat Zustände und die entsprechende minimale DFA hat Zustände, während die umgekehrte der NFA ist deterministisch, daher löst das Ausführen des Brzozowski-Algorithmus für diese umgekehrte NFA das Worst-Case-Verhalten aus.(a|b)∗akk+1O(2k)
Wenn die Teilmengenkonstruktion jedoch Automaten der Größe ergibt , dann ist ihre Laufzeit auch , was häufig der Fall ist auf realen Eingaben. Wenn beim Berechnen des Abschlusses eines Zustands die richtige Sorgfalt angewendet wird, kann dies in den meisten Fällen (d. H. In Fällen, in denen der Abschluss klein ist) viel schneller erfolgen, wodurch ein Faktor gespart wird in der Praxis (aus dem im Wesentlichen gleichen Grund, dass Transitive Closures an realen Beispielen relativ schnell berechnet werden können). Wenn der Eingangs- und der Zwischenautomat dünn sind, was bedeutet, dass Zustände wenige Übergänge haben, dann ist ein Faktorwird gespeichert, was bei 'guten' Eingängen eine Laufzeit von ergibt .O ( | T|T′|=O(|T|) | T | | Q | O( | T | ⋅ | Q | )O(|T|2⋅|Q|2)|T||Q|O(|T|⋅|Q|)
Leider kenne ich die Algorithmen von Hopcroft oder Moore nicht gut genug, um ihre Laufzeiten in typischen Fällen zu analysieren. Wikipedia spricht in einigen Fällen von einer Laufzeit von , wodurch die drei Algorithmen vergleichbar wären.O(|T|loglog|T|)