Es sei die deterministische akzeptierende 1-Band-Turing-Maschine M gegeben, die wie folgt arbeitet:
- ´M´ läuft über das Eingabewort und kopiert es auf das Arbeitsband. Dabei testet ´M´ durch einen Wechsel zwischen zwei Zuständen noch, ob das Eingabewort gerade Länge ´> 1´ hat. Ist die Eingabe leer oder ist ihre Länge ungerade, so geht ´M´ in den ablehnenden Stoppzustand.
- Hat das Wort gerade Länge bewegt sich der Kopf des Eingabebandes zurück an den Anfang der Eingabe und geht in den Zustand ´v´, wobei der Kopf des Arbeitsbandes über dem letzten Buchstaben verharrt.
- Wird nun auf dem Eingabeband und dem Arbeitsband der gleiche Buchstabe ´x != **´ gelesen, verbleibt ´M´ in ´v´, bewegt den Kopf über der Eingabe eine Position nach rechts und den des Arbeitsbandes um eine Position nach links. Wird auf Eingabe- und Arbeitsband ein verschiedener Buchstabe gelesen, geht ´M´ in den ablehnenden Stoppzustand. Wird auf Eingabe- und Arbeitsband ´**´ gelesen, so geht ´M´ in den akzeptierenden Stoppzustand.
Bestimme:
- ´T(M)´
- ´t_M(w)´ und ´s_M(w)´ für ´w = "aabbba"´ und ´w = "abaaba"´
- ´t_M(n)´ und ´s_M(n)´ für ´n >= 0´
Teil 1
Es werden weder das Leerwort noch Wörter ungerader Länge akzeptiert. Hat das Wort ´x_1 x_2 … x_n´ gerade Länge, so wird überprüft, ob ´x_i = x_(n−i+1)´ für ´1 <= i <= n´ gilt. Gilt für alle ´i´ die Gleichheit, so wird akzeptiert, anderenfalls abgelehnt. Somit gilt:
´T(M) = {x_1 x_2 … x_n | n " gerade ", x_i = x_(n−i+1) " für " 1 <= i <= n} = {w {:|:} |w| " gerade ", w = w^R}´
Teil 2
´w = "aabbba"´:
- Die Maschine läuft über das Wort und kopiert es auf das Arbeitsband und läuft auf dem Arbeitsband zurück zum Wortanfang: ´((2n + 2) = 14´ Schritte und ´n = 6´ Zellen werden beschrieben und eine Zelle dahinter betreten).
- Übereinstimmung des ersten und letzten Buchstabens (´1´ Schritt).
- Übereinstimmung des vorletzten und letzten Buchstaben nicht gegeben (´1´ Schritt).
Folglich gilt:
- ´t_M("aabbba") = 14 + 1 + 1 = 16´
- ´s_M ("aabbba") = 6 + 1 = 7´
´w = "abaaba"´:
- Die Maschine läuft über das Wort und kopiert es auf das Arbeitsband und läuft auf dem Arbeitsband zurück zum Wortanfang: ´((2n + 2) = 14´ Schritte und ´n = 6´ Zellen werden beschrieben und eine Zelle dahinter betreten).
- Übereinstimmung des ersten und letzten Buchstabens, des zweiten und zweitletzten, dritten und drittletzten usw. wird überprüft und jeweils festgestellt (´n´-mal, also ´6´-mal je ´1´ Schritt; insgesamt ´n = 6´ Schritte).
- ´**´ hinter dem Wort auf dem Eingabeband und vor dem Wort auf dem Arbeitsband werden gelesen, und ´M´ akzeptiert (´1´ Schritt und eine zusätzliche Zelle betreten).
Folglich gilt:
- ´t_M("abaaba") = 14 + 6 + 1 = 21´
- ´s_M("abaaba") = 6 + 1 + 1 = 8´
Teil 3
Ist ´w´ das Leerwort, wird beim Lesen des ´**´ sofort in den nichtakzeptierenden Zustand gegangen. Somit gilt:
- ´t_M(lambda) = t_M(0) = 1´
- ´s_M(lambda) = s_M(0) = 0´
(Das tatenlose Stehen über dem Arbeitsband zählt als 0, obwohl man über einer Zelle steht.)
Ist ´n >= 1´ ungerade, so kopiert die Maschine das Wort auf das Band und stoppt, wenn die Zelle dahinter erreicht ist. Damit gilt für ungerades n:
- ´t_M(n) = n + 1´
- ´s_M(n) = n + 1´
Es seien ´n´ gerade und ´w = x_1 x_2 … x_n´. Außerdem gelte ´x_i = x_(n−i+1)´ für ´1 <= i < k <= n´ und ´x_k != x_(n−k+1)´. Dann gilt nach den Schritten aus 2. ´t_M(w) = 2n + 2 + k´ und ´s_M(w) = n + 1´ (man beachte, dass natürlich ´k <= n/2´ gilt, da bei Gleichheit der ersten ´n/2´ Buchstaben auch die der letzten folgt).
Ist ´n´ gerade und ´w = wR´ ergibt sich wie in 2. ´t_M(w) = 2n + 2 + n + 1 = 3n + 3´ und ´s_M(w) = n + 2´. Die maximalen Werte werden also im letzten Fall angenommen, woraus für gerades ´n´ resultiert:
- ´t_M(n) = 3n + 3´
- ´s_M(n) = n + 2´
Teil 1
´T(M) = {x_1 x_2 … x_n | n " gerade ", x_i = x_(n−i+1) " für " 1 <= i <= n} = {w {:|:} |w| " gerade ", w = w^R}´
Teil 2
´w = "aabbba"´
- ´t_M("aabbba") = 14 + 1 + 1 = 16´
- ´s_M ("aabbba") = 6 + 1 = 7´
´w = "abaaba"´
- ´t_M("abaaba") = 14 + 6 + 1 = 21´
- ´s_M("abaaba") = 6 + 1 + 1 = 8´
Teil 3
- w´ ist Leerwort
- ´t_M(lambda) = t_M(0) = 1´
- ´s_M(lambda) = s_M(0) = 0´
- n ungerade
- ´t_M(n) = n + 1´
- ´s_M(n) = n + 1´
- n gerade
- ´t_M(n) = 3n + 3´
- ´s_M(n) = n + 2´
Teil 1
Einschränkungen:
- ´> 1´
- ´|w|´ ist gerade
=> Turingmaschine erkennt Palindrome gerader Länge
´T(M) = {ww^R | w in Sigma^+}´
Teil 2
Für ´w = "aabbba"´:
- 6x Buchstabe kopieren
- 1x Wortende erkennen
- 6x Anfang Wechseln
- 1x Wortende erkennen
- 1x gleiche Buchstaben lesen
- 1x verschiedene Buchstaben lesen => Stoppzustand wechseln
=> ´t_M(w) = 16´ => ´s_M(w) = 8´
Für ´w = "abaaba"´:
- 6x Buchstabe kopieren
- 1x Wortende erkennen
- 6x Anfang Wechseln
- 1x Wortende erkennen
- 6x gleiche Buchstaben lesen
- 1x leeres Wort lesen => akzeptierenden Stoppzustand wechseln
=> ´t_M(w) = 21´ => ´s_M(w) = 8´
Teil 3
´t_M(w) = 3(n + 1)´ für gerade ´t_M(w) = (n + 1)´ für ungerade ´t_M(w) = 0´ für leeres Wort
´s_M(w) = n + 2´
HPI, 2014-05-26, Theoretische Informatik 2, Blatt 8, Aufgabe 1
2014-07-22 19:33:59 UTC
2014-07-25 06:11:27 UTC