1. Übungsblatt - ZAIK - Universität zu Köln

Werbung
Universität zu Köln
Institut für Informatik
Dr. O. Schaudt
A. van der Grinten
Übung zu Parallele Algorithmen
Blatt Nr. 1
Dieses Übungsblatt muss bis zum 21.04.2016, 15:30 abgegeben werden. Schreiben Sie Ihren Namen und Ihre Übungsgruppe oben auf die Abgabe! Die Besprechung findet in der Woche des
25.04.2016 statt.
Allgemeine Hinweise
• Die Abgabe der Aufgaben erfolgt in den entsprechend beschrifteten Briefkasten in der 5. Etage
des Weyertal 121 oder alternativ in der Übungsgruppe.
• Die erste Übungsbesprechung findet am Dienstag den 26.04. bzw. am Donnerstag den 28.04.
statt.
• In Aufgaben, bei denen ein Algorithmus konstruiert werden soll, ist es stets Teil der Aufgabe,
die Korrektheit und ggf. die geforderte Laufzeitschranke des Algorithmus zu zeigen.
• Solange nichts anderes angegeben ist, beziehen sich alle Algorithmen auf das (CREW-)P-RAM
Modell.
Aufgabe 1: Präfixsummen und Extrahieren von markierten Elementen (10 Punkte)
(a) Gegeben sei ein n-elementiges Array A von Zahlen. Entwerfen Sie mithilfe der Methode des
Verdoppelns ein Verfahren, das die Präfixsummen A(1), A(1) + A(2), . . ., A(1) + . . . + A(n)
berechnet. Dabei dürfen Sie O(n) Prozessoren und O(log n) Rechenschritte benutzen. (6 Punkte)
(b) Gegeben sei ein n-elementiges Array A mit Einträgen aus einer Menge U und eine Eigenschaft
markiert(x) für x ∈ U , die sich in einer konstanten Anzahl von Schritten berechnen lässt.
Entwerfen Sie einen Algorithmus, der mit O(n) Prozessoren in O(log n) Zeit ein neues Array
konstruiert, das genau die markierten Elemente aus A enthält. (4 Punkte)
Aufgabe 2: Majority-Element (15 Punkte)
Es sei A ein n-elementiges Array und OBdA gelte n = 2k . Wir wir nennen x ∈ A ein Majority-Element,
falls x öfter als n2 -mal in A vorkommt.
(a) Entwickeln Sie einen Divide-and-Conquer-Algorithmus, der das Majority-Element von A findet oder ermittelt, dass kein solches Element existiert. Der Algorithmus darf dabei mit O(n)
Prozessoren und O(log2 n) Zeit arbeiten.
Mit Divide-and-Conquer ist hier gemeint, dass das Verfahren das Eingabearray in zwei Hälften
aufteilt, das Problem rekursiv (parallel auf beiden Hälften) löst und die Resultate zu einer Lösung
des ursprünglichen Problems kombiniert. (8 Punkte)
1
(b) Ein alternativer Ansatz um das Problem (bei gleicher Anzahl von Prozessoren und Laufzeit)
zu lösen ist die folgende Collapsing-Strategie: Wir betrachen jeweils die Elemente A(2i) und
A(2i + 1) für i ∈ N. Sollten diese übereinstimmen, ersetzen wir sie durch ein einziges Element.
Ansonsten eliminieren wir beide Elemente.
Zeigen Sie, dass diese Strategie zu einem Algorithmus führt, der das Problem in der gewünschten
Laufzeit löst. (7 Punkte)
Aufgabe 3: W-RAM (15 Punkte)
Wir betrachten als alternatives Berechnungsmodell die W-RAM Maschiene, die neben den üblichen
Operationen der P-RAM folgende Operation erlaubt:
Auf einer Speicherzelle, die einen Wert aus {0, 1} enthält, darf von einer Teilmenge aller Prozessoren
eine Concurrent-Write-Operation ausgeführt werden, falls alle beteiligten Prozessoren eine 1 schreiben.
(a) Geben Sie einen W-RAM Algorithmus an, der das Maximum in einem n-elementigen Array A
mit O(n2 ) Prozessoren in Zeit O(1) berechnet.
Hinweis: Berechnen Sie das Array M mit M (i) = 1 genau dann, wenn ein j ∈ {1, . . . , n} \ {i}
mit A(j) > A(i) existiert. (7 Punkte)
(b) Zeigen Sie, dass sich ein W-RAM Programm, das k Prozessoren und m parallele Rechenschritte
benötigt, auf einer P-RAM mit O(k) Prozessoren in Zeit O(m log k) simulieren lässt.
Hinweis: Ersetzen Sie eine Speicherstelle der W-RAM durch ein k-elementiges Array im P-RAM
Modell.
Nehmen Sie weiterhin ohne Beweis an, dass es in O(log k) paralleler Zeit möglich ist, alle Prozessoren, die während einer Concurrent-Write-Operation auf dieselbe Speicherstelle zugreifen,
in jeweils einer Liste zusammenzufassen. Genauer: Es ist möglich ein k-elementiges Array next
zu berechnen, wobei next(p) die Nummer des nächsten Prozessors angibt, der auf dieselbe Speicherzelle zugreift wie p. (8 Punkte)
2
Herunterladen