Next: Reguläre Ausdrücke 36
Up: Reguläre Sprachen (Typ 3)
Previous: Deterministische (endliche) Automaten
Contents
Index
Subsections
Nichtdeterministische (endliche) Automaten
Bei einem nichtdeterministischen (endlichen) Automaten (NFA
nondeterministic finite automation) ist es zugelassen, dass vom selben
Zustand aus mehrere (oder auch garkeine) Pfeile ausgehen,
die mit
beschriftet sind.
Ein NFA ist ein -Tupel
:
- Zustandsmenge (endlich)
- Eingabealphabet (endlich)
-
-
(Zustands-)Überführungsfunktion
-
Startzustandsmenge
-
Endzustandsmenge
Vom Prinzip her wie beim DFA (siehe sub:Zustandsgraph DFA).
Einzige Unterschiede sind:
- Es gibt mehrere Startsustände
- Es kann von einem Zustand zwei Pfeile mit der gleichen Beschriftung
zu unterschiedlichen Zuständen geben
Zu einem gegebenen NFA
definieren
wie eine Funktion
durch eine induktive Definition wie folgt (erweitert die Definition
von von Einzelzeichen zu ganzen Wörtern):
Die Menge der akzeptierten Wörter bildet die durch den NFA akzeptierte
Sprache:
- eine Sprache wird durch einen endlichen Automaten erkannt
die Sprache ist regulär (
)
- Jede von einem NFA akzepierbare Sprache ist auch durch einen DFA akzeptierbar
Sei
ein gegebener NFA. Wir konstruieren
einen DFA
, der ebenfalls
die gleiche Sprache erkennt
wie
folgt (der neue DFA hat Mengen als Zustände):
- Terminalalphabet bleibt unverändert.
-
die neuen Zustände sind alle möglichen Teilmengen der alten Zustandsmenge
-
die Startzustandsmenge ist der neue Startzustand
-
Alle Zustandsmengen, die Endzustände enthalten sind auch neue Endzustände
-
Das Bild eines Urbildes, ist die Menge von allen möglichen Ableitungen
von Elementen aus dem Urbild.
Hierbei entstehen in der Regel sehr viele unnötige Zustände und Überführungsfunktionen.
Besser ist den Algorithmus aus sub:Vom-NFA-zumDFA-efficient
zu nutzen.
Der Laufzeitkomplexität ist dieses Algorithmus ist
.
Vom NFA zum DFA - effizientere
Methode
Bei folgenden Algorithmus bietet es sich an, zunächst einen Graphen
von zu zeichnen, und anhand diesem den Graphen von anhand
des Algorithmusses zu erstellen. Diesen Graphen sollte man dann erst
zum Schluss als Funktion nierderschreiben.
Sei
ein gegebener NFA. Wir konstruieren
einen DFA
, der ebenfalls
die gleiche Sprache erkennt
wie
folgt (der neue DFA hat Mengen als Zustände):
Der Laufzeitkomplexität ist dieses Algorithmus ist
.
Für jede reguläre Grammatik
(Typ 3)
gibt es einen NFA
mit
.
Diese lässt sich wie folgt konstruieren:
-
Die Zustandsmenge besteht aus der Menge der Variablen, zuzüglich einer
neuen Variable (hier )
-
Der Startzustand ist die Menge, die nur die Startvariable enthält
-
Die Menge der Endzustände enthält und wenn es eine Produktion
der Form
gibt zusätzlich
auch noch
-
Erstelle für alle Produktionen der Form
eine Regel für mit
-
Erstelle für alle Produktionen der Form
eine Regel für mit
Der Laufzeitkomplexität ist dieses Algorithmus ist
.
Next: Reguläre Ausdrücke 36
Up: Reguläre Sprachen (Typ 3)
Previous: Deterministische (endliche) Automaten
Contents
Index
Marco Möller 18:11:27 24.10.2005