Aufgaben vom ersten Test

Transcription

Aufgaben vom ersten Test
SoSe 2015
C. Sohler
J. Flake, A. Krivo²ija
B. Rudak, V. Volz
1. Übungstest (Präsenzblatt 9)
Datum: 02. Juni 2015
Der Test besteht aus vier Aufgaben mit insgesamt 26 Punkten. Zum Bestehen des Tests sind
daher 13 Punkte notwendig.
Als Hilfsmittel ist ein doppelseitig handgeschriebener Zettel zulässig. Weitere Hilfsmittel
dürfen nicht verwendet werden.
Schreiben Sie unbedingt leserlich, da unleserliche Antworten nicht gewertet werden können.
Mit dem Beginn des Ausfüllens dieses Tests gilt die Prüfungsfähigkeit als bestätigt. Täuschungsversuche führen zu einer Bewertung mit 0 Punkten.
Aufgabe 1 (4 Punkte): (O Notation)
Kreuzen Sie jede Beziehung an, die gültig ist. Es gibt pro vollständig richtig ausgefüllter Zeile
einen Punkt.
f
g
0.1 · n3
√
5
n
n3 − 100 · n2
n101
2n
15 · n · log n
5 · ln2 n
f (n) ∈ O(g(n))
f (n) ∈ Ω(g(n))
f (n) ∈ Θ(g(n))
log5 n
Aufgabe 2 (6 Punkte): (Rekursionsgleichungen)
Gegeben ist die folgende Rekursionsgleichung:
(
3 · T (n/9) + n wenn n > 1
T (n) =
1
sonst
a) Bestimmen Sie eine Funktion f (n), so dass T (n) ∈ Θ(f (n)) gilt. Sie dürfen annehmen,
dass n eine Neunerpotenz ist.
1
b) Zeigen Sie für in der Teilaufgabe a) angegebene Funktion dass T (n) ∈ O(f (n)) gilt. Nutzen
Sie dazu vollständige Induktion. Sie dürfen nicht das Master-Theorem verwenden.
Aufgabe 3 (8 Punkte): (Teile & Herrsche)
Beim Abspeichern einer riesigen Menge von Messdaten, die bereits sortiert wurden und in Form
einer streng monoton absteigenden Folge a1 , ..., an vorlagen, ist dem Physikstudent Armin ein
Missgeschick passiert, so dass ein unbekanntes Anfangsstück der Folge an das Ende geschrieben
wurde, d.h. die Folge wurde in der Form ai+1 , ..., an , a1 , ..., ai für ein 1 ≤ i < n abgespeichert.
Leider weiÿ Armin nicht, wie groÿ die Länge i dieses Anfangsstücks ist.
a) Entwerfen Sie einen Teile-und-Herrsche Algorithmus, der in Zeit O(log n) dieses i ndet, und beschreiben Sie ihn mit eigenen Worten. Geben Sie eine Implementierung Ihres
Algorithmus in Pseudocode an.
b) Analysieren Sie die Laufzeit Ihres Algorithmus. Stellen Sie hierzu eine Rekursionsgleichung für die Laufzeit Ihres Algorithmus auf und lösen Sie diese.
c) Zeigen Sie die Korrektheit Ihres Algorithmus.
Aufgabe 4 (8 Punkte): (Dynamische Programmierung)
Es gibt n Studierende S1 , S2 , . . . Sn die in einer Schlange vor dem Raum warten, um ihre Lösungen im DAP2-Praktikum zu testieren. Der Studierende Si braucht ti Minuten um seine
Lösungen zu präsentieren und die Fragen des Tutors zu antworten. Es ist möglich, dass je zwei
hintereinanderstehende Studierende zusammen die Aufgaben lösen und präsentieren. Dann benötigen die Studierenden Si und Si+1 für ihrer gemeinsamen Besprechung mit dem Tutor zi
Minuten. Diese Zeit zi kann gleich, gröÿer oder kleiner als ti + ti+1 sein.
Die Eingaben sind die Arrays T (Einzelpräsentationszeiten) und Z (Zusammenpräsentationszeiten). Wir möchten die Zeit für die gesamte Präsentation der Lösungen minimieren.
a) Geben Sie eine rekursive Formulierung für die Berechnung der minimalen Zeit für die
gesamte Präsentation der Lösungen an. Sei dabei A[k] die minimale Zeit (in Minuten) für
die gesamte Präsentation der Studierenden S1 , S2 , . . . Sk .
b) Geben Sie einen Algorithmus in Pseudocode an, der auf dynamischer Programmierung
basiert, der die rekursive Formulierung aus Aufgabenteil a) umsetzt und die minimale
Gesamtzeit zurückgibt. Welche Studierenden ihre Lösungen zusammen präsentieren, muss
dabei nicht ausgegeben werden.
c) Analysieren Sie die Laufzeit Ihres Algorithmus.
d) Beweisen Sie die Korrektheit der in Teilaufgabe a) angegebenen rekursiven Formulierung.
2