KIT Jun.-Prof. Henning Meyerhenke, Jun.-Prof. Dennis Hofheinz Institut f¨ ur Theoretische Informatik Christian Staudt, Christoph Striecks ¨ 6. Ubungsblatt zu Algorithmen I im SS 2015 https://crypto.iti.kit.edu/algo-sose15 {staudt,striecks}@kit.edu Mit L¨ osungsvorschl¨ agen Aufgabe 1 (Algorithmendesign, 2 + 2 Punkte) Gegeben sei eine sortierte Liste mit n Elementen. Nun haben Sie k ≤ n neue unsortierte Elemente in einem Array, die in die sortierte Liste einf¨ ugt werden sollen, sodass die Liste nach dem Einf¨ ugen weiter sortiert ist. a) Geben Sie einen Algorithmus an, der Laufzeit O(kn) hat und das Problem l¨ost. b) Geben Sie nun einen Algorithmus an, der Laufzeit O(k log k + n) hat und das Problem l¨ost. L¨ osungsvorschlag: uge die Elemente nacheinander in die sortierte Liste ein. Um ein Element einzuf¨ ugen, macht a) Man f¨ man lineare Suche: Man geht die Liste St¨ uck f¨ ur St¨ uck durch und vergleicht den Wert des aktuellen Elements mit dem Wert des einzuf¨ ugenden Elements, bis man die richtige Stelle gefunden hat. Die lineare Suche hat pro einzuf¨ ugendem Element Aufwand O(n + k), da im schlimmsten Fall die ganze Liste durchlaufen werden muss. Da wir k Elemente einf¨ ugen, ergibt sich somit ein Gesamtaufwand von O(k(n + k)) und da k ≤ n die Absch¨atzung des Gesamtaufwands O(kn). b) Nun gehen wir ein wenig anders vor. Zuerst sortieren wir das Array der neuen Elemente in Zeit O(k log k) zum Beispiel mit dem Algorithmus Mergesort aus der Vorlesung. Das sortierte Array wird dann in eine Liste konvertiert. Dann haben wir zwei sortierte Listen: in der einen sortieren Liste befinden sich die k neuen Elemente und in der anderen befinden sich die n alten sortierten Elemente. Nun verwenden wir die Funktion merge (aus Mergesort) und erhalten so in Zeit O(n) eine sortierte Liste, die die Elemente beider Listen enth¨alt. Insgesamt ergibt sich also ein Aufwand von O(k log k + n). Aufgabe 2 (Paralleles Sortieren, 3 Punkte) Die Ausf¨ uhrungszeit eines parallelen Algorithmus zum vergleichsbasierten Sortieren von n Elementen auf p Prozessoren sei n log2 n T (p) ∈ Θ . p Geben Sie den absoluten Speedup (Beschleunigung) und die absolute Effizienz an. Der Speedup ist das Verh¨altnis von sequenzieller Laufzeit zu paralleler Laufzeit in Abh¨angigkeit von p. Die Effizienz ist definiert als Speedup geteilt durch die Anzahl der Prozessoren, wieder in Abh¨angigkeit von p. Wie muss die Prozessorzahl mit der Eingabegr¨ oße asymptotisch steigen, damit der Speedup konstant bleibt? Nehmen Sie immer den schlechtesten Fall an und rechnen Sie im Θ-Kalk¨ ul. 1 Lo ¨sungsvorschlag: Der absolute Speedup ist definiert als S(p) = Tseq , T (p) wobei p die Prozessorzahl, Tseq die asymptotische Ausf¨ uhrungszeit des besten sequentiellen Algorithmus ist. Die (absolute) Effizienz ist definiert als Tseq S(p) = . p pT (p) E(p) = Die besten sequentiellen Algorithmen f¨ ur vergleichsbasiertes Sortieren haben Laufzeit Θ(n log n). Damit ist der Speedup Θ(n log n) p =Θ S(p) = 2 log n Θ n log n p und die Effizienz Θ E(p) = p log n p =Θ 1 log n Aus konstantem Speedup S(p) = Θ p log n ! = Θ(1) folgt p ∈ Θ(log n). Aufgabe 3 (Doktor Meta, 2 + 2 Punkte) Der ebenso geniale wie fundamental fehlentworfene Robotergehilfe und Untersuperb¨osewicht Røbøt ist auf einem Bein und einem Rad auf dem Weg durch Doktor Metas geheime Basis in den Tunnelsystemen unter Karlsruhe. Seine neue Entdeckung sollte allen Verdacht beseitigen, dass ihm einige essentielle Schaltkreise fehlen — er hat eine Priorit¨ atsliste entwickelt, die f¨ ur beliebige Objekte und Ordnungen funktioniert und dennoch alle Priorit¨ atslisten-Operationen (insert, deleteMin) in O(1) erledigen kann. Doktor Meta ist sehr interessiert an dieser Datenstruktur. Røbøt kann sich gerade nicht an den Quellcode erinnern, aber Doktor Meta vermutet, dass er in der Zwischenzeit schon einen Algorithmus auf Basis der neuen Priorit¨ atsliste entwickeln kann, der seine stetig wachsende Liste von Gegenspielern nach ihrer Bedrohung sortiert. a) Sei die Priorit¨ atslisten-Datenstruktur RøbøList gegeben, welche die Operationen insert und deleteMin (wie in der Vorlesung) abstrakt bereith¨alt. Nehmen Sie an, dass beide Operationen in konstanter Zeit ausgef¨ uhrt werden k¨onnen. Nutzen Sie RøbøList, um einen Algorithmus anzugeben, der ein Array A[1..n], f¨ ur n ∈ N, von nat¨ urlichen Zahlen in O(n) sortiert. Geben Sie den Algorithmus in Pseudocode an. b) Nehmen Sie an, dass eine RøbøList-Implementierung der deleteMin-Operation ausschließlich vergleichsbasiert und deterministisch arbeitet. Begr¨ unden Sie ausf¨ uhrlich, warum die Laufzeit einer derartigen deleteMin-Implementierung im schlechtesten Fall eine untere Schranke von Ω(log n) besitzt. L¨ osungsvorschlag: a) Folgender Pseudocode beschreibt das Sortieren eines Arrays A[1..n], wobei die Priorit¨atslistenDatenstruktur RøbøList benutzt wird. 2 Function røbøSort(A : Array [0..n − 1]; n : N) : Array [0..n − 1] for i := 1 to n do insert(A[i − 1]) for i := 1 to n do A[i − 1] = deleteMin return A b) Die RøbøList-Methoden insert und deleteMin k¨onnen genutzt werden, um einen vergleichsbasierten deterministischen Sortieralgorithmus zu konstruieren. (Siehe Teilaufgabe a).) Der Satz aus der Vorlesung auf Folie 178 sagt aus, dass die Laufzeit jedes vergleichsbasierten deterministischen Sortieralgorithmus im schlechtesten Fall in Ω(n log n) liegt. Da wir laut Aufgabenstellung annehmen, dass insert in O(1) l¨ auft, muss folglich deleteMin eine Laufzeit von Ω(log n) im schlechtesten Fall besitzen. 3
© Copyright 2024