TU Ilmenau, Fachgebiet Automaten und Logik Prof. Dr. D. Kuske, Dipl. Inf. F. Abu Zaid, M.Sc. C. Köcher WS 2016/17 11. Übung Automaten, Sprachen und Komplexität Mit ∗ gekennzeichnete Aufgaben geben Bonuspunkte. Abgabe : bis Donnerstag, den 12.01.2017 um 09:00 Uhr am Lehrstuhl oder vor der Vorlesung. Geben Sie bitte Namen, Matrikelnummer und die Übungsgruppe an. Präsenzaufgaben Aufgabe 1 Sei (fn )n∈N eine Folge von Loop-berechenbaren Funktionen fn : N → N, so dass jedes fn durch ein Loop-Programm 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. Aufgabe 2 In der Vorlesung wurde bewiesen, dass jede Turing-berechenbare Funktion (über den natürlichen Zahlen) durch ein Goto-Programm berechenbar ist. Hierzu wurde die Konfiguration einer Turingmaschine als ein Tripel von Zahlen (gedacht dargestellt zu einer geeigneten Basis) interpretiert. Wir wollen nun beispielhaft zeigen, dass die benötigten Initialisierungsfunktionen tätsächlich While-berechenbar sind. Geben Sie While-Programme an, welche die folgenden Funktionen berechnen. (a) f : N → N : Pn i=0 ai 2 7→ Pn i i=0 ai 5 i Pm b 2j ) i=0 ai 2 , j=0 j Pn (b) g : N2 → N : ( i 7→ Pn i=0 ai 5 i + 2 · 5n+1 + 5n+2 Pm j=0 bj 5 j + 2 · 5n+m+3 https://www.tu-ilmenau.de/al/lehre/ws-20162017/automaten-sprachen-und-komplexitaet/ Bonusaufgaben Aufgabe 3∗ 4 Punkte Geben Sie Loop-Programme an, welche die folgenden Funktionen Berechnen. Verwenden Sie lediglich die elementaren Operationen von Loop-Programmen, d.h. verwenden Sie keine in der Vorlesung definierten Unterprogramme. (i) f1 (n) = 2n (ii) f2 (0) = 1 f2 (n + 1) = 2f2 (n) Aufgabe 4∗ 2 Punkte Nk Sei k ≥ 1 und f : → N eine Loop-berechenbare Funktion. Zeigen Sie durch Angabe eines Loop-Programms, dass die (k + 1)-stellige Funktion g mit ( g(n1 , . . . , nk , nk+1 ) = 1 0 falls f (n1 , . . . , nk ) = nk+1 sonst ebenfalls Loop-berechenbar ist. Sie können in der Vorlesung vorgestellte Unterprogramme verwenden. Aufgabe 5∗ 4 Punkte (a) Die Fibonacci-Funktion fib : N → N ist definiert durch ( fib(n) = 1 n ∈ {0, 1} fib(n − 1) + fib(n − 2) n > 1. Geben Sie ein Loop-Programm an, welches fib berechnet. Sie können in der Vorlesung vorgestellte Unterprogramme verwenden. (b) Sei a(k, n) := ack(k, n) mod 2, d.h. a(k, n) ist die Parität des Wertes ack(k, n). Geben Sie jeweils mit kurzer Begründung an, ob die Funktion intuitiv-, Turing-,While-, Gotooder Loop-berechenbar ist. Aufgabe 6∗ 4 Punkte In dieser Aufgabe betrachten wir Automaten mit zwei Kellerspeichern, die in jedem Berechnungsschritt gelesen und aktualisiert werden. Ein 2-Keller-Automat (2PDA) ist ein Tupel M = (Z, Σ, Γ, δ, z0 , #, E), wobei die einzelnen Komponenten die gleiche Bedeutung haben wie bei einem Kellerautomaten mit Endzuständen. Allerdings hat die Transitionsfunktion die Gestalt δ : Z × (Σ ∪ {ε}) × Γ × Γ → Pe (Z × Γ∗ × Γ∗ ) und eine Konfiguration von M ist beschrieben durch ein Tupel (z, w, α1 , α2 ) ∈ Z × Σ∗ × Γ∗ × Γ∗ . Ein Konfigurationsübergang hat die Form (z, aw, A1 α1 , A2 α2 ) `M (z 0 , w, γ1 α1 , γ2 α2 ) mit z, z 0 ∈ Z, a ∈ Σ ∪ {ε}, w ∈ Σ∗ , A1 , A2 ∈ Γ, α1 , α2 , γ1 , γ2 ∈ Γ∗ und ist genau dann möglich, wenn (z 0 , γ1 , γ2 ) ∈ δ(z, a, A1 , A2 ). Beweisen Sie, dass zu jeder Turing-berechenbaren Funktion f ein 2PDA M = (Z, Σ, Γ, δ, z0 , #, E) existiert, so dass für alle v ∈ Σ∗ gilt: f (v) = w ⇔ ∃ze ∈ E : (z0 , v, #, #) `∗M (ze , ε, #, w#) Hinweis: Zeigen Sie, dass sich die Berechnung einer Turingmaschine auf den Kellern eines 2PDAs simulieren lässt. Der Einfachheit halber erlauben wir, dass das Eingabealphabet auch Teil des Ausgabealphabets sein kann. https://www.tu-ilmenau.de/al/lehre/ws-20162017/automaten-sprachen-und-komplexitaet/