Formale Grundlagen der Wirtschaftsinformatik Nikolaj Popov Research Institute for Symbolic Computation popov@risc.uni-linz.ac.at Turingmaschinen und Kontextsensitive Sprachen
Eine Turingmaschine besteht aus einem unendlichen Band, d.h., einem Band mit unendlichvielen Feldern. Auf diesen Feldern steht je ein Zeichen, wobei nur auf endlichen vielen Feldern nicht das Bandzeichen steht. Zeichen steht für ein unbeschriftetes Feld.
Es gibt einen Schreib- und Lesekopf (kurz SLK), der immer auf einem bestimmten Feld des Bandes steht. Die Steuereinheit (endliche Kontrolle) ist immer in einem bestimmten Zustand.
Ein Schritt der Maschine besteht aus 4 Teilen: der SLK liest das Zeichen im aktuellen Feld; der SLK schreibt ein Zeichen auf das aktuelle Feld; der SLK bewegt sich nach links (L), rechts (R) oder bleibt stehen (N); die Kontrolle (Steuereinheit) geht in den nächsten Zustand über.
Definition: Eine Turingmaschine ist ein Tupel M = (Q, Σ, G,, d, q 0, q f ) mit: Q einer endlichen Menge von Zuständen; Σ dem Alphabet der Maschine; G dem Bandalphabet der Maschine (Zeichen, die als Feldbeschriftungen verwende werden dürfen). G, Σ G.
Definition: Eine Turingmaschine ist ein Tupel M = (Q, Σ, G,, d, q 0, q f ) mit: d (Q G ) (Q G {L, R, N}) ist die Übergangsrelation; q 0 ist der Anfangszustand; q f ist der Endzustand.
Ein Konfiguration ist ein Wort a q b mit a,b G *, q Q wobei: q ist der momentane Zustand; a ist die Beschriftung des Bandes links vom aktuellen Feld; b ist die Beschriftung des Bandes rechts vom aktuellen Feld.
Die aktuelle Konfiguration ist q a b b a a.
Definition: Ein Wort w S * liegt in der von einer gegebenen Turingmaschine M akzeptierten Sprache L(M), wenn ausgehend von der Anfangskonfiguration q 0 w durch die Übergangsrelationen der Endzustand q f erreicht werden kann.
Definition: Zwei Turingmaschinen M 1 und M 2 heissen sprachäquivalent, wenn L(M 1 ) = L(M 2 ). In dieser Definition muss nicht zwischen einer DTM und einer NTM unterschieden werden, da zu jeder nichtderministischen Turingmaschine eine sprachäquivalente deterministische Turingmaschine gefunden werden kann.
Beispiel: Die Sprache L 1 = {a n b n c n n N} ist Turing-akzeptierbar. Die Turingmaschine geht wie folgt vor: das erste a wird durch ein x ersetzt, dann wird das erste b gesucht und durch ein y ersetzt und dann das erste c durch ein z;
man geht zurück zum zweiten a, ersetzt es durch ein x, läuft zum zweiten b, ersetzt es durch ein y, läuft zum zweiten c und ersetzt es durch ein z; diese Schritte werden wiederholt solange, bis nach dem erzeugten z ein steht;
dann wird überprüft, ob es nur noch einen z-block, gefolgt von einem y-block, gefolgt von einem x-block gibt (abgeschlossen mit ); in dem Fall wird das Wort akzeptiert; die Maschine blockiert, wenn das nicht eintritt, oder schon vorher, falls das erwartete Zeichen (a, b, c) nicht gefunden wird.
Satz: Sei S ein Alphabet und L S *. Dann ist L vom Typ Chomsky-0, genau dann wenn L Turing-akzeptierbar ist.
Zur Charakterisierung von Typ 1-Sprachen benötigt man eine Unterklasse von NTM, bei der sich die Maschine nie über die linke oder rechte Grenze des Eingabeworts hinausbewegt. Diese speziellen NTMs werden linear beschränkte Automaten genannt.
Satz: Sei S ein Alphabet und L S *. Dann ist L vom Typ Chomsky-1, genau dann wenn L von einem linear beschränkten Automaten akzeptiert wird.
Kellerautomat Pushdown Automat PDA
Reguläre Sprachen Beispiel: Sei L 1 = {b m (aaa) n b k m,n,k N}. Diese Sprache ist regulär. Es gibt einen Automaten DEA oder NEA, der die Sprache akzeptiert.
Kontextfreie Sprachen Beispiel: Sei L 2 = {a n b n n N}. Diese Sprache ist kontextfrei, aber nicht regulär. Sie wird von einem Kellerautomaten akzeptiert.
Kontexsensitive Sprachen Beispiel: Sei L 3 = {a n b n c n n N}. Diese Sprache ist kontexsensitiv, aber nicht kontextfrei. Sie wird von eine TM akzeptiert.