✖

Umwandlung eines NEA in einen DEA

Wir zeigen, wie man einen nichtdeterministischen Automaten in einen deterministischen Automaten umwandelt. Damit beweisen wir, dass nichtdeterministische und deterministische Automaten gleich mächtig sind.

Grundidee

Gegeben sei ein nichtdeterministischer Automat ⟨QN, ΣN, δN, q0, FN⟩ ohne ε-Übergänge. Wir konstruieren einen deterministischen Automaten ⟨QD, ΣD, δD, p0, FD⟩ so, dass

  • QD ⊆ 2QN
  • ΣD = ΣN
  • p0 = {q0}
  • FD = {Q ∈ QD ∣ Q ∩ FN ≠ ∅}

Die Übergangsfunktion δD definieren wir folgendermaßen:

∀Q∈QD,a∈ΣD:δD(Q,a)=⋃q∈QδN(q,a)

Was bedeutet das? Ein nichtdeterministischer Automat kann sich gleichzeitig in mehreren Zuständen befinden, sodass wir zum Beispiel in die Situation kommen können, dass unser nichtdeterministischer Automat in den Zuständen {q0; q1} ist. Durch das Lesen des nächsten Symbols, zum Beispiel 1, können wir in die Zustandsmenge {q0; q2; q3} gelangen. In der deterministischen Version desselben Automaten zeigt sich das so, dass wir zwei Zustände erzeugen, sie {q0; q1} und {q0; q2; q3} nennen und zwischen ihnen einen Übergang für das Symbol 1 einführen. Formal kommen wir so von einem Zustand in den anderen, aber dank der Benennung wissen wir, dass wir im nichtdeterministischen Automaten in zwei bzw. in drei Zuständen gelandet wären.

Beispiel

Nehmen wir diesen nichtdeterministischen Automaten:

Um den deterministischen Automaten zu konstruieren, müssen wir vor allem eine neue Übergangsfunktion konstruieren. Dabei hilft uns eine Tabelle, in die wir alle Übergänge eintragen. Am Anfang sieht die Tabelle so aus:

Zustand/Symbol01{q0}

In der linken Spalte haben wir am Ende des Algorithmus alle Zustände des deterministischen Automaten. Die ausgefüllte Tabelle legt dann die Übergangsfunktion fest. Jetzt tragen wir in die Tabelle ein, in welche Zustände wir gelangen, wenn wir im Zustand {q0} sind und auf der Eingabe die Symbole 0 und 1 stehen.

Zustand/Symbol01{q0}{q1}{q1;q2}

Aus dem Zustand q0 führt für das Symbol 0 ein Übergang nur in den Zustand q1, während für das Symbol 1 Übergänge in die Zustände q1 und q2 führen. Jetzt fügen wir der Tabelle zwei neue Zustände hinzu: {q1} und {q1; q2}. Warum? Sobald wir in die Tabelle eine Zustandsmenge eintragen, die wir noch nicht in der linken Spalte haben, fügen wir diese Zustandsmenge dort hinzu.

Zustand/Symbol01{q0}{q1}{q1;q2}{q1}{q1;q2}

und füllen wieder aus. Beim Zustand {q1; q2} dürfen wir nicht vergessen, beide Zustände zu prüfen, d. h., wohin wir aus dem Zustand q1 gelangen, vereinigt mit dem, wohin wir aus dem Zustand q2 gelangen.

Zustand/Symbol01{q0}{q1}{q1;q2}{q1}{q0;q1;q3}{q0;q3}{q1;q2}{q0;q1;q3}{q0;q3}

Wir haben mehrere neue Zustände erhalten, die wir der Tabelle hinzufügen müssen:

Zustand/Symbol01{q0}{q1}{q1;q2}{q1}{q0;q1;q3}{q0;q3}{q1;q2}{q0;q1;q3}{q0;q3}{q0;q1;q3}{q0;q3}

…und tragen wieder die Übergänge ein:

Zustand/Symbol01{q0}{q1}{q1;q2}{q1}{q0;q1;q3}{q0;q3}{q1;q2}{q0;q1;q3}{q0;q3}{q0;q1;q3}{q0;q1;q3}{q0;q1;q2;q3}{q0;q3}{q1}{q1;q2}

Die Zustände {q0; q1; q3}, {q1} und {q1; q2} haben wir schon dort, also fügen wir nur den Zustand {q0; q1; q2; q3} hinzu.

Zustand/Symbol01{q0}{q1}{q1;q2}{q1}{q0;q1;q3}{q0;q3}{q1;q2}{q0;q1;q3}{q0;q3}{q0;q1;q3}{q0;q1;q3}{q0;q1;q2;q3}{q0;q3}{q1}{q1;q2}{q0;q1;q2;q3}{q0;q1;q3}{q0;q1;q2;q3}

Wir haben keinen neuen Zustand mehr hinzugefügt, also ist die Tabelle ausgefüllt. Jetzt müssen wir nur noch das Diagramm zeichnen. Die Zustände des deterministischen Automaten stehen in der ersten Spalte, die Übergänge für die Symbole 0 und 1 in den weiteren. Jeder Zustand, der irgendeinen Endzustand des ursprünglichen Automaten enthält, ist auch in diesem Automaten ein Endzustand. Das heißt, jeder Zustand, der q3 enthält, ist ein Endzustand. Der Automat sieht so aus:

Wir können zeigen, dass der Automat wirklich richtig funktioniert. Wir versuchen, das Wort 11001 zu akzeptieren. Im deterministischen Automaten gehen wir den Weg

q0→1q1,q2→1q0,q3→0q1→0q0,q1,q3→1q0,q1,q2,q3

und der Automat würde das Wort akzeptieren, weil der letzte Zustand {q0; q1; q2; q3} ein Endzustand ist. Im nichtdeterministischen Automaten würden wir während der Simulation in dieselben Zustände gelangen, d. h., wir würden im Zustand q0 beginnen und für das Symbol 1 in die Zustände {q1; q2} kommen. Das nächste Symbol 1 würde uns in die Zustände {q0; q3} bringen usw. für die weiteren Zustände. Am Ende würden wir uns in allen Zuständen {q0; q1; q2; q3} wiederfinden und der Automat würde das Wort akzeptieren.

Quellen

Kapitel: Endlicher Automat, Vollständiger Automat, Nichtdeterministischer endlicher Automat, Simulation eines nichtdeterministischen Automaten, Umwandlung eines NEA in einen DEA