next up previous contents index
Next: Reguläre Ausdrücke 36 Up: Reguläre Sprachen (Typ 3) Previous: Deterministische (endliche) Automaten   Contents   Index

Subsections


Nichtdeterministische (endliche) Automaten

Definition 30

Bei einem nichtdeterministischen (endlichen) Automaten (NFA nondeterministic finite automation) ist es zugelassen, dass vom selben Zustand $ z\in Z$ aus mehrere (oder auch garkeine) Pfeile ausgehen, die mit $ a\in\Sigma$ beschriftet sind.

Ein NFA $ M$ ist ein $ 5$-Tupel $ M=\left(Z,\Sigma,\delta,S,E\right)$:

Zustandsgraph

Vom Prinzip her wie beim DFA (siehe sub:Zustandsgraph DFA). Einzige Unterschiede sind:

Sprache des NFA 31

Zu einem gegebenen NFA $ M=\left(Z,\Sigma,\delta,S,E\right)$ definieren wie eine Funktion $ \hat{\delta}:\mathcal{P}\left(Z\right)\times\Sigma^{*}\rightarrow\mathcal{P}\left(Z\right)$ durch eine induktive Definition wie folgt (erweitert die Definition von $ \sigma$ von Einzelzeichen zu ganzen Wörtern):


$\displaystyle \hat{\delta}\left(Z',\varepsilon\right)$ $\displaystyle =$ $\displaystyle Z'\qquad\forall Z'\subseteq Z$  
$\displaystyle \hat{\delta}\left(Z',ax\right)$ $\displaystyle =$ $\displaystyle \cup_{z\in Z'}\hat{\delta}\left(\delta\left(z,a\right),x\right)$  

Die Menge der akzeptierten Wörter bildet die durch den NFA akzeptierte Sprache:

$\displaystyle T\left(M\right)=\left\{ x\in\Sigma^{*}\vert\hat{\delta}\left(S,x\right)\cap E\neq\emptyset\right\} $

Vom NFA zum DFA - Potenzmengenkonstruktion 32

Sei $ M=\left(Z,\Sigma,\delta,S,E\right)$ ein gegebener NFA. Wir konstruieren einen DFA $ M'=\left(Z',\Sigma,\delta',z_{0}',E'\right)$, der ebenfalls die gleiche Sprache erkennt $ T\left(M\right)=T\left(M'\right)$ wie folgt (der neue DFA hat Mengen als Zustände):

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 $ O\left(c^{n}\right)$.


Vom NFA zum DFA - effizientere Methode

Bei folgenden Algorithmus bietet es sich an, zunächst einen Graphen von $ M$ zu zeichnen, und anhand diesem den Graphen von $ M'$ anhand des Algorithmusses zu erstellen. Diesen Graphen sollte man dann erst zum Schluss als Funktion nierderschreiben.

Sei $ M=\left(Z,\Sigma,\delta,S,E\right)$ ein gegebener NFA. Wir konstruieren einen DFA $ M'=\left(Z',\Sigma,\delta',z_{0}',E'\right)$, der ebenfalls die gleiche Sprache erkennt $ T\left(M\right)=T\left(M'\right)$ wie folgt (der neue DFA hat Mengen als Zustände):

Der Laufzeitkomplexität ist dieses Algorithmus ist $ O\left(c^{n}\right)$.

Von einer Grammatik zum NFA 35

Für jede reguläre Grammatik $ G=\left(V,\Sigma,P,S\right)$ (Typ 3) gibt es einen NFA $ M=\left(Z,\Sigma,\delta,S',E\right)$ mit $ L\left(G\right)=M\left(G\right)$. Diese lässt sich wie folgt konstruieren:

Der Laufzeitkomplexität ist dieses Algorithmus ist $ O\left(n\right)$.


next up previous contents index
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