Algorithmen und Programmierung WS 14/15

Werbung
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 4
Abgabe am Mittwoch 19.11.2014 in der Vorlesung
Aufgabe 1 (Abstrakte Maschinen)
2 + 1 Punkte
Gegeben sei eine abstrakte Maschine M = (X, Y, K, α, ω, τ, σ) mit
N
Y =N
K =N×N×N×N
X=
α(n) = (n, 0, 1, 0)
τ ((n, z, a, b)) = (n, z + 1, a + b, a)
ω((n, z, a, b)) = a
(
true
, falls n = z
σ((n, z, a, b)) =
false , sonst
(a) Geben Sie alle Konfigurationen an, die M für die Eingabe 6 durchläuft, sowie das
Ergebnis der Ausführung.
(b) Welche Funktion wird von M berechnet?
Aufgabe 2 (Eigenschaften von Markov-Algorithmen)
1 + 2 + 1 + 3 Punkte
Markov-Algorithmen können in Form von Markov-Tafeln oder als Regeln notiert werden.
(a) Welche Bedingungen führen zum Abbruch der Ausführung eines Markov-Algorithmus,
welcher in Form von Regeln notiert ist?
(b) Führen Sie den nachfolgenden Markov-Algorithmus mit der Eingabe 1010 aus.
Geben Sie alle Zwischenschritte an und unterstreichen Sie jeweils den Teil der
Zeichenkette, der im folgenden Schritt ersetzt wird.
|0
|1
1
0
→
→
→
→
0||
1||
|
ε
(c) Welche Funktion realisiert der beschriebene Algorithmus?
(d) Beide Notationsformen (Regeln und Tafeln) besitzen die gleiche Ausdruckskraft.
Dennoch ist die Umwandlung eines als Regeln notierten Algorithmus in eine MarkovTafel sehr viel einfacher als umgekehrt. Beschreiben Sie informal ein allgemeines
Verfahren, um einen beliebigen Markov-Algorithmus, welcher als Regeln notiert
ist, in eine Markov-Tafel zu überführen. Wenden Sie Ihre Methode auf den oben
gezeigten Markov-Algorithmus an.
Bitte wenden!
2
Algorithmen und Programmierung WS 14/15
Aufgabe 3 (Markov-Algorithmen: Halbierung)
Übungsblatt 4
4 Punkte
Entwerfen Sie einen Markov-Algorithmus, welcher als Eingabe eine unär dargestellte
natürliche Zahl (z.B. 3 = |||) erhält und als Ausgabe das Ergebnis ihrer Division durch
2 berechnet. Die Kodierung der Ausgabe soll ebenfalls unär sein, mit der Ausnahme,
dass das Minus-Zeichen 21 repräsentiert. Das Minus-Zeichen darf maximal einmal und
nur am Ende vorkommen (Beispiel: ||||| ⇒∗ ||-). Geben Sie den Algorithmus in
Form einer Markov-Tafel an.
Aufgabe 4 (Fibonacci-Zahlen)
4 + 1 + 4 Punkte
In der Vorlesung wurde Ihnen der folgende applikativer Algorithmus zur Berechnung der
n-ten Fibonacci-Zahl vorgestellt.
fib(n) = if (n = 0) ∨ (n = 1) then 1 else fib(n - 1) + fib(n - 2) fi
(a) Werten Sie fib(3) systematisch und vollständig aus.
(b) In der Vorlesung (Kaptel 4, Folie 47) wurde ein äquivalenter imperativer Algorithmus vorgestellt. Vergleichen Sie die Effizienz beider Algorithmen hinsichtlich ihrer
Laufzeit (eine exakte Angabe der Laufzeit ist nicht erforderlich) und Begründen
Sie die Unterschiede in der Effizienz.
(c) Geben Sie einen äquivalenten applikativen Algorithmus an, welcher eine ähnliche
Laufzeit wie der imperative Algorithmus aus der Vorlesung besitzt.
Aufgabe 5 (Registermaschine)
4 Punkte
Gegeben sei eine Registermaschine mit dem folgenden Programm, wobei das Register
c1 als Eingabe betrachtet wird:
1
2
3
4
5
6
7
8
9
10
11
12
13
CLOAD 4
STORE 4
SUB 4
STORE 2
MULT 2
STORE 3
LOAD 1
SUB 3
IF c0 = 0 GOTO 13
LOAD 2
CADD 1
GOTO 4
END
Geben Sie die Folge der Konfigurationen an, die bei der Abarbeitung des Programms
beginnend mit (1, 0, 8, 0, 0, 0,. . . ) entsteht (Beschränkung auf die ersten vier Speicherregister.).
Aufgabe 6 (Vollkommene Zahlen)
N
3 Punkte
Eine Zahl n ∈ heißt perfekt oder vollkommen, wenn die Summe ihrer Teiler gleich n
ist. Dabei sind die Teiler echt kleiner als n. Beispielsweise ist 6 = 1 + 2 + 3 eine perfekte
Zahl.
Schreiben Sie ein Java-Programm, das alle perfekten Zahlen bis 5000 bestimmt und
geben Sie diese in Ihrer Lösung an.
Herunterladen