(Lineare Suche): Hausaufgabe3 (Asymptotische Komplexität): (3 · 5

Werbung
Datenstrukturen und Algorithmen SS17
Übungsblatt 1 (Abgabe 03.05.2017)
Prof.aa
Dr. Ir. G. Wöginger
T. Hartmann, D. Korzeniewski, B. Tauer
Allgemeine Hinweise:
• Die Hausaufgaben sollen in Gruppen von je 2
Studierenden aus der gleichen Kleingruppenübung
bearbeitet werden. Namen und Matrikelnummern der Studierenden sind auf jedes Blatt
der Abgabe zu schreiben. Heften bzw. tackern Sie die Blätter!
(Tutorium)
• Die
Nummer der Übungsgruppe muss links oben auf das erste Blatt der Abgabe geschrieben
werden. Notieren Sie die Gruppennummer gut sichtbar, damit wir besser sortieren können.
• Die Lösungen müssen
bis Mittwoch, den 03.05.2017 um 16:00 Uhr in den Übungskasten vom i1
(Erdgeschoss, Treppenhaus E1 im Informatik-Zentrum) eingeworfen werden. Alternativ können Sie die
Lösungen auch vor der Abgabefrist direkt bei Ihrer Tutorin/Ihrem Tutor abgeben.
Globalübungsaufgabe1 (O -Notation):
Zeigen oder widerlegen Sie die folgenden Aussagen:
a)
c)
e)
g(n) = 2n3√+ 142n2 + 462 ∈ Θ(n3 )
log n ∈ O( n)
g(n) + f (n) ∈ O(g(f (n)))
b)
d)
2n+1 ∈ Θ(2n )
max(f (n), g(n)) ∈ Θ(f (n) + g(n))
Globalübungsaufgabe2 (Lineare Suche):
Geben Sie einen Algorithmus an, der für eine Folge von n ganzen Zahlen (gegeben als Array) eine maximale
Teilfolge ndet und dessen Worst-Case-Laufzeitkomplexität in O(n) liegt. Eine Teilfolge wird hierbei von
beliebig vielen (maximal n) direkt aufeinanderfolgenden Array-Einträgen gebildet. Sie ist maximal, wenn die
Summe ihrer Elemente maximal ist, d. h., wir suchen aus allen möglichen Teilfolgen eine mit maximaler Summe.
Die Teilfolge soll dabei als Startindex, Endindex und Summe der Folge ausgegeben werden. Die Eingangsfolge
12, −34, 56, −5, −6, 78, −32, 8
liefert beispielsweise die Indizes 3 und 6 sowie die Summe 56 − 5 − 6 + 78 = 123.
Hausaufgabe3 (Asymptotische Komplexität):
(3 · 5 = 15 Punkte)
Begründen oder widerlegen Sie die folgenden Aussagen:
a) n2 + n ∈ O(n2 − n)
b) (n + 1) · (n2 + 3) ∈ Θ(n3 )
c) (ln n)2 ∈ O(n)
d) f (n) + g(n) ∈ Θ(min(f (n), g(n)))
e) Aus f (n) ∈ Ω(g(n)) und g(n) ∈ Ω(h(n)) folgt f (n) ∈ Ω(h(n))
Hausaufgabe4 (Beweis):
(5 Punkte)
Sei k ∈ N konstant. Seien f0 (n), f1 (n), . . . , fk (n) ∈ O(g(n)). Beweisen Sie, dass
k
P
i=0
1
fi (n) ∈ O(g(n)).
Datenstrukturen und Algorithmen SS17
Übungsblatt 1 (Abgabe 03.05.2017)
Hausaufgabe5 (Lineare Suche):
(10 Punkte)
Eine Permutation ist ein Array der Länge n, dass die Zahlen 0, 1, . . . , n − 1 jeweils genau einmal enthält.
Ein Zykel der Länge k ≤ n ist eine Menge von Positionen {i_0, i_1, . . . , i_k} in einem Array a, sodass gilt
a[i_0] = i_1, a[i_1] = i_2, . . . , a[i_k] = i_0.
Entwerfen Sie einen Algorithmus, der den längsten Zykel in einer Permutation ndet. Der Algorithmus soll
einen beliebigen Index im längsten Zykel zurück geben und eine Laufzeit von Θ(n) haben.
(i) Geben sie den Algorithmus im (Pseudo-)Code an und erklären Sie das vorgehen ihres Algorithmus.
(ii) Führen Sie eine möglichst präzise Laufzeitanalyse ihres Algorithmus durch.
Hinweise:
• Jede Position in einer Permutation ist Teil eines Zykels.
• Gehen Sie davon aus, dass sie auf einer Kopie des Arrays arbeiten. Sie dürfen das Array also verändern.
• Gehen Sie davon aus, dass die Eingabe für ihren Algorithmus korrekt ist.
Ihres Algorithmus. Eine korrekte Analyse wird auch gewertet, wenn sie
keinen Algorithmus mit Laufzeit in Θ(n) gefunden haben.
• Analysieren Sie die Laufzeit
2
Herunterladen