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