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.