1. Aufgabe 2. Aufgabe - fbi.h

Werbung
Algorithmik
Sommersemester 2012
Prof. Dr. Steffen Lange
2. Übungsblatt
1. Aufgabe
Es seien L1 eine bereits sortierte Liste mit 999000 Elementen und L2 eine Liste
mit 1000 Elementen, die nicht sortiert ist. Das Ziel besteht darin, eine sortierte
Liste L zu erzeugen, die alle Elemente aus L1 und L2 enthält.
Teilaufgabe (a)
Geben Sie eine möglichst genaue Abschätzung für die Anzahl der Vergleichsoperationen an, die im worst case benötigt werden, wenn die gesuchte Liste wie
folgt erzeugt wird: Zunächst wird die Liste L1 um 1000 freie Plätze erweitert. Im
Anschluß daran werden – wie bei InsertionSort – die 1000 Elemente der Liste
L2 in die Liste L1 eingefügt.
Teilaufgabe (b)
Ist es mit Blick auf die Anzahl der im worst case benötigten Vergleichsoperationen sinnvoller, die Listen L1 und L2 zu verketten und anschließend die
so gebildete Liste mit einem effizienteren Sortierverfahren als InsertionSort zu
sortieren?
2. Aufgabe
Modifizieren Sie den in der Vorlesung vorgestellten Divide & Conquer –Verfahren,
mit dem das Element vom Rank k in einer Folge von n verschiedenen Zahlen
bestimmt werden kann. Im Unterschied zur der in der Vorlesung vorgestellten
Variante soll nun die gegebene Folge in Gruppen von drei Elementen(/* anstelle
von fünf Elementen wie in der Vorlesung */) zerlegt werden, um den Median
der Mediane zu bestimmen.
(a) Illustrieren Sie die Arbeitsweise des Verfahrens, um das Element vom
Rank 3 in der folgenden Folge zu bestimmen:
2, 4, 1, 5, 7, 3, 8, 9, 6, 12, 14, 11, 15, 17, 13, 18, 19, 16
(b) Geben Sie eine Rekursionsgleichung an, um die Anzahl der von diesem modifizierten Verfahren durchgeführten Vergleichsoperation abzuschätzen.
Hinweis: Um die Lösung der Rekursionsgleichung kümmern wir uns in der
Übung.
1
3. Aufgabe
Es sei s ein Binärstring der Länge n. Der folgende Divide and Conquer –Algorithmus kann verwendet werden, um zu bestimmen, wie oft die Ziffer 1 im Binärstring s vorkommt.
(i) Falls s der Binärstring 0 ist, gib eine 0 zurück. Falls s der Binärstring 1
ist, gib eine 1 zurück.
(ii) Andernfalls zerlege s in zwei Binärstrings s1 und s2 , deren Länge sich maximal um eins unterscheidet. Wende diesen Divide & Conquer –Algorithmus
auf die Binärstrings s1 und s2 an. Bestimme die Summe der als Ergebnis
zurückgegebenen Zahlen x1 und x2 und gib die Summe x1 + x2 zurück.
Geben Sie eine einfache Funktion f (.) an, die sowohl eine obere als auch eine untere Schranke für die Laufzeit des vorgestellten Divide & Conquer –Algorithmus
ist.
Hinweis: Gehen Sie bei Ihrer Laufzeitanalyse der Einfachheit halber davon
aus, daß (i) in konstanter Zeit realisiert werden kann und daß in (ii) sowohl die
beiden Binärstrings s1 und s2 als auch die Summe der zurückgegebenen Zahlen
x1 und x2 in konstanter Zeit bestimmt werden können.
4. Aufgabe
Es sei s ein Binärstring der Länge n. Der folgende Divide and Conquer –Algorithmus kann verwendet werden, um zu bestimmen, wie oft die Ziffer 1 im Binärstring s vorkommt.
(i) Falls s der Binärstring 0 ist, gib eine 0 zurück. Falls s der Binärstring 1
ist, gib eine 1 zurück. Falls s der leere Binärstring ist, gib eine 0 zurück.
(ii) Andernfalls zerlege s in drei Binärstrings s1 , s2 und s3 , deren Länge sich
maximal um eins unterscheidet. Wende diesen Divide & Conquer –Algorithmus auf die Binärstrings s1 , s2 und s3 an. Bestimme die Summe der
als Ergebnis zurückgegebenen Zahlen x1 , x2 und x3 und gib die Summe
x1 + x2 + x3 zurück.
Geben Sie eine einfache Funktion f (.) an, die sowohl eine obere als auch eine untere Schranke für die Laufzeit des vorgestellten Divide & Conquer –Algorithmus
ist.
Hinweis: Gehen Sie bei Ihrer Laufzeitanalyse der Einfachheit halber davon aus,
daß (i) in konstanter Zeit realisiert werden kann und daß in (ii) sowohl die drei
Binärstrings s1 , s2 und s3 als auch die Summe der zurückgegebenen Zahlen x1 ,
x2 und x3 in konstanter Zeit bestimmt werden können.
2
5. Aufgabe
Es sei f (n) = 7n3 + 17n2 − 25 log(n).
Es sei g1 (n) = nn , g2 (n) = n3 und g3 (n) = n2 .
Für welche der Funktionen gi (n) gilt f (n) ∈ Ω(gi (n)), f (n) ∈ Θ(gi (n)) bzw.
f (n) ∈ O(gi (n))?
Zur Beantwortung vervollständigen Sie die folgende Tabelle, indem Sie in die
Zellen ein “ja” bzw. ein “nein” eintragen. Es ist keine Begründung erforderlich!
f (n) ∈ Ω(gi (n))
f (n) ∈ Θ(gi (n))
i=1
i=2
i=3
3
f (n) ∈ O(gi (n))
Herunterladen