6. ¨Ubungsblatt zu Algorithmen I im SS 2015

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