Berechenbarkeit und Formale Sprachen

Werbung
Theoretische Informatik:
Berechenbarkeit und Formale Sprachen
SS 2015
Blatt 4
Diese Aufgaben werden in den Übungen in der Woche vom 11.-15.05.2015 besprochen.
AUFGABE 1.
In der Vorlesung haben Sie die Paarkodierungsfunktion c : N2 → N und deren Verallgemeinerung h, . . . , i : Nk → N kennengelernt. Damit lassen sich nun also beliebig große Tupel von
natürlichen Zahlen eindeutig als eine einzige natürliche Zahl kodieren.
a) Nutzen Sie diese Funktionen, um die folgenden Tupel zu kodieren: (3,5), (2,1,8) und
(2,2,0,2).
b) Was bedeutet hierbei “eindeutig kodieren“ ? Erklären Sie kurz!
AUFGABE 2.
Im Beweis von Lemma 1.12 (auf Folie 56) werden die folgenden Aussagen benötigt:
(∗) Für alle m, n ∈ N gelten : c(m, n) ≥ m und c(m, n) ≥ n.
Beweisen Sie diese Aussagen!
AUFGABE 3. Gegeben ist das folgende LOOP-Programm L, welches eine einstellige Funktion F : N → N berechnet:
L : x2 := 15;
x1 := x2 − 3;
LOOP x1 DO
x0 := x0 + 8
END
In der Vorlesung wurde bewiesen, dass jede LOOP-berechenbare Funktion auch primitiv rekursiv ist und umgekehrt (Satz 1.15). Im ersten Teil des Beweises wird gezeigt, dass es für
jedes beliebige LOOP-Programm P eine primitiv rekursive Funktion gP gibt, welche das Verhalten von P simuliert. Dazu wurde sogar eine Konstruktionsvorschrift für gP angegeben,
welche den induktiven Aufbau von P benutzt. Wenden Sie nun diese Konstruktionsvorschrift
auf das obige Programm L an und konstruieren Sie die Funktion gL . Vereinfachen Sie dabei
L nicht und geben Sie auch keine “optimierte” Funktion gL an. Geben Sie außerdem die
Funktion F an, welche von P berechnet wird.
Hinweis: Wiederholen Sie die Beweisdetails und versuchen Sie diese vollständig nachzuvollziehen. Beginnen Sie nun mit der Konstruktion von gL , indem Sie zunächst für jede elementare
Programmanweisung die entsprechende primitiv rekursive Funktion definieren. Benennen Sie
die elementaren Anweisungen ruhig mit P1 , P2 usw. Die entsprechenden primitiv rekursiven
Funktionen sind dann also gP 1 , gP 2 usw. Kombinieren Sie dann diese Funktionen zu neuen
Funktionen gemäss der gegebenen Vorschrift, um für die Hintereinanderausführung und die
LOOP-Schleife primitiv rekursive Funktionen zu erhalten.
Herunterladen