Praktische Informatik in der Wirtschaft Westfälische Wilhelms-Universität Münster Prof. Dr. Herbert Kuchen 07. April 2011 01. Übung zu Informatik II“ im SS 11 Abgabe: 14.” April 2011, 10 00 Uhr. Aufgabe 1 Gegeben seien die folgenden Funktionen: f1 (n) = 0.1n3 + 1000n2 f4 (n) = ( 13 )n √ f7 (n) = 21 ∗ ( n)4 f10 (n) = n! f13 (n) = n ∗ log2 (n) f16 (n) = n2 (6 + 4 = 10 Punkte) f2 (n) = 4242 f5 (n) = log2 (log2 (n)) f8 (n) = n3 f11 (n) = log2 (n) f14 (n) = n 1 f17 (n) = n 2 + log2 (n) f3 (n) = ( 34 )n f6 (n) = ln(n) f9 (n) = n − √ 2n2 + 2n5 f12 (n) = 3 ∗ n f15 (n) = 15 f18 (n) = 2n a) Gruppieren Sie die oben angegebenen Funktionen so, dass zwei Funktionen fi und fj genau dann in derselben Gruppe sind, wenn fi (n) ∈ θ(fj (n)) gilt. Ordnen Sie die Gruppen außerdem nach wachsender Komplexität. b) Eine der drei folgenden Aussagen ist wahr, die anderen sind falsch. Finden Sie heraus, welche Aussage wahr ist und beweisen Sie diese per Induktion. 1. f10 ∈ O(f18 ) 2. f8 ∈ O(f16 ) 3. f1 ∈ O(f9 ) Aufgabe 2 (8 Punkte) Der unten angegebene Algorithmus sortiert ein Array von ganzen Zahlen. Geben Sie dessen Komplexität in der aus der Vorlesung bekannten Landau-Notation (O-Notation) an (mit Begründung). public void sort(int[] a){ for(int i = 0; i <= a.length-2; i++){ int k = i; int current = a[i]; for (int j = i+1; j <= a.length-1; j++){ if (a[j] < current) { k=j; current = a[j]; } } a[k] = a[i]; a[i] = current; } } 1 Aufgabe 3 (12 Punkte) Geben Sie einen Algorithmus an, der mit höchstens n + dlog2 (n)e − 2 Vergleichen die zweitgrößte Zahl aus einer Liste von n Zahlen heraussucht. Implementieren Sie Ihren Algorithmus in Java und begründen Sie die Laufzeit Ihres Algorithmus. (Tipp: Suchen Sie die größte Zahl mit einem Verfahren, das einem Tennisturnier ähnelt und speichern Sie im Verlauf des Turniers die Gegner dieser Zahl. Eine davon ist die zweitgrößte Zahl.) Anmerkung: Versehen Sie Ihre Abgaben bitte mit Namen, Matrikelnummern, E-MailAdressen und Studiengängen der beteiligten Bearbeiter und werfen Sie diese in schriftlicher Form in die Abgabefächer Ihrer jeweiligen Übungsgruppenleiter. Die Abgabefächer befinden sich im Mathe-Gebäude direkt gegenüber des Hörsaals M3. Um die Korrektur der Programmieraufgaben zu erleichtern, senden Sie bitte sämtliche von Ihnen erstellten oder veränderten Java-Programme zusätzlich zur schriftlichen Abgabe per Mail an Ihren jeweiligen Übungsgruppenleiter. Pro Abgabe dürfen maximal 3 Bearbeiter an der Lösung der Aufgaben beteiligt sein. Bei Fragen zum Übungsbetrieb wenden Sie sich bitte an Ihren Übungsgruppenleiter oder an Steffen Ernsting. 2