Präsenzaufgaben

Werbung
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/
Herunterladen