Algorithmen und Programmierung WS13/14

Werbung
TU Ilmenau, Fakultät IA
FG Telematik/Rechnernetze
Prof. Dr.-Ing. G. Schäfer, Dr. S. Grau
http://www.tu-ilmenau.de/telematik/aup
Algorithmen und Programmierung WS13/14
Übungsblatt 5
Abgabe am Mittwoch 20.11.2013 in der Vorlesung
Aufgabe 1 Logische Programmierung
5+3 Punkte
In der Vorlesung haben Sie im Foliensatz 4 (Paradigmen) auf Folie 59 das Beispiel
“Addition” kennengelernt. Dort wird ein Prädikat ADD(x,y,z) definiert, welches zu
true evaluiert, falls x + y = z gilt.
(a) Erweitern Sie das angegebene logische Programm um Prädikate MINUS, MULT und
DIV, welche, aufgerufen mit natürlichen Zahlen, die Operationen Subtraktion, Multiplikation und Division umsetzen. Die Divisionsoperation soll nur dann true liefern, falls eine Division ohne Rest möglich ist. Nutzen Sie zur Spezifikation des
Programms ausschließlich die bereits zur Verfügung stehenden Fakten und Regeln.
Insbesondere dürfen Sie nicht +,−,· oder ÷ verwenden (wohl aber das Prädikat
ADD(x,y,z)).
(b) Geben Sie eine schrittweise Auswertung des Aufrufs DIV(2,1,2) an.
Aufgabe 2 Registermaschinen
Das nebenstehende Registermaschinenprogramm erhält seine Eingabe in Register c1
und liefert seine Ausgabe in Register c3 . Das
Arbeitsregister der Maschine sei c0 .
(a) Führen Sie die Berechnung des Programms ausgehend von der Konfiguration (b, c0 , c1 , c2 , c3 , c4 , c5 , . . .) =
(1, 0, 3, 0, 0, 0, 0, . . .) aus.
Geben Sie alle Zwischenkonfigurationen (es sind weniger als 50) und das
Ergebnis an.
(b) Welche Funktion berechnet das Programm?
6+1 Punkte
Algorithmus 1 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CLOAD 0;
STORE 2;
STORE 3;
CLOAD 1;
STORE 4;
LOAD 1;
SUB 2;
IF C0 = 0 THEN GOTO 19;
LOAD 4;
STORE 5;
ADD 3;
STORE 4;
LOAD 5;
STORE 3;
LOAD 2;
CADD 1;
STORE 2;
GOTO 6;
END;
Bitte wenden!
2
Algorithmen und Programmierung WS13/14
Übungsblatt 5
Aufgabe 3 Abstrakte Maschinen
2+3 Punkte
Gegeben sei die folgende Abstrakte Maschine.
M = (X, Y, K, α, ω, τ, σ)
X =N×N
Y =N
K =N×N
α : X → K,
α((a, b)) = (a, b)
ω : K → Y,
ω((a, b)) = a
τ : K → K,
τ ((a, b)) = (a + 1, b − 1) für alle b > 1
(
true
, falls b = 0
σ : K → {true, false}, σ((a, b)) =
false , sonst
(a) Geben Sie die von M für die Eingabe (3, 2) durchlaufenen Konfigurationen sowie
die Ausgabe der Berechnung an.
(b) Entwerfen Sie eine Abstrakte Maschine M 0 , die die Funktion Multiplikation natürlicher Zahlen berechnet. Nutzen Sie zur Spezifikation von τ ausschließlich Addition
und Subtraktion.
Aufgabe 4 Markov-Algorithmen: Halbierung
2+2 Punkte
Entwerfen Sie einen Markov-Algorithmus, welcher als Eingabe eine unär dargestellte
Zahl (z.B. 3 = |||) erhält und als Ausgabe das Ergebnis ihrer ganzzahligen Division
durch 2 berechnet. Die Kodierung der Ausgabe soll ebenfalls unär sein. Geben sie den
Algorithmus zum einen in Form einer Markov-Tafel und zum anderen durch MarkovRegeln an. In letzterer Variante sind die Terminierungsregeln mit einem nachfolgenden
“.” zu markieren.
Aufgabe 5 Markov-Algorithmen: Palindrome
4 Punkte
Ein Palindrom ist ein Wort welches vor- und rückwärts gelesen identisch ist. Beispiele in der deutschen Sprache sind “anna” und “rotor”. Entwerfen Sie einen MarkovAlgorithmus welcher für Wörter über dem Alphabet A = {0, 1} entscheidet, ob es sich
um ein Palindrom handelt oder nicht. Falls ja, soll das Ergebnis der Berechnung | sein,
anderenfalls soll ||| resultieren. Geben Sie den Algorithmus in Form von Regeln an.
Terminierungsregeln sollen mit “.” gekennzeichnet sein.
Herunterladen