2. Übungsblatt

Werbung
Universität zu Köln
Institut für Informatik
Dr. O. Schaudt
A. van der Grinten
Übung zu Parallele Algorithmen
Blatt Nr. 2
Dieses Übungsblatt muss bis zum 28.04.2016, 15:30 abgegeben werden. Schreiben Sie Ihren Namen
und Ihre Übungsgruppe oben auf die Abgabe!
Aufgabe 1: Kostenoptimale Präfixsummen (15 Punkte)
In der Vorlesung wurde gezeigt, dass die Verdopplungsmethode Ω(n log n) Arbeitsschritte benötigt.
Daher ist der Algorithmus zum Berechnen der Präfixsummen eines n-elementigen Arrays auf dem
letzten Übungsblatt nicht kostenoptimal.
Konstruieren Sie durch zweifaches Anwenden der Binärbaum-Methode einen Algorithmus für das
Präfixsummmen-Problem, der nur O(n) Arbeitsschritte benötigt. Nutzen Sie die erste Iteration, um
in jedem Knoten die Summe der Blätter in seinem Teilbaum zu berechnen. Zeigen Sie, dass das
resultierende Verfahren kostenoptimal ist.
Lässt sich der Algorithmus auf beliebige assoziative Operatoren anstatt (Z, +) erweitern? Wie sieht
dies bei einem Verfahren mittels Verdoppeln aus?
Aufgabe 2: All-Pairs-Shortest-Path (15 Punkte)
Wir betrachten einen gerichteten Graph mit n Knoten.
(a) Zeigen Sie, dass das APSP-Problem auf einer W-RAM mit O(n4 ) Prozessoren in Zeit O(log n)
lösbar ist. (6 Punkte)
(b) Überlegen Sie sich, wie sich der APSP-Algorithmus aus der Vorlesung so erweitern lässt, dass er
nicht nur die Länge des kürzesten Weges berechnet, sondern auch die Kanten auf den kürzesten
Wegen bestimmt.
Berechnen Sie dazu eine Matrix P , wobei P (i, j) den vorletzten Knoten auf einem kürzesten
Weg von i nach j angibt. Wie lässt sich, für feste i, j ∈ {1, . . . , n}, aus dieser Matrix mithilfe
von O(n2 ) Prozessoren in O(log n) Zeit ein Array Wi,j extrahieren, dass genau den kürzesten
Weg von i nach j enthält? (9 Punkte)
Aufgabe 3: Eulerkreise (10 Punkte)
Ein Eulerkreis in einem (gerichteten oder ungerichteten) Graphen ist ein Kreis, der jede Kante des
Graphen genau einmal enthält. Ein Graph G heißt eulersch, wenn G einen Eulerkreis besitzt.
(a) Sei G ungerichtet und zusammenhängend. Zeigen Sie, dass G genau dann eulersch ist, wenn alle
Knoten von G geraden Grad haben. Geben Sie einen sequentiellen Algorithmus an, der einen
Eulerkreis in G konstruiert. (6 Punkte)
1
(b) Sei G gerichtet und stark zusammenhängend. Zeigen Sie, dass G genau dann eulersch ist, falls
für jeden Knoten v der Eingangsgrad von v mit dem Ausgangsgrad von v übereinstimmt. (4
Punkte)
2
Herunterladen