TU Ilmenau, Fakultät IA Institut TI, FG Komplexitätstheorie und Effiziente Algorithmen Univ.-Prof. Dr. Martin Dietzfelbinger, Dipl.-Inf. M. Aumüller http://www.tu-ilmenau.de/iti/lehre/lehre-ss-2013/ea/ Effiziente Algorithmen SS 2013 Übungsblatt 2 Themen für die zweite Übungsstunde am 30.4., 7.5., bzw. 8.5.2013. (Die Mittwochsübung verschiebt sich aufgrund des Feiertags um eine Woche und findet im Sr HU 202 statt.) Abgabe von Lösungsvorschlägen (mit Übungsgruppe!) für die markierten Aufgaben (*) bis zum 29.4.2013, 17 Uhr, per E-Mail an [email protected] oder direkt in meinem Büro (Z 1057). Aufgabe 1 (Suche eines lokalen Minimums)* Sei M = (ai,j ) eine n × m-Matrix mit paarweise verschiedenen, reellwertigen Einträgen. Wir können M der Anschaulichkeit halber auch als ein 2-dimensionales n × m-Gitter betrachten, an dessen Kreuzungspunkten reelle Zahlen stehen. Die direkten Nachbarn von ai,j in diesem Gitter sind, sofern vorhanden, ai+1,j , ai,j+1 , ai−1,j und ai,j−1 . Wir nennen ai,j ein lokales Minimum, falls ai,j kleiner als all seine Nachbarn ist. Entwerfen und analysieren Sie einen Divide-and-Conquer-Algorithmus, der auf Eingabe M ein lokales Minimum bestimmt! Ihr Algorithmus sollte eine Laufzeit von O(min(n, m)· log(max(n, m))) bzw. O(max(n, m)) besitzen. Beweisen Sie, dass ein in einem Teilproblem bestimmtes lokales Minimum auch ein lokales Minimum im Ausgangsproblem ist! Aufgabe 2 (Finden des Medians von fünf Elementen)* Der aus der Vorlesung bekannte BFPRT-Algorithmus teilt Elemente einer total geordneten Menge in Fünfergruppen auf und bestimmt in jeder Gruppe den Median. In der Vorlesung wird behauptet, dass diese Medianbestimmung mit sechs Vergleichen möglich ist. Geben Sie ein Verfahren an, das den Median von fünf Elementen mit maximal sechs Vergleichen ermittelt. Hinweis: Versuchen Sie, die beiden kleinsten Elemente (ohne deren Beziehung zueinander) mit 5 Vergleichen zu bestimmen, wobei Sie zusätzlich nach diesen Vergleichen Information über die Ordnung zweier beliebiger restlicher Elemente haben sollten. Aufgabe 3 (Eine abgewandelte Form des BFPRT-Algorithmus)* Nach dem Halten der Vorlesung ist Martin A. noch nicht zufrieden: die Aufteilung der Elemente in Fünfer-Gruppen im BFPRT-Algorithmus erscheint ihm willkürlich. Nach Stunden des Rechnens in seinem stillen Kämmerlein kommt er zu folgender Vermutung: Wenn ich die Elemente in Siebener-Gruppen einteile, dann erhalte ich einen deterministischen Algorithmus für das Auswahlproblem mit Laufzeit O(n). Wenn ich die Elemente jedoch in Dreier-Gruppen einteile, dann ermöglicht mir der BFPRT-Ansatz keinen Linearzeitalgorithmus. Betrachten Sie die Laufzeitabschätzung aus der Vorlesung und rechnen Sie die Laufzeit im Fall von Dreier-Gruppen bzw. Siebener-Gruppen nach. Ist Martins Vermutung richtig? 2 Effiziente Algorithmen SS 2013 Übungsblatt 2 Aufgabe 4 (Falls die Zeit reicht: Iterativer Algorithmus für die Fourier-Transformation) In der Vorlesung haben Sie eine rekursive Variante des FFT-Algorithmus kennengelernt. Wir wollen in dieser Übungsaufgabe betrachten, wie man diesen Algorithmus iterativ formulieren kann. Betrachten Sie dazu die folgende Schaltung für n = 8: Wie man leicht sehen kann, muss die Eingabe (a0 , . . . , an−1 ) = (ω 0 , . . . , ω n−1 ) permutiert werden, um dann schichtweise die nötigen Additionen und Multiplikationen durchführen zu können. Zum Beispiel muss für n = 8 das Resultat der Permutation (a0 , a4 , a2 , a6 , a1 , a5 , a3 , a7 ) sein. Wenn eine Leitung mit einer natürlichen Zahl j beschriftet ist, so wird der Wert am linken Ende der Leitung mit ω j multipliziert. In den jeweiligen Knoten erfolgt dann eine Addition der von links kommenden (komplexen) Zahlen. (Betrachten Sie hierfür auch die Kommentare auf Vorlesungsfolie 33 des Foliensatzes zur FFT.) (a) Geben Sie einen Algorithmus BitPermut(a) an, der die Eingabe (a0 , . . . , an−1 ) so permutiert, dass sie als Startbelegung für den iterativen FFT-Algorithmus genutzt werden kann. Dies ist beispielsweise recht einfach rekursiv zu bewerkstelligen. Können Sie die Permutation auch direkt beschreiben? (Es kann hierbei hilfreich sein, die Schaltungen für n = 4 und n = 16 zu betrachten.) (b) Formulieren Sie eine iterative Variante des FFT-Algorithmus.