Humboldt-Universität zu Berlin Berlin, den 20.04.2015 Institut für Informatik Prof. Dr. Ulf Leser Übungen zur Vorlesung M. Bux, B. Gruÿien, J. Sürmeli, S. Wandelt Algorithmen und Datenstrukturen Übungsblatt 1 Abgabe: Montag den 4.5.2015 bis 11:10 Uhr vor der Vorlesung im Hörsaal oder bis 10:45 Uhr in den Fächern im Raum RUD25 4.402. Die Übungsblätter sind in Gruppen von 2 Personen zu bearbeiten. Sie können auf diesem Übungsblatt bis zu 50 Punkte erhalten. Zur Erinnerung: Jedes Übungsblatt muss bearbeitet werden. Sie müssen mindestens ein Blatt für wenigstens eine Aufgabe jedes Übungsblattes abgeben. Die Lösungen sind auf nach Aufgaben getrennten Blättern abzugeben. Vermerken Sie auf allen Abgaben Ihre Namen, Ihre Matrikelnummern, den Namen Ihrer Goya-Gruppe und welchen Übungstermin bei welchem Übungsleiter Sie besuchen. Heften Sie bitte die zu einer Aufgabe gehörenden Blätter vor der Abgabe zusammen. Beachten Sie auch die aktuellen Hinweise auf der Übungswebsite unter: https://u.hu-berlin.de/alg_ds_ss15_u Konventionen: • Für ein Array A ist |A| die Länge von A, A. Die |A|). Bitte also die Anzahl der Elemente in Indizierung aller Arrays auf diesem Blatt beginnt bei 1 (und endet also bei beginnen Sie die Indizierung der Arrays in Ihren Lösungen auch bei 1. • Mit der Auorderung Analysieren Sie die Laufzeit ist hier gemeint, dass Sie eine möglichst gute obere Schranke der Zeitkomplexität angeben sollen und diese begründen sollen. • Mit • Die Menge der natürlichen Zahlen • Ein Stern markiert eine tendenziell schwierigere Aufgabe. log wird der Logarithmus log2 zur Basis N 2 bezeichnet. enthält die Zahl 0. Aufgabe 1 (Eigenschaften der O -Notation) a) 2+3+3 = 8 Punkte abbilden, gilt O(f + g) ⊆ p : N → R mit p(n) = ad nd + ad−1 nd−1 + · · · + a1 n + a0 ein d mit ai ∈ R für 0 ≤ i ≤ d und ad > 0, dann gilt p(n) ∈ O(nd ). Polynom in Beweisen Sie: Für alle Funktionen f und g, die von N nach R O(max(f, g)). b) Beweisen Sie: Sei n ∗ c) vom Grad Eine Funktion f: N → R Es gibt strikt positive monoton wachsende g∈ / O(f ). f (n) > 0, für alle n ∈ N. Beweisen Sie: Funktionen f und g , so dass f ∈ / O(g) und heiÿt strikt positiv, falls Aufgabe 2 (Funktionen ordnen) 10 Punkte Beweisen oder wiederlegen Sie für die Teilaufgaben (a) bis (e) die folgenden Aussagen: 1. f ∈ O(g), 2. f ∈ Ω(g). Hinweis: Benutzen Sie entweder die Denitionen direkt, oder betrachten Sie den Grenzwert des Quotienten der Funktionen und wenden Sie falls nötig den Satz von l'Hôpital an. (a) (b) (c) (d) (e) ∗ f (n) n+1 n n √ n 2n g(n) n + 1000 n log(n) log(n) (log(n))2 n2n Aufgabe 3 (Pseudocodeanalyse) (2+2+2+4)+(2+2+1) = 15 Punkte 1. Betrachten Sie den folgenden Algorithmus N, dem als Eingabe ein Array chen Zahlen übergeben wird und der als Ausgabe die Zahl x A aus n natürli- liefert. Algorithmus N(A) Input: Array A der Output: Zahl x 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Länge |A| = n x := 0; for i := 1 to n do if A[i] > x then x := A[i]; end if if x > n then x := n; end if end for return x; a) Was berechnet Algorithmus N? b) Analysieren Sie die Laufzeit des Algorithmus in Abhängigkeit von n. c) Bestimmen Sie die minimale und maximale Anzahl ausgeführter Zuweisungen für Variable x in Algorithmus N in Abhängigkeit von n d) Wie lautet die Antwort auf a) - c), falls Sie zwischen Zeile 7 und Zeile 8 den Ausdruck return x; einfügen? Begründen Sie Ihre Antwort. Markieren Sie Ihre Teillösungen zu dieser Aufgabe mit a1), b1) bzw. c1). 2. Betrachten Sie den folgenden rekursiven Algorithmus n natürlichen Zahlen sowie zwei natürliche Zahlen werden und der als Ausgabe die Zahl x i P, dem als Eingabe ein Array und j mit 1≤i≤j ≤n A aus übergeben liefert. Algorithmus P(A, i, j) Input: Array A der Output: Zahl x 1: 2: 3: 4: 5: 6: Länge |A| = n, natürliche Zahlen i, j mit 1≤i≤j≤n if j − i ≤ 1 then x := A[i]; else x := P(A, i + 1, j − 1); end if return x; a) Was berechnet Algorithmus natürliche Zahlen i und j P mit für ein gegebenes Array A mit n Elementen und zwei 1 ≤ i ≤ j ≤ n? i und j . Geben Sie wobei f nur von i und j b) Analysieren Sie die Laufzeit des Algorithmus in Abhängigkeit von also eine möglichst gute obere Schranke der Form abhängt jedoch nicht von O(f ) an, n. c) Analysieren Sie die Laufzeit des Algorithmus in Abhängigkeit von n. Aufgabe 4 (Algorithmenentwurf ) 1. Seien A und B Arrays der Länge (5+2+2)+(6+2) = 17 Punkte n von Zahlen aus {1, . . . , n}, das heiÿt, in den Arrays kann jede Zahl beliebig oft vorkommen, und es müssen nicht alle n verschiedenen Zahlen vorkommen. A a) Entwerfen Sie einen möglichst ezienten Algorithmus, der bei Eingabe von ausgibt, ob A und B und B die selben Zahlen (ungeachtet ihrer Häugkeit und Reihenfolge) A = [1, 4, 3, 4] und B = [4, 1, 4, 3] soll zum Ergebnis A = [1, 2, 3, 2] und B = [1, 2, 3, 4] dagegen zum Ergebnis false enthalten. Beispiel: Die Eingabe true, die Eingabe führen. Notieren Sie diesen Algorithmus als Pseudocode. Hinweis: Die Punktevergabe erfolgt gestaelt nach Ezienz bezüglich der Laufzeit. Sie dürfen unbegrenzt zusätzlichen Speicherplatz verwenden. b) Analysieren Sie die Laufzeit Ihres in Pseudocode vorgestellten Algorithmus. c) Begründen Sie informell, warum das Problem nicht mit einer sublinearen Anzahl von o(n) liegen {1, . . . , n} genau Elementzugrien gelöst werden kann (d.h. warum eine Lösung nicht in kann). 2. Nun seien A und B Arrays der Länge n, die jeweils jede der Zahlen aus einmal enthalten. A a) Entwerfen Sie einen möglichst ezienten Algorithmus, der bei Eingabe von ein Array C der Länge Für eine Zahl Analog sei iB n und B ausgibt, für das folgendes gilt: i ∈ {1, . . . , n} sei iA die Position, an der die Zahl i im Array A steht. deniniert. • Falls iA < iB , steht in C an Position i eine 1. • Falls iA = iB , steht in C an Position i eine 2. • Falls iA > iB , steht in C an Position i eine 3. Beispiel : Die Eingabe A = [2, 4, 3, 1] und B = [2, 3, 1, 4] soll zum Ergebnis [3, 2, 3, 1] führen. Notieren Sie diesen Algorithmus als Pseudocode. Hinweis: Die Punktevergabe erfolgt gestaelt nach Ezienz bezüglich der Laufzeit. Sie dürfen unbegrenzt zusätzlichen Speicherplatz verwenden. b) Analysieren Sie die Laufzeit Ihres vorgestellten Algorithmus.