Algorithmik Sommersemester 2017 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 ein Array der Größe 10, in dem die Zahlen 1 bis 10 gespeichert sind. Beantworten Sie die folgenden Fragen und begründen Sie Ihre Antworten. (i) Geben Sie eine Anordnung der Elemente im Array a an, so dass jedes Sortierverfahren mindestens zwei Austauschoperationen benötigt, um das Array a zu sortieren. (ii) Geben Sie eine Anordnung der Elemente im Array a an, so dass jedes Sortierverfahren mindestens acht Austauschoperationen benötigt, um das Array a zu sortieren. 3. Aufgabe Es sei a ein Array der Größe n, in dem rationale Zahlen gespeichert sind. Begründen Sie, weshalb mindestens n − 1 Vergleiche benötigt werden, um die maximale Teilsumme der im Array a gespeicherten Zahlen zu bestimmen. Hinweis: Bei der Bearbeitung dieser Aufgabe können Sie benutzen, dass bekannt ist, dass mindestens n − 1 Vergleiche benötigt werden, um das Minimum der im Array a gespeicherten Zahlen zu bestimmen. 4. Aufgabe Es sei a ein Array mit n Elementen. Teilaufgabe (a) Es sei n = 7. Wie viele Vergleichsoperationen werden maximal benötigt, um mit dem in der Vorlesung vorgestellten Verfahren einen Heap zu konstruieren, der alle in a gespeicherten Elemente enthält. Teilaufgabe (b) Es sei n = 15. Wie viele Vergleichsoperationen werden maximal benötigt, um mit dem in der Vorlesung vorgestellten Verfahren einen Heap zu konstruieren, der alle in a gespeicherten Elemente enthält. 2 Teilaufgabe (c) Zeigen sie, dass allgemein O(n) viele Vergleichsoperationen ausreichen, um mit dem in der Vorlesung vorgestellten Verfahren einen Heap zu konstruieren, der alle in a gespeicherten Elemente enthält. 5. Aufgabe 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. 6. Aufgabe 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! 3