[ Seitenende ] [ Überkapitel ] [ Bitte Skript-Fehler melden ]
Deterministische Endliche Automaten (DEA)
Idee des akzeptierenden deterministischen endlichen Automaten
Ein endlicher Automat ist eine (abstrakte) Maschine zur zeichenweisen Erkennung von Wörtern einer regulären Sprache. Sie ist nach jedem Verarbeitungsschritt in genau einem Zustand. Bei jedem Schritt wird ein Zeichen gelesen und aufgrund des aktuellen Zustands und dem Lesezeichen in einen Nachfolgezustand gewechselt. Wenn kein Zeichen mehr zu lesen ist und die Maschine in einem Endzustand ist, gilt die gelesene Zeichenkette als akzeptiert. Beim Einlesen des ersten Zeichens einer Zeichenkette ist der Automat immer im sogenannten Startzustand.
Definition 4.2.1 (DEA, finite state automaton).
Ein deterministischer endlicher Automat A = 〈Φ,Σ,δ,S,F〉 besteht aus
Hinweis
Die Übergangsfunktion δ bestimmt den Folgezustand, der ausgehend vom aktuellen Zustand beim Lesen eines einzelnen Zeichens erreicht wird.
Zustandübergangsdiagramm
Es stellt einen EA anschaulich als gerichteten Graphen dar.
Definition 4.2.3 (Zustandsübergangsfunktion für Zeichenketten).
Die auf Zeichenketten erweiterte Übergangsfunktion δ∗ : Φ × Σ∗→ Φ bestimmt den Zustand nach dem vollständigen Lesen eines Wortes.
Die Sprache L(A) eines DEA A = 〈Φ,Σ,δ,S,F〉 ist die Menge aller Zeichenketten, für die δ∗ ausgehend vom Startzustand einen Endzustand ergibt.
Beispiel-Berechnung für δ∗ aus Beispiel ??
Beispiel-Evaluation
Siehe Abb. 4.2 auf Seite 125.
Partielle Zustandübergangsdiagramme
Die Definition von δ als totale Funktion verlangt für alle Zustände und Zeichen aus Σ eine Kante. In
der Linguistik zeigt man oft nur Knoten und Kanten, die für das Akzeptieren einer Zeichenkette
relevant sind.
Fehlerzustand (error state) und Fehlerübergänge
Um ein partielles Übergangsdiagramm zu vervollständigen, füge einen Zustand EF dazu, und mache ihn zum Endknoten aller nicht-bestehenden Kanten.
Beispiel 4.2.6 (Direktes Einlesen von EA im PROLOG-Format).
xfst[0]: read prolog
Type one or more networks in prolog format. Use ^D to terminate input. arc(ex2,0,1,"a"). arc(ex2,1,2,"b"). final(ex2,2). |
Beispiel 4.2.7 (Anzeige von Informationen zum obersten EA auf dem Stack).
xfst[1]: print net
Sigma: a b Size: 2 Net: ex2 Flags: epsilon_free Arity: 1 s0: a -> s1. s1: b -> fs2. fs2: (no arcs) |
Wichtige in xfst berechenbare Eigenschaften von EA
Tests bezüglich endlicher Automaten auf dem Stack
Wichtige in xfst berechenbare Beziehungen von EA
Tests bezüglich endlicher Automaten auf dem Stack (EA2 auf EA1)
Anstelle von apply up kann man auch apply down sagen. Statt test lower-universal auch upper-universal. Diese Sprechweisen hängen mit den Transduktoren zusammen, welche eine “obere” und “untere” Sprache haben. Bei den endlichen Automaten sind aber beide Sprachen gleich.
Nicht-deterministischer endlicher Automat (NEA)
Idee des akzeptierenden nicht-deterministischen endlichen Automaten
Im Gegensatz zum DEA kann ein NEA nach jedem Verarbeitungsschritt in mehr als einem Zustand sein. Bei jedem Schritt wird ebenfalls ein Zeichen gelesen und aufgrund der möglichen aktuellen Zustände und dem Lesezeichen in die zulässigen Nachfolgezustände gewechselt.
Beispiel-Evaluation
Siehe Abb. 4.2.2 auf Seite 134.
Definition 4.2.8 (NEA, non-deterministic finite state automaton).
Ein nicht-deterministischer endlicher Automat A = 〈Φ,Σ,δ,S,F〉 unterscheidet sich von einem DEA nur in der Übergangsfunktion. Vom aktuellen Zustand kann man mit einem Zeichen zu beliebig vielen Folgezuständen übergehen.
Beispiel 4.2.9 (Tabellendarstellung und Zustandsdiagramm).
δ | a | b |
s0 | {s1,fs2} | {fs2} |
s1 | ∅ | {fs2} |
fs2 | ∅ | ∅ |
Definition 4.2.10 (Zustandsübergangsfunktion für Zeichenketten).
Die auf Zeichenketten erweiterte Übergangsfunktion δ∗ : Φ × Σ∗→ ℘(Φ) bestimmt die Menge der erreichbaren Zustände nach dem vollständigen Lesen einer Zeichenkette.
Die Sprache L(A) eines NEA A = 〈Φ,Σ,δ,S,F〉 ist die Menge aller Zeichenketten, für die δ∗ ausgehend vom Startzustand mindestens einen Endzustand enthält.
Idee des akzeptierenden nicht-deterministischen endlichen Automaten mit ε
Bei jedem Schritt wird wie beim NEA ein Zeichen gelesen und aufgrund der möglichen aktuellen Zustände und dem Lesezeichen in die zulässigen Nachfolgezustände gewechselt.
Die aktuellen Zustände umfassen aber immer auch alle Zustände, welche durch beliebig viele ε-Übergange verbunden sind.
Bei einem ε-Übergang wird kein Zeichen gelesen.
Definition 4.2.12 (ε-NEA, non-deterministic finite state automaton).
Ein nicht-deterministischer endlicher Automat mit ε-Übergängen A = 〈Φ,Σ,δ,S,F〉 unterscheidet sich von einem NEA nur in der Übergangsfunktion.
δ : Φ × Σ ∪{ε}→ ℘(Φ)
Die Bestimmung der Übergangsfunktion δ∗ auf Zeichenketten setzt auf der reflexiven und transitiven Hülle der ε-Übergänge auf.
Die ε-Hülle δε∗ : Φ → ℘(Φ) eines ε-NEA für einen Zustand T ∈ Φ ist rekursiv definiert durch:
Definition 4.2.14 (Zustandsübergangsfunktion für Zeichenketten). Die auf Zeichenketten erweiterte Übergangsfunktion δ∗ : Φ × (Σ ∪{ε})∗→ ℘(Φ) bestimmt die Menge der erreichbaren Zustände nach dem vollständigen Lesen einer Zeichenkette.
Die Sprache eines ε-NEA ist gleich definiert wie bei NEA ohne ε.
QUIZ Leichtes QUIZ zu endlichen Automaten
Äquivalenz der Sprachen von DEA, NEA und ε-NEA
Entfernung von ε-Übergängen
Für jeden ε-NEA lässt sich ein NEA (ohne ε) konstruieren, der die gleiche Sprache akzeptiert.
xfst[1]: epsilon-remove
net
Entfernung von Nicht-Determinismus
Für jeden NEA lässt sich ein DEA konstruieren, der die gleiche Sprache akzeptiert.
xfst[1]: determinize
net
Entfernung unnötiger Zustände
Für jeden DEA lässt sich ein DEA mit minimaler Anzahl Zustände konstruieren, der die gleiche
Sprache akzeptiert.
xfst[1]: minimize
net
Der Befehl minimize net beinhaltet die Entfernung von ε-Übergängen und die Determinisierung. D.h. ein minimisierter EA ist immer deterministisch und ohne ε-Übergängen.
Beispiel für äquivalente EA
Siehe Abb. 82 auf Seite 146.