NEA / NFA — Nichtdeterministische endliche Automaten
Endliche Automaten mit mehreren erlaubten Nachfolgezuständen pro Eingabesymbol; akzeptieren ein Wort, sobald mindestens ein Berechnungspfad in einen Endzustand führt. Diese Seite enthält jetzt auch durchgerechnete Rechenaufgaben.
TL;DR
- Ein NEA (nichtdeterministischer endlicher Automat, engl. NFA) unterscheidet sich vom DEA nur in der Übergangsfunktion: $\delta: Z \times \Sigma \to \mathcal{P}(Z)$. Aus einem Zustand können bei einem Symbol mehrere Zustände zugleich erreicht werden.
- Ein Wort wird akzeptiert, wenn mindestens ein Berechnungspfad im Baum aller möglichen Übergänge in einem Endzustand endet.
- $\varepsilon$-NEAs erlauben zusätzlich spontane Übergänge ohne Eingabesymbol; sie sind aber nicht mächtiger, nur bequemer.
- NEAs und DEAs erkennen exakt dieselbe Sprachklasse — die regulären Sprachen. Die Potenzmengenkonstruktion liefert zu jedem NEA einen äquivalenten DEA.
- NEAs können exponentiell kleiner sein als äquivalente DEAs; das ist der Grund, weshalb man sie überhaupt einführt.
- Neu: Weiter unten findest du eine Sektion mit vollständig durchgerechneten Rechenaufgaben (Potenzmengenkonstruktion, $\varepsilon$-Elimination, Akzeptanzprüfung, NEA-Konstruktion).
1. Definitionen und Formalismen
Nichtdeterministischer endlicher Automat (NEA / NFA)
Ein NEA ist ein 5-Tupel $$M = (Z, \Sigma, \delta, S, E)$$ mit endlicher Zustandsmenge $Z$, endlichem Alphabet $\Sigma$, Übergangsfunktion $\delta: Z \times \Sigma \to \mathcal{P}(Z)$, Menge der Startzustände $S \subseteq Z$ und Menge der Endzustände $E \subseteq Z$. In vielen Skripten wird $S = \{z_0\}$ genutzt; hier ist das nicht zwingend.
Erweiterte Übergangsfunktion $\delta^*$
Für Worte definieren wir $\delta^*: \mathcal{P}(Z) \times \Sigma^* \to \mathcal{P}(Z)$ rekursiv: $$\delta^*(Q, \varepsilon) = Q \qquad \delta^*(Q, a \cdot w) = \delta^*\!\left(\bigcup_{q \in Q} \delta(q, a),\; w\right)$$ Die Fortführung arbeitet also auf einer Menge aktuell möglicher Zustände.
Akzeptierte Sprache
$$L(M) = \{\, w \in \Sigma^* \mid \delta^*(S, w) \cap E \neq \emptyset \,\}$$ Ein Wort ist genau dann in der Sprache, wenn die Menge der nach dem Wort erreichbaren Zustände wenigstens einen Endzustand enthält.
$\varepsilon$-NEA
Ein $\varepsilon$-NEA erweitert die Übergangsfunktion zu $\delta: Z \times (\Sigma \cup \{\varepsilon\}) \to \mathcal{P}(Z)$. $\varepsilon$-Übergänge werden ausgeführt, ohne ein Eingabesymbol zu lesen. Man definiert den $\varepsilon$-Abschluss $\varepsilon\text{-cl}(q)$ als Menge aller Zustände, die von $q$ aus über null oder mehr $\varepsilon$-Kanten erreichbar sind.
Äquivalenz zu DEAs
Zu jedem NEA $M$ existiert ein DEA $M'$ mit $L(M) = L(M')$. Der Beweis ist konstruktiv über die Potenzmengenkonstruktion. Damit gilt: die von NEAs erkannten Sprachen sind exakt die regulären Sprachen.
2. Kernkonzepte und Vorgehen
Ein Wort schrittweise durchführen
- Starte mit der Menge $Q_0 = S$ (bei $\varepsilon$-NEA: $\varepsilon\text{-cl}(S)$). Notiere sie als Wurzel des Baumes.
- Für jedes Symbol $a$ des Wortes: bilde die Vereinigung aller $\delta(q, a)$ über $q \in Q_i$. Das ist die neue aktive Menge $Q_{i+1}$.
- Bei $\varepsilon$-NEAs schließe nach jedem Schritt den $\varepsilon$-Abschluss an: $Q_{i+1} := \varepsilon\text{-cl}(Q_{i+1})$.
- Nach Verarbeitung des kompletten Wortes: prüfe, ob $Q_n \cap E \neq \emptyset$. Falls ja, akzeptiert; falls nein, verwerfen.
- Alternativ: zeichne einen Baum, in dem jeder Knoten einen aktuellen Zustand und jede Kante einen möglichen Übergang darstellt. Ein akzeptierender Pfad genügt.
Potenzmengenkonstruktion (NEA $\to$ DEA)
- Zustände des DEAs sind Teilmengen von $Z$, also Elemente von $\mathcal{P}(Z)$. Im Worst Case gibt es $2^{|Z|}$ davon.
- Startzustand ist $S$ (bzw. $\varepsilon\text{-cl}(S)$).
- Übergangsfunktion des DEAs: $\delta'(Q, a) = \bigcup_{q \in Q} \delta(q, a)$. Bei $\varepsilon$-NEAs zusätzlich $\varepsilon$-Abschluss anschließen.
- Endzustände sind alle Teilmengen $Q \subseteq Z$ mit $Q \cap E \neq \emptyset$.
- In der Praxis konstruiert man nur die vom Startzustand erreichbaren Teilmengen — meist sehr viel weniger als $2^{|Z|}$.
3. Beispiel durchgerechnet
Wir betrachten die Sprache $L = \{\, w \in \{a,b\}^* \mid w \text{ endet auf } ab \,\}$. Ein sehr kompakter NEA hierfür:
Formal: $Z = \{z_0, z_1, z_2\}$, $\Sigma = \{a, b\}$, $S = \{z_0\}$, $E = \{z_2\}$. Übergänge:
| $\delta$ | $a$ | $b$ |
|---|---|---|
| $z_0$ | $\{z_0, z_1\}$ | $\{z_0\}$ |
| $z_1$ | $\emptyset$ | $\{z_2\}$ |
| $z_2$ | $\emptyset$ | $\emptyset$ |
Wir prüfen das Wort $w = abab$ per Mengenverfolgung:
Q0 = {z0}
lies a → Q1 = δ(z0,a) = {z0, z1}
lies b → Q2 = δ(z0,b) ∪ δ(z1,b) = {z0} ∪ {z2} = {z0, z2}
lies a → Q3 = δ(z0,a) ∪ δ(z2,a) = {z0, z1} ∪ ∅ = {z0, z1}
lies b → Q4 = δ(z0,b) ∪ δ(z1,b) = {z0} ∪ {z2} = {z0, z2}
Q4 ∩ E = {z0, z2} ∩ {z2} = {z2} ≠ ∅ ⇒ w wird akzeptiert.
Der äquivalente DEA per Potenzmengenkonstruktion hat als erreichbare Zustände genau $\{z_0\}$, $\{z_0, z_1\}$ und $\{z_0, z_2\}$ — also drei Zustände, nicht acht. Endzustände sind alle Teilmengen, die $z_2$ enthalten, hier $\{z_0, z_2\}$.
| $\delta'$ | $a$ | $b$ |
|---|---|---|
| $\{z_0\}$ | $\{z_0, z_1\}$ | $\{z_0\}$ |
| $\{z_0, z_1\}$ | $\{z_0, z_1\}$ | $\{z_0, z_2\}$ |
| $\{z_0, z_2\}$ | $\{z_0, z_1\}$ | $\{z_0\}$ |
Rechenaufgaben mit Lösung
Trainiere hier den Klausur-Modus: Aufgabe lesen, selbst probieren, dann Lösung aufklappen und Schritt für Schritt vergleichen. Alle vier Aufgaben bilden zusammen den Kern der klausurrelevanten NEA-Verfahren ab.
Gegeben ist der NEA $M = (Z, \Sigma, \delta, S, E)$ mit $Z = \{z_0, z_1, z_2\}$, $\Sigma = \{a, b\}$, $S = \{z_0\}$, $E = \{z_2\}$ und Übergangstabelle:
| $\delta$ | $a$ | $b$ |
|---|---|---|
| $z_0$ | $\{z_0, z_1\}$ | $\{z_0\}$ |
| $z_1$ | $\emptyset$ | $\{z_2\}$ |
| $z_2$ | $\{z_2\}$ | $\{z_2\}$ |
Konstruieren Sie den äquivalenten DEA $M'$ mittels Potenzmengenkonstruktion. Geben Sie die vollständige Übergangstabelle des DEAs an und markieren Sie die Endzustände.
Lösung anzeigen
| $\delta'$ | $a$ | $b$ |
|---|---|---|
| $\to \{z_0\}$ | $\{z_0, z_1\}$ | $\{z_0\}$ |
| $\{z_0, z_1\}$ | $\{z_0, z_1\}$ | $\{z_0, z_2\}$ |
| $\ast\,\{z_0, z_2\}$ | $\{z_0, z_1, z_2\}$ | $\{z_0, z_2\}$ |
| $\ast\,\{z_0, z_1, z_2\}$ | $\{z_0, z_1, z_2\}$ | $\{z_0, z_2\}$ |
Gegeben ist der $\varepsilon$-NEA $M_\varepsilon$ mit $Z = \{z_0, z_1, z_2, z_3\}$, $\Sigma = \{a, b\}$, $S = \{z_0\}$, $E = \{z_3\}$ und folgenden Übergängen (leere Felder bedeuten $\emptyset$):
| $\delta$ | $a$ | $b$ | $\varepsilon$ |
|---|---|---|---|
| $z_0$ | $\{z_0\}$ | $\emptyset$ | $\{z_1\}$ |
| $z_1$ | $\emptyset$ | $\{z_1\}$ | $\{z_2\}$ |
| $z_2$ | $\emptyset$ | $\emptyset$ | $\{z_3\}$ |
| $z_3$ | $\emptyset$ | $\emptyset$ | $\emptyset$ |
(a) Berechnen Sie den $\varepsilon$-Abschluss jedes Zustands. (b) Konstruieren Sie einen äquivalenten NEA $M$ ohne $\varepsilon$-Übergänge.
Lösung anzeigen
| $\delta_{\text{neu}}$ | $a$ | $b$ |
|---|---|---|
| $\ast\, \to z_0$ | $\{z_0, z_1, z_2, z_3\}$ | $\{z_1, z_2, z_3\}$ |
| $\ast\, z_1$ | $\emptyset$ | $\{z_1, z_2, z_3\}$ |
| $\ast\, z_2$ | $\emptyset$ | $\emptyset$ |
| $\ast\, z_3$ | $\emptyset$ | $\emptyset$ |
Gegeben ist der NEA $M$ mit $Z = \{z_0, z_1, z_2\}$, $\Sigma = \{a, b\}$, $S = \{z_0\}$, $E = \{z_2\}$ und Übergängen:
| $\delta$ | $a$ | $b$ |
|---|---|---|
| $z_0$ | $\{z_0, z_1\}$ | $\{z_0\}$ |
| $z_1$ | $\emptyset$ | $\{z_2\}$ |
| $z_2$ | $\emptyset$ | $\emptyset$ |
Prüfen Sie, ob das Wort $w = aab$ akzeptiert wird. Zeichnen Sie alle Berechnungspfade als Baum und geben Sie an, welche Pfade akzeptierend enden.
Lösung anzeigen
z0
/ \
a: z0 z1
/ \ \
a: z0 z1 (Sackgasse: δ(z1,a) = ∅)
| \
b: z0 z2 ← akzeptierender Endzustand
Konstruieren Sie einen NEA für die Sprache $$L = \{\, w \in \{0, 1\}^* \mid w \text{ enthält das Teilwort } 010 \,\}$$ Geben Sie den NEA vollständig als 5-Tupel $M = (Z, \Sigma, \delta, S, E)$ an und begründen Sie kurz, warum $M$ genau $L$ akzeptiert. Prüfen Sie exemplarisch die Worte $w_1 = 1010$ und $w_2 = 1100$ per Mengenverfolgung.
Lösung anzeigen
| $\delta$ | $0$ | $1$ |
|---|---|---|
| $\to z_0$ | $\{z_0, z_1\}$ | $\{z_0\}$ |
| $z_1$ | $\emptyset$ | $\{z_2\}$ |
| $z_2$ | $\{z_3\}$ | $\emptyset$ |
| $\ast\, z_3$ | $\{z_3\}$ | $\{z_3\}$ |
Q0 = {z0}
lies 1 → Q1 = δ(z0,1) = {z0}
lies 0 → Q2 = δ(z0,0) = {z0, z1}
lies 1 → Q3 = δ(z0,1) ∪ δ(z1,1) = {z0} ∪ {z2} = {z0, z2}
lies 0 → Q4 = δ(z0,0) ∪ δ(z2,0) = {z0, z1} ∪ {z3} = {z0, z1, z3}
Q4 ∩ E = {z0, z1, z3} ∩ {z3} = {z3} ≠ ∅ ⇒ w1 akzeptiert.
Q0 = {z0}
lies 1 → Q1 = {z0}
lies 1 → Q2 = {z0}
lies 0 → Q3 = {z0, z1}
lies 0 → Q4 = δ(z0,0) ∪ δ(z1,0) = {z0, z1} ∪ ∅ = {z0, z1}
Q4 ∩ E = {z0, z1} ∩ {z3} = ∅ ⇒ w2 wird verworfen.
4. Typische Klausurfragen (Lesen!)
Aufgabentyp A — Wort schrittweise durchführen
Ein NEA wird als Zustandsdiagramm oder Übergangstabelle gegeben, ein Wort ist zu prüfen. Verlangt ist ein Berechnungsbaum oder eine Mengenverfolgung. Falle: nicht nur einen Pfad zeichnen und dann behaupten, es sei nicht akzeptiert — Nichtdeterminismus verlangt, dass alle Möglichkeiten mitgeführt werden.
Aufgabentyp B — Sprache eines NEAs bestimmen
Gegeben ist ein NEA, gefragt ist $L(M)$ in beschreibender oder regulärer Form. Man liest die Struktur des Automaten und identifiziert das Muster, das zum Endzustand führen muss. Falle: $\varepsilon$-Kanten übersehen oder mehrere Startzustände ignorieren.
Aufgabentyp C — Potenzmengenkonstruktion durchführen
Gegeben ist ein NEA, gefragt ist der äquivalente DEA. Nur die vom Startzustand tatsächlich erreichbaren Teilmengen aufzeichnen. Falle: alle $2^{|Z|}$ Teilmengen enumerieren — das ist meist unnötig und oft falsch, weil viele Teilmengen unerreichbar sind.
Aufgabentyp D — Argumentieren, warum NEAs nicht mächtiger sind
Gefragt: Zeige, dass zu jedem NEA ein sprachäquivalenter DEA existiert. Antwort: Skizze der Potenzmengenkonstruktion mit dem Argument, dass $\delta'(Q, a) = \bigcup_{q \in Q} \delta(q, a)$ deterministisch ist und $L(M) = L(M')$ per Induktion über die Wortlänge folgt.
5. Fragen zum Selbsttest
Wodurch unterscheidet sich ein NEA formal von einem DEA?
In der Signatur der Übergangsfunktion. Ein DEA hat $\delta: Z \times \Sigma \to Z$, ein NEA hat $\delta: Z \times \Sigma \to \mathcal{P}(Z)$. Zusätzlich darf ein NEA mehrere Startzustände besitzen, ein DEA genau einen. Ein DEA ist damit ein Spezialfall eines NEA, bei dem $|\delta(q, a)| \leq 1$ für alle $q$ und $a$.
Wann akzeptiert ein NEA ein Wort?
Ein NEA akzeptiert das Wort $w$, sobald es mindestens einen Berechnungspfad gibt, der in einem Endzustand endet. Formal: $\delta^*(S, w) \cap E \neq \emptyset$. Es reicht ein einziger erfolgreicher Pfad; die Existenz mehrerer verwerfender Pfade schadet nichts.
Erklären Sie den Unterschied zwischen einem NEA und einem $\varepsilon$-NEA.
Ein $\varepsilon$-NEA erlaubt zusätzlich spontane Übergänge ohne Eingabesymbol. Die Übergangsfunktion hat dann Signatur $\delta: Z \times (\Sigma \cup \{\varepsilon\}) \to \mathcal{P}(Z)$. $\varepsilon$-NEAs erkennen dieselbe Sprachklasse wie NEAs und DEAs; sie sind lediglich notationell bequemer, etwa beim Konstruieren aus regulären Ausdrücken.
Warum ist die Potenzmengenkonstruktion im Worst Case exponentiell?
Weil die Zustände des DEAs Teilmengen der Zustände des NEAs sind. Ein NEA mit $n$ Zuständen kann bis zu $2^n$ DEA-Zustände erzwingen. Es gibt konkrete Sprachfamilien, bei denen dieser exponentielle Anstieg auch tatsächlich unumgänglich ist; in der Praxis sind aber meist nur wenige Teilmengen erreichbar.
Welche der folgenden Automaten akzeptiert das Wort $ab$: ein NEA, in dem $\delta(z_0, a) = \{z_0, z_1\}$ und $\delta(z_1, b) = \{z_2\}$ mit $E = \{z_2\}$?
Ja. Nach Lesen von $a$ ist die aktive Menge $\{z_0, z_1\}$. Nach Lesen von $b$ ist $\delta(z_0, b) \cup \delta(z_1, b) = \emptyset \cup \{z_2\} = \{z_2\}$. Da $z_2 \in E$, wird $ab$ akzeptiert.
Warum reicht es nicht, im Berechnungsbaum nur einen einzigen Pfad zu zeichnen?
Weil das Wort schon akzeptiert wird, sobald irgendein Pfad in einem Endzustand endet. Wer nur einen Pfad zeichnet, kann fälschlich zu dem Schluss kommen, das Wort werde abgelehnt, obwohl ein paralleler Pfad erfolgreich gewesen wäre. Deshalb entweder alle Pfade als Baum aufzeichnen oder die Mengenverfolgung $\delta^*$ verwenden.
Zeigen Sie, dass zu jedem NEA ein sprachäquivalenter DEA existiert.
Konstruktion: setze $Z' = \mathcal{P}(Z)$, $\delta'(Q, a) = \bigcup_{q \in Q} \delta(q, a)$, $S' = S$, $E' = \{\, Q \subseteq Z \mid Q \cap E \neq \emptyset \,\}$. Per Induktion über die Wortlänge zeigt man $\delta'^*(S, w) = \delta^*(S, w)$ für alle $w$. Damit gilt $w \in L(M) \Leftrightarrow \delta^*(S, w) \cap E \neq \emptyset \Leftrightarrow \delta'^*(S, w) \in E' \Leftrightarrow w \in L(M')$. Der so konstruierte DEA $M'$ ist sprachäquivalent zu $M$.
Welche Sprachklasse wird von NEAs erkannt?
Exakt die regulären Sprachen. NEAs, DEAs und $\varepsilon$-NEAs sind bezüglich der von ihnen erkennbaren Sprachen gleich mächtig. Der Unterschied liegt nur in der Zustandszahl und in der Ausdrucksbequemlichkeit beim Konstruieren.
Gibt es Sprachen, für die NEAs deutlich kleiner sind als äquivalente DEAs?
Ja. Ein klassisches Beispiel ist $L_n = \{\, w \in \{a, b\}^* \mid \text{das } n\text{-t letzte Zeichen ist } a \,\}$. Ein NEA benötigt hier $n+1$ Zustände, ein äquivalenter DEA hingegen mindestens $2^n$, weil er sich die letzten $n$ Zeichen merken muss. Dieser Größenunterschied ist der Grund, weshalb NEAs eingeführt werden, obwohl sie nichts Neues erkennen.
Wie unterscheidet man in einer Übergangstabelle einen NEA von einem DEA?
Ein DEA hat in jeder Zelle genau einen Folgezustand und ist für alle Paare aus $Z \times \Sigma$ definiert. Ein NEA erlaubt in einer Zelle Mengen mit null, einem oder mehreren Folgezuständen. Ein leerer Eintrag $\emptyset$ ist für NEAs zulässig; für DEAs bedeutet er einen Fehler oder einen impliziten Fangzustand. Sobald irgendwo mehr als ein Folgezustand steht, handelt es sich um einen NEA.
6. Dos und Donts in der Klausur
Dos
- Startmenge $S$ mit $\varepsilon$-Abschluss initialisieren, falls $\varepsilon$-Kanten vorhanden sind.
- Bei Wortverfolgung immer die komplette aktive Menge notieren, nicht nur einen Pfad.
- Bei der Potenzmengenkonstruktion nur die erreichbaren Teilmengen aufzeichnen.
- Endzustandsbedingung explizit schreiben: $Q_n \cap E \neq \emptyset$.
- Bei Argumentationen die Signaturen von $\delta$ und $\delta^*$ sauber verwenden.
Donts
- Nicht alle $2^{|Z|}$ Teilmengen enumerieren, wenn nur wenige erreichbar sind.
- Nicht behaupten, ein Wort werde abgelehnt, nur weil ein Pfad im Sackgassenzustand endet.
- Nicht $\varepsilon$-Übergänge vergessen, wenn der Automat ein $\varepsilon$-NEA ist.
- Nicht NEA und DEA vermischen: ein DEA darf pro Zelle nur einen Zustand haben.
- Nicht behaupten, NEAs seien mächtiger als DEAs. Sie sind gleich mächtig, nur kompakter.