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