Minimierung von endlichen deterministischen Automaten.
Minimaler Automat
Bei der Transformation von regulären Ausdrücken über
nichtdeterministische endliche Automaten in
deterministische endliche Automaten entstehen häufig
nicht die einfachst-möglichen endlichen Automaten.
Es ist häufig möglich, einen kleineren äquivalenten Automaten zu
finden, d.h. einen Automaten mit weniger Zuständen,
der aber die gleiche Sprache akzeptiert.
Äquivalente Zustände
um einen minimalen Automaten zu konstruieren, muss man äquivalente Zustände zusammenfassen.
Zwei Zustände sind äquvalent, wenn über sie die gleiche Menge von Wörtern akzeptiert wird.
Definition
Sei ein Automat A = (Q, I, q0, δ, F) gegeben.
Zwei Zustände q1 und q2 sind genau dann
äquivalent, wenn gilt: die Automaten
A1 = (Q, I, q1, δ, F)
und
A2 = (Q, I, q2, δ, F)
akzeptieren die gleiche Sprache, d.h.
A1 und A2 sind äquivalent
hieraus folgt, dass Endzustände und Nicht-Endzustände nicht äquivalent sind. Die einen akzeptieren das leere Wort, die anderen nicht.
Die Partitionierung in Mengen äquivalenter Zustände bildet die Zustandsmenge
des minimalen Automaten.
Algorithmus
zur Minimierung
.1
partitioniere die Zustandsmenge in die beiden
Teilmengen der Endzustände und Nicht-Endzustände. Diese Ausgangspartitionierung wird schrittweise verfeinert,
bis alle Mengen nur noch äquivalente Zustände enthalten.
.2
wiederhole den folgenden Schritt für alle Mengen
der Partition und für alle Zeichen des
Eingabealphabets bis keine feinere
Partitionierung mehr entsteht:
.3.a
wähle eine Menge P aus der Partition und ein
Eingabezeichen i.
.3.b
Berechne für alle
Zustände q aus der
Menge P die
Menge P' aus
der Partition, in der
delta(q,i) liegt.
.3.c
Fasse alle Zustände
qi aus P zu Mengen Pneu zusammen, für die
delta(qi,i) in der
gleichen Partitionsmenge P' liegt.
.3.d
liefert dieser Prozess mehrere Mengen Pneu,
so entferne P aus der Partition und füge alle Pneu-Mengen hinzu.
1. Beispiel
(aa)*|(aaa)*
alle Wörter mit einer geraden oder durch 3 teilbaren Anzahl von a's.
der NFA
der DFA mit Mengen
der DFA
die Zustände 1 und 2 sind äquivalent, sie können zusammengefasst werden
der minimale DFA
Die "natürliche" Lösung:
Ein Automat, der modulo 6 zählt
und sich bei 0,2,3 und 4 a's in einem Endzustand befindet.
2. Beispiel
c*a(a|c)*b(a|b|c)*
alle Wörter, in denen das 1. a vor dem 1. b steht
der DFA
der minimale DFA
die Zustandsmenge kann von 6 auf 3 Zustände reduziert werden
3. Beispiel
((b|c)*a(b|c)*a)*(b|c)*
Alphabet A = {a, b, c}
alle Wörter mit gerader Anzahl von a's
der DFA
der minimale DFA
die Zustandsmenge kann von 5 auf 2 Zustände reduziert werden,
und es entsteht der Automat, den man auch per Hand konstruieren würde.
Die Minimierung wird in Scanner-Generatoren durchgeführt, um die
Übergangstabelle zu verkleinern, diese steigt vom Platzbedarf linear mit der
Anzahl der Zustände. Auf die Geschwindigkeit der Automaten hat diese Optimierung
keinen Einfluss.