Tach alle zusammen!
Weiß nicht, ob's jetzt noch jemandem nützt, aber so erkläre ich mir immer die Funktionsweise eines nichtdeterministisch arbeitenden Automaten:
Ein
deterministischer Automat wechselt in einen anderen Zustand, wenn die gegebene Situation die Voraussetzungen dafür erfüllt. Es gibt dabei immer nur einen möglichen Folgezustand. Der Automat arbeitet sozusagen
linear, das heißt, entweder geht's weiter, oder halt nicht.
Bei einem
nichtdeterministischer Automaten hingegen gibt es mehrere mögliche Folgezustände: Die Voraussetzungen für den Wechsel in diese Folgezustände sind gleich, nur in ihren Auswirkungen unterscheiden sie sich. Was macht der Automat in diesem Fall? Er kann sich ja nicht einfach (in weiser Voraussicht) für eine der mehreren möglichen Reaktionen entscheiden!
Also verfolgt er einfach alle Möglichkeiten parallel, er
verzweigt sozusagen in seinem Ablauf und es bildet sich ein Ablauf-Baum. Die Blätter (ganz außen) repräsentieren dann jedes mögliche Programmergebnis und wenn darunter ein Gültiges ist, hat die Eingabe die Bedingungen, auf die sie mittels des Automaten getestet wurde, erfüllt.
Auf die Art und Weise braucht zum Beispiel ein Automat, der herausfinden soll, ob ein Wort von der Art ww^r ist, nicht zu wissen, wo die Mitte des Wortes ist. Bei jedem weiteren gelesenen Symbol des Eingabewortes verzweigt er einfach in zwei Zweige: Ein Zweig geht davon aus, er hätte die Mitte gefunden, der andere geht davon aus, daß er die Mitte des Wortes noch nicht erreicht hat. Wenn das Wort tatsächlich von der Art ww^r war, wird sich unter all den verschiedenen Ergebnissen ein Gültiges befinden und der Automat hat das Wort erkannt. Befindet sich jedoch kein gültiges Ergebnis in den Blättern des Baumes, war das Wort nicht von der Art ww^r.
Wer das verdaut hat, verdient Respekt
, kürzer ging's irgendwie nicht.
Bassim