Vorlesungsskript - Institut für Programmierung und Reaktive Systeme
Vorlesungsskript - Institut für Programmierung und Reaktive Systeme
Vorlesungsskript - Institut für Programmierung und Reaktive Systeme
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
2.2 Reguläre Sprachen <strong>und</strong> endliche Automaten<br />
Da der durch das Verfahren erzeugte DEA i. allg. nicht der “kleinstmögliche” Automat<br />
ist, wird im Anschluß an die Potenzmengenkonstruktion ein weiteres Verfahren,<br />
genannt Minimalisierung, durchgeführt, das zu dem erzeugten DEA einen weiteren<br />
DEA konstruiert, der dieselbe Sprache akzeptiert <strong>und</strong> über eine minimale Zustandsmenge<br />
verfügt. In dem durch die Potenzmengenkonstruktion erzeugten DEA kann<br />
es noch Zustände mit gleichem “Akzeptanzverhalten” geben. Zwei Zustände p <strong>und</strong> q<br />
besitzen das gleiche Akzeptanzverhalten, wenn der Automat aus p <strong>und</strong> q unter allen<br />
Eingabewörtern entweder immer oder nie in einen Endzustand geht. Die Minimalisierung<br />
beruht auf dem Zusammenfassen dieser Zustände zu einem gemeinsamen<br />
Zustand.<br />
Der folgende Algorithmus beschreibt das Verfahren der Minimalisierung.<br />
Algorithmus Minimalisierung.<br />
Eingabe: DEA M = (Q, Σ,δ,q0,F).<br />
Ausgabe: DEA Mmin = (Qmin, Σ,δmin,q0,min,Fmin) mit Qmin minimal.<br />
Methode: Die Zustandsmenge von M wird in eine Partition aufgeteilt, die schrittweise<br />
verfeinert wird. Für Zustände in verschiedenen Klassen einer Partition<br />
ist schon bekannt, daß sie verschiedenes Akzeptanzverhalten zeigen, d.h. daß es<br />
mindestens ein Wort w gibt, unter welchem aus einem der Zustände ein Endzustand<br />
erreicht wird <strong>und</strong> unter dem anderen nicht. Deshalb beginnt man mit der<br />
Partition Π = {F,Q − F }. In jedem Iterationsschritt des Verfahrens wird eine<br />
Klasse K aus der Partition entfernt <strong>und</strong> durch eine Menge von Verfeinerungen<br />
Ki ersetzt. Dabei gilt, daß <strong>für</strong> alle Zustände q in einer Verfeinerung Ki der<br />
Nachfolgezustand δ(q,a) unter einem Zeichen a in einer gemeinsamen Klasse<br />
K ′ i liegt. Wird eine solche Verfeinerung gef<strong>und</strong>en, wird die Variable changed auf<br />
true gesetzt. Der Algorithmus hält, wenn in einem Schritt die Partition nicht<br />
mehr verfeinert wurde. Da in jedem Iterationsschritt nur Klassen der aktuellen<br />
Partition evtl. in Vereinigungen neuer Klassen zerlegt werden, Q <strong>und</strong> damit<br />
auch P(Q) aber endlich sind, terminiert das Verfahren. Die Klassen der dann<br />
gef<strong>und</strong>enen Partition sind die Zustände von Mmin. Es gibt einen Übergang zwischen<br />
zwei neuen Zuständen P <strong>und</strong> R unter einem Zeichen a ∈ Σ, wenn es einen<br />
Übergang δ(p,a) = r mit p ∈ P <strong>und</strong> r ∈ R in M gab.<br />
1 Π = {F,Q − F };<br />
2 do changed := false ;<br />
3 Π ′ := Π;<br />
4 foreach K ∈ Π do<br />
5 Π ′ := (Π ′ − {K}) ∪ {{Ki}1≤i≤n} , <strong>und</strong> die Ki sind maximal mit<br />
6 K = �<br />
1≤i≤n Ki , <strong>und</strong> ∀a ∈ Σ : ∃K ′ i ∈ Π : ∀q ∈ Ki : δ(q,a) ∈ K ′ i<br />
7 if n > 1 then changed := true fi (∗ K wurde<br />
aufgespalten ∗)<br />
25