01. ¨Ubung zu ” Informatik II“ im SS 11

Werbung
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
Herunterladen