1. Aufgabe 2. Aufgabe - fbi.h

Werbung
Algorithmik
Sommersemester 2009
Prof. Dr. Steffen Lange
1. Übungsblatt
1. Aufgabe
Es sei die folgende Folge a[1] = 1, a[2] = −1, a[3] = 4, a[4] = 1, a[5] = −3,
a[6] = 5, a[7] = −2, a[8] = 1, a[9] = −1, a[10] = 1, a[11] = 2 von rationalen
Zahlen gegeben.
Teilaufgabe (a)
Illustrieren Sie anhand dieses Beispiels die Arbeitsweise des in der Vorlesung
vorgestellten Algorithmus 2 (Divide & Conquer ) zur Bestimmung der maximalen Teilsumme.
Teilaufgabe (b)
Illustrieren Sie anhand dieses Beispiels die Arbeitsweise des in der Vorlesung vorgestellten Algorithmus 3 (clever ) zur Bestimmung der maximalen Teilsumme.
2. Aufgabe
Beim Composite-Problem geht es darum, zu einer gegebenen natürlichen Zahl
x zu entscheiden, ob es natürliche Zahlen a, b ∈ {2, . . . , x − 1} mit a · b = x gibt.
Die folgende Funktion composite(.) löst das Composite-Problem.
bool composite(int x) {
bool result = false;
for( int a = 2; a < x; ++a )
for( int b = 2; b < x; ++b )
if( a*b == x ) result = true;
return(result);
}
Geben Sie eine eine einfache Funktion an, die gleichzeitig obere und untere
Schranke für die Laufzeit der Funktion composite(.) ist.
Hinweis: Denken Sie daran, daß die Länge einer Eingabe x der Länge der
Binärdarstellung von x entspricht. Gehen Sie bei Ihrer Analyse davon aus, daß
alle Elementaroperationen (Wertzuweisung, Vergleich, . . . ) konstante Kosten
haben.
1
3. Aufgabe
Welche der folgenden Aussagen sind richtig, welche sind falsch? Begründen Sie
Ihre Antwort, in dem Sie jeweils geeignete Konstanten c1 , c2 und n0 angeben
oder zeigen, daß es solche Konstanten nicht geben kann.
(i) f (n) ∈ O(g(n)) mit f (n) = 2 und g(n) = n für alle n ∈ IN
(ii) f (n) ∈ O(2n−1 ) mit f (n) = 2n und g(n) = 2n−1 für alle n ∈ IN
√
(iii) f (n) ∈ Ω(g(n)) mit f (n) = 22 · n2 und g(n) = n für alle n ∈ IN
(iv) f (n) ∈ Θ(g(n)) mit f (n) = 8 · n3 + 4 · n2 und g(n) = n2 für alle n ∈ IN
4. Aufgabe
Es seien Algorithmen A1 und A2 zur Lösung ein und desselben Problems gegeben. Ferner sei bekannt, daß sich die Laufzeit dieser Algorithmen wie folgt in
Abhängigkeit von der Problemgröße n bestimmt:
• time(A1 , n) = 13n3 − 7n2 + 18n
• time(A2 , n) = 2n4 − 15n2 + 18n log(n)
Welche dieser beiden Algorithmen ist der effizientere? Begründen Sie Ihre Aussage, in dem Sie geeignete einfache obere bzw. untere Schranken für die Laufzeit
der beiden Algorithmen bestimmen.
Viel Erfolg bei der Bearbeitung der Aufgaben!
2
Herunterladen