TU Ilmenau, Fakultät IA FG Telematik/Rechnernetze Prof. Dr.-Ing. G. Schäfer http://www.tu-ilmenau.de/telematik/aup Algorithmen und Programmierung WS 14/15 Übungsblatt 1 Abgabe am Mittwoch 29.10.2014 in der Vorlesung Aufgabe 1 (Terme) 3 + 3 Punkte Geben Sie den Wert der folgenden Terme an und notieren Sie mindestens 4 Zwischenschritte während der Auflösung. (a) 5+ if (8 − 5 · 3 > 8 ∧ ¬false) ∨ 5 > 5 then 2 · 20 − 3 else 3 · 3 · 3 − 3 fi (b) if 17 mod 2 = sign(3 − 8) then 7 + 2 = 72 else if 1 < 12 then false = ((2 + 4)/18 < 1) else odd(17 + 4) fi fi Aufgabe 2 (Backus-Naur-Form) 4 Punkte Geben Sie mittels BNF eine Syntax an, mit welcher sich Terme über {0, 1} erzeugen lassen, die mit einer beliebigen Anzahl von n 0en beginnen, gefolgt von einer 1 und n abschließenden 0en (Beispiel: 00000100000). Können Sie einen äquivalenten regulären Ausdrück angeben? Aufgabe 3 (Reguläre Ausdrücke) 3 + 2 + 2 + 3 Punkte Geben Sie je einen regulären Ausdrück in der Notation der Vorlesung an, welcher (a) alle rationalen Zahlen (dargestellt als Bruch oder Dezimalzahl) (b) alle gültigen Uhrzeiten der Form hh:mm:ss (23 : 05 : 42) (c) alle gültigen Uhrzeiten nach US Standard (12 statt 24 Stunden gefolgt von AM oder PM ) (d) alle gültigen Datumsangaben der Form TT.MM.JJJJ (zur Vereinfachung dürfen Sie davon ausgehen, dass der Februar immer 28 Tage hat) matcht. Bitte wenden! 2 Algorithmen und Programmierung WS 14/15 Aufgabe 4 (Türme von Hanoi) Übungsblatt 1 2 Punkte In der Vorlesung wurde Ihnen der rekursive Lösungsalgorithmus für das Türmen-vonHanoi-Problem vorgestellt. (a) Wie viele Bewegungen müssen Sie durchführen, um einen Turm aus fünf Scheiben vom Start zum Ziel zu bringen? (b) Geben Sie eine allgemeine Formel für die Anzahl an Bewegungen für beliebig hohe Türme an. Aufgabe 5 (Rekursion) 2 + 4 + 2 Punkte Ein beschränktes Maschinenmodell unterstütze als einige Rechenoperation auf Ganzzahlen die Addition add(x,y) (x, y ∈ Z). (a) Definieren Sie in Pseudocode eine Methode mult(x,y) zur Multiplikation zweier natürlicher Zahlen x und y unter Verwendung der Additionsfunktion. Geben Sie sowohl eine rekursive als auch eine nicht-rekursive Variante an. (b) Nutzen Sie mult(x,y) um die Funktion fact(n) zur Berechnung Fakultät von n ∈ zu definieren. N (c) Wie oft wird die Addition bei der Berechnung von fact(5) ausgeführt, falls mult(x,y) rekursiv definiert ist?