TU Ilmenau, Fachgebiet Automaten und Logik Prof. Dr. Dietrich Kuske, Roy Mennicke, Martin Huschenbett Abgabe am 18.12., Besprechung am 18.12. und. 19.12. Automaten, Sprachen und Komplexität, Übungsblatt 9 (1) Sei M eine Mehrband-Turingmaschine und f : N → N eine Funktion, so dass M auf jeder Eingabe x ∈ Σ∗ höchstens f (|x|) viele Schritte macht. Wie viele Schritte macht die zu M äquivalente 1-Band-Turingmaschine M 0 (Konstruktion in der Vorlesung skizziert) auf x höchstens, wenn für alle n ∈ N gilt: (a) f (n) = n2 n2 2 (b) f (n) = 2n (c) f (n) = 22 (2) Seien Σ = {0, 1} und f : Σ∗ → Σ∗ die Funktion mit f (x) = 1|x|1 für alle x ∈ Σ∗ . Geben Sie eine 1-Band-Turingmaschine M als Tupel an, die die Funktion f berechnet. Beschreiben Sie kurz die Arbeitsweise von M . Geben Sie die Berechnung von M auf der Eingabe 0101 an. (3) Seien Σ = {0, 1} und f : Σ∗ → Σ die folgende Funktion: es gilt genau dann f (x) = 1, wenn es ein y ∈ {0}∗ mit x = y1y gibt (für alle x ∈ Σ∗ ). Geben Sie eine 2-Band-Turingmaschine M als Tupel an, die die Funktion f berechnet. Insbesondere soll M auf der Eingabe x nicht mehr als O(|x|) viele Schritte machen. Beschreiben Sie kurz die Arbeitsweise von M . (4) Geben Sie für jede der folgenden Funktionen jeweils ein Loop-Programm an, das diese berechnet. Sie dürfen dabei die in der Vorlesung eingeführten Simulationen verwenden. Unterstreichen Sie alle verwendeten Simulationen. (a) f1 (n) = n! (b) f2 (0) = 0, f2 (1) = 1, f2 (n) = f2 (n − 1) + f2 (n − 2), n ≥ 2 (c) f3 (m, n) = mn (d) f4 (m, n) = min{m, n} (5) Sei f die einstellige Funktion, die durch das folgende Loop-Programm berechnet wird. Berechnen Sie die Werte f (0), f (1), f (2) und f (3). Geben Sie f (n) für n ∈ N an. Loop x0 Do x0 := 2 · x0 End (6) Sei (fn )n∈N eine Folge von Loop-berechenbaren Funktionen, so dass jedes fn durch ein LoopProgramm mit n Loop-Schleifen berechnet werden kann, nicht aber durch ein Programm mit n − 1 Loop-Schleifen. Zeigen oder widerlegen Sie: Die Funktion g mit g(k, n) = fk (n) ist Loop-berechenbar. Aufgaben zum Selbststudium (nicht bewertet) (7) Sei f : N → {0, 1} die folgende Funktion: es gilt genau dann f (k) = 1, falls es ein p ≥ k gibt, so dass p und p + 2 Primzahlen sind (für alle k ∈ N). Zeigen Sie durch die Angabe einer Turingmaschine als Tupel, dass f Turing-berechenbar ist. Hinweis: Es ist bislang ungeklärt, ob es unendlich viele Paare (p, p + 2) gibt, so dass p und p + 2 Primzahlen sind. Nichtsdestotrotz ist f Turing-berechenbar. (8) Eine links-beschränkte Turingmaschine ist ein Tupel M = (Z, Σ, Γ, δ, z0 , 2, E, .), so dass M 0 = (Z, Σ, Γ, δ, z0 , 2, E) eine Turingmaschine mit . ∈ Γ \ (Σ ∪ {2}) ist und für alle z, z 0 ∈ Z, X ∈ {L, N, R} und a ∈ Γ gilt: • (z 0 , ., X) ∈ δ(z, a) =⇒ a = ., X ∈ {R, N } • (z 0 , a, X) ∈ δ(z, .) =⇒ a = ., X ∈ {R, N } Das heißt: • M befindet sich während einer Berechnung mit Eingabe .w (w ∈ Σ∗ ) nie links von der mit . beschrifteten Position. • Das Symbol . darf nicht durch ein anderes Symbol überschrieben werden. • Ein Symbol verschieden von . darf nicht durch . überschrieben werden. Die von M akzeptierte Sprache ist T (M ) = {w ∈ Σ∗ | .w ∈ T (M 0 )}. Beschreiben Sie, wie man eine Turingmaschine M in eine links-beschränkte Turing-Maschine M 0 überführen kann, so dass T (M ) = T (M 0 ) gilt. 2