1. Aufgabe - fbi.h

Werbung
Algorithmik
Sommersemester 2015
Prof. Dr. Steffen Lange
3. Übungsblatt
1. Aufgabe
Es sei k ≥ 0 und L eine Liste mit n = 2k Zahlen.
Um das Produkt der Zahlen in der Liste L zu bestimmen, stehen die folgenden
zwei Algorithmen zur Verfügung.
Algorithmus A:
wie folgt:
Dieser Algorithmus bestimmt seinen Rückgabewert A(L)
(a1) Falls L genau eine Zahl enthält, so wird diese Zahl zurückgegeben.
(a2) Falls L mehr als eine Zahl enthält, so wird L in zwei gleich große
Listen L1 und L2 zerlegt. Anschließend werden rekursiv die
Rückgabewerte A(L1 ) und A(L2 ) bestimmt. Danach wird das
Produkt der Zahlen A(L1 ) und A(L2 ) berechnet und zurückgegeben.
Algorithmus B:
wie folgt:
Dieser Algorithmus berechnet seinen Rückgabewert B(L)
(b1) Falls L genau eine Zahl enthält, so wird diese Zahl zurückgegeben.
(b2) Falls L genau zwei Zahlen enthält, so wird das Produkt dieser
beiden Zahlen zurückgegeben.
(b3) Falls L mehr als zwei Zahlen enthält, so wird L in z Listen L1 ,
. . . , Lz mit jeweils zwei Zahlen zerlegt. Anschließend werden
rekursiv die Rückgabewerte B(L1 ), . . . , B(Lz ) bestimmt. Danach wird das Produkt der Zahlen B(L1 ), . . . , B(Lz ) berechnet
und zurückgegeben.
Beantworten Sie die folgenden Fragen so ausführlich, dass erkennbar ist, wie Sie
zu Ihren Antworten gekommen sind.
(i) Geben Sie eine einfache Funktion g1 (n) an, die gleichzeitig eine untere und
obere asymptotische Schranke für die Anzahl der Multiplikationen ist, die
der Algorithmus A benötigt, um für eine gegebene Liste L mit n Zahlen
den Rückgabwert A(L) zu bestimmen.
1
(ii) Geben Sie eine einfache Funktion g2 (n) an, die gleichzeitig eine untere und
obere asymptotische Schranke für die Anzahl der Multiplikationen ist, die
der Algorithmus B benötigt, um für eine gegebene Liste L mit n Zahlen
den Rückgabwert B(L) zu bestimmen.
2. Aufgabe
Es sei a = a[1], . . . , a[n] ein Array mit n Elementen, in denen eine Permutation
der Zahlen 1 bis n gespeichert ist. Es sei b = b[0], . . . , b[n] ein Array mit n + 1
Elementen, die alle die Zahl 0 speichern.
Es sei das folgende Programm gegeben:
int max = 0
for ( int i = 1; i <= n; ++i ) {
if ( b[max] < a[i] )
{ ++max; b[max] = a[i]; }
else
{ while ( b[max] > a[i] )
{ b[max] = 0; --max; cout << 1 << endl; }
++max; b[max] = a[i];
}
}
Teilaufgabe (a)
Illustrieren Sie die Arbeitsweise des obigen Programms, wenn a die fünf Elemente 5, 2, 4, 1 und 3 in der angegebenen Reihenfolge speichert.
Teilaufgabe (b)
Es sei f (n) = n2 .
• Begründen Sie, dass f (n) eine (asymptotische) obere Schranke für die
Anzahl der Einsen ist, die das obige Programm auf den Bildschirm ausgibt.
• Ist die Funktion f (n) auch eine (asymptotische) untere Schranke für die
Anzahl der Einsen ist, die das obige Programm auf den Bildschirm ausgibt? Begründen Sie Ihre Antwort.
2
3. Aufgabe
Es sei a ein Array der Größe n, indem rationale Zahlen gespeichert sind.
Hinweis: Bei der Bearbeitung der Teilaufgaben a) und b), können Sie benutzen,
dass bekannt ist, dass mindestens n − 1 Vergleiche benötigt werden, um das
Maximum der in A gespeicherten Zahlen zu bestimmen. Diese Aussage haben
wir in der Vorlesung bereits bewiesen. Sie gilt auh, wenn in A nur postive bzw.
negative Zahlen gespeichert sind.
Teilaufgabe (a)
Begünden Sie, weshalb mindestens n − 1 Vergleiche benötigt werden, um das
Minimum der im Array a gespeicherten Zahlen zu bestimmen.
Teilaufgabe (a)
Begründen Sie, weshalb mindestens n − 1 Vergleiche benötigt werden, um die
maximale Teilsumme der im Array a gespeicherten Zahlen zu bestimmen.
4. Aufgabe
Illustrieren Sie die Arbeitsweise der in der Vorlesung vorgestellten randomisierte
Verfahren zum Bestimmen des Elements vom Rang k in einer Folge F von n
verschiedenen Zahlen für die folgenden Folge F und k = 3:
F = 2, 4, 1, 5, 7, 3, 8, 9, 6, 12, 14, 11, 15, 13, 10.
5. Aufgabe
Teilaufgabe (a)
Begründen Sie, weshalb drei Vergleiche genügen, um in einer Liste mit drei
paarweise verschiedenen Elementen den Median, d.h. das Element vom Rank
k = 2 zu bestimmen.
Teilaufgabe (b)
Begründen Sie, weshalb sieben Vergleiche genügen, um in einer Liste mit fünf
paarweise verschiedenen Elementen den Median, d.h. das Element vom Rank
k = 3 zu bestimmen.
Hinweis: Überlegen Sie sich, wie viele Vergleiche genügen, um eine Liste mit
vier paarweise verschiedenen Elementen zu sortieren.
3
6. Aufgabe
Hinweis: Diese Aufgabe diskutieren wir in der Übung am 20.05.2015. Diejenigen
die zur am Übung am 27.05.2015 kommen, lösen die Aufgabe bitte selbständig.
Modifizieren Sie das in der Vorlesung vorgestellte deterministische Verfahren
zum Bestimmen des Elements vom Rang k in einer Folge von n verschiedenen
Zahlen. Im Unterschied zur vorgestellten Variante soll nun die gegebene Folge in
Blöcke von drei Elementen (/* anstelle von fünf Elementen */) 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 Vergleichsoperation abzuschätzen, die dieses modifizierte Verfahren benötigt.
Viel Erfolg beim Bearbeiten der Aufgaben!
4
Herunterladen