Compilerbauhome Compilerbau: Minimale deterministische endliche Automaten Prof. Dr. Uwe Schmidt FH Wedel

Minimale deterministische endliche Automaten

weiter

weiter

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.
weiter
1. Beispiel
(aa)*|(aaa)*
 
alle Wörter mit einer geraden oder durch 3 teilbaren Anzahl von a's.
der NFA
weiter
der DFA mit Mengen
der DFA
 
die Zustände 1 und 2 sind äquivalent, sie können zusammengefasst werden
weiter
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.
weiter
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
weiter
der minimale DFA
 
die Zustandsmenge kann von 6 auf 3 Zustände reduziert werden
weiter
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
weiter
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.
weiter
merke
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.
weiter

Letzte Änderung: 19.11.2019
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel