Seminar parallele Programmierung SS 2003

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Fast Fourier Transformation
Matrixmultiplikation
Berechne den optimalen (kürzesten, schnellsten) Weg
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Minimum Spanning Tree: MST
Der k-d-Baum Richard Göbel.
Polynomial Root Isolation
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Graphen Ein Graph ist eine Kollektion von Knoten und Kanten. Knoten sind einfache Objekte. Sie haben Namen und können Träger von Werten, Eigenschaften.
Das LCA – Problem in Suffixbäumen
GIN2 – 2. Vorlesung, SS04 Prof. Dr. Wolfram Conen
ADS Vorlesung Prof. Dr. W. Conen, FH Gelsenkirchen
7. Natürliche Binärbäume
3. Kapitel: Komplexität und Komplexitätsklassen
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Fibonacci-Heaps – Analyse) Tobias Lauer.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 12 Claudio Moraga, Gisbert Dittrich FBI Unido
Algorithmen und Komplexität
Christian Schindelhauer
Minimum Spanning Tree: MST
Effiziente Algorithmen
Agenda Motivation Grundlagen der Matrix-Vektor-Multiplikation
Splay Trees Von Projdakov Benjamin.
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Information und Kommunikation
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Christian Scheideler Institut für Informatik Universität Paderborn
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Das Traveling Salesman Problem (TSP)
Analyse der Laufzeit von Algorithmen
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken VIII Christian Schindelhauer
Eine kurze Geschichte der Graphentheorie
Minimal spannende Bäume
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Konvexe Hüllen (Convex Hulls)
Gliederung der Vorlesung
Binärbäume.
 Präsentation transkript:

Seminar parallele Programmierung SS 2003 Graphalgorithmen Seminar parallele Programmierung SS 2003 Bernd Kruthoff und Jochen Olejnik

Gliederung 1. Motivation 2. Verbundene Komponenten - Hirschbergs Algorithmus 3. Minimal Spannender Baum - Kruskals Algorithmus - Sollins Algorithmus 4. Kürzeste Pfade von einem Knoten ausgehend - Moores Algorithmus 5. Zusammenfassung

1. Motivation Probleme der Praxis werden komplexer Lassen sich häufig durch Graphen darstellen Herkömmliche Algorithmen stoßen an Grenzen Lösung: Parallelisierung bekannter Algorithmen

Verbundene Komponenten Finden aller verbundenen Komponenten in einem ungerichteten Graphen 3 mögliche Ansätze: A. Suchalgorithmen durch Breiten- bzw. Tiefensuche durch den kompletten Graphen

Verbundene Komponenten B. Transitive Hülle Grundlage: Adjazenzmatrix Bestimmen der transitiven Hülle durch Plus-Min-Multiplikationen Plus-Min-Multiplikation ist Matrixmultiplikation bei der Skalamultiplikationen durch Additionen und Additionen durch Minimumoperationen ersetzt werden => Strukturanalogie zur Matrixmultiplikation: => Laufzeit: für eine Plus-Min-Multiplikation => für log n Plus-Min-Multiplikationen

C. Hirschbergs Algorithmus Grundidee: Knoten zu Knotengruppen zusammenfassen bis kein weiteres Zusammenfassen mehr möglich ist Jeder Knoten gehört zu genau einer Knotengruppe Knotengruppen werden durch Wurzel (hier: kleinstes Element) identifiziert Der Algorithmus: 1. Schritt: Zu jedem Knoten wird die angrenzenden Knotengruppe mit der kleinsten Wurzel gesucht 2. Schritt: Verbinden der Wurzeln der in Schritt 1 gefundenen Knotengruppen 3. Schritt: Die in Schritt 2 gefundenen Knotengruppen werden zu einer Knotengruppe zusammengefasst Endet, wenn es in Schritt 1 keine angrenzende Knotengruppe mehr gibt

Ein Beispiel: Die Ausgangssituation: Knoten 1 2 3 4 5 6 7 8 9 10 11 Knoten-gruppe

Beispiel: 1. Iteration 1. Schritt: Zu jedem Knoten wird die angrenzende Knotengruppe mit der kleinsten Wurzel gesucht

Beispiel: 1. Iteration 2. Schritt: Verbinden der Wurzeln der in Schritt 1 gefundenen Knotengruppen

Beispiel: 1. Iteration 3. Schritt: Die in Schritt 2 gefundenen Knotengruppen werden zu einer Knotengruppe zusammengefasst

Beispiel: 1. Iteration Ergebnis Knoten 1 2 3 4 5 6 7 8 9 10 11 Knoten-gruppe

Beispiel: 2. Iteration Letzte Iteration: Startgraph: 1. Schritt: Zu jedem Knoten wird die angrenzenden Knotengruppe mit kleinster Wurzel gesucht

Beispiel: 2. Iteration 2. Schritt: Verbinden der Wurzeln der in Schritt 1 gefundenen Knotengruppen

Beispiel: 2. Iteration 3. Schritt: Die in Schritt 2 gefundenen Knotengruppen werden zu einer Knotengruppe zusammengefasst

Beispiel: 2. Iteration Ergebnis Knoten 1 2 3 4 5 6 7 8 9 10 11 Knoten-gruppe

Komplexität Der Algorithmus benötigt Iterationen weil sich die Anzahl der Knotengruppen mit jeder Iteration mindestens halbiert Es werden n2 Prozessoren benötigt, weil maximal n benachbarte Knotengruppen pro Knoten verglichen werden müssen. => Gesamtkomplexität

Verbesserungen Betrachten von Brents Theorem: Es reichen Prozessoren aus um n Elemente anzusprechen und deren Minimum in Zeit zu finden. Jeder Prozessor kann log n Elemente anstatt nur einem ansprechen oder das Minimum aus log n Elementen berechnen, anstatt nur das Minimum aus zwei Elementen ohne die Zeitkomplexität zu verändern. Der Algorithmus benötigt also Zeit bei Prozessoren.

Eine Implementierung Implementierung von Hirschbergs Algorithmus auf das 2D Mesh SIMD Rechnermodell (Nassimi, Sahni) 3 neue Befehle: random.read(a,[b]c) liest den Wert der Variablen c im Bereich von Prozess b in die Variable a ein random.write(a,[b]c) schreibt den Wert der Variablen a in die Variable c im Bereich von Prozess b Laufzeit dieser Operationen ist nur vom Rechner abhängig => konstant in Bezug auf die Anzahl der Elemente bits(i,j,k) gibt den Wert der Stellen j bis k der Zahl i zurück z. B. bits (9,3,2) : 9 ist binär 0101 zweite und dritte Stelle: 01 also wird 1 zurückgegeben Ist j<k wird 0 zurückgegeben

Laufzeit dieser Implementierung

Loop (Zeilen 5-18) wird log n mal durchlaufen In innerem Loop (Zeilen 9-13) wird d mal die Minimumoperation angewendet, welche O(n) Zeit verbraucht

Laufzeit dieser Implementierung Loop (Zeilen 5-18) wird log n mal durchlaufen In innerem Loop (Zeilen 9-13) wird d mal die Minimumoperation angewendet, welche O(n) Zeit verbraucht Auf dem 2D mesh-SIMD-Rechner mit n Prozessoren und n=2k Knoten und Maximalwert d hat dieser Algorithmus eine Komplexität von .

Minimal Spannender Baum Finden des Minimal Spannenden Baumes in einem ungerichteten verbundenen gewichteten Graphen Kruskals Algorithmus Idee: Alle Knoten sind anfangs Bäume Pro Iteration wird nun die kleinste noch nicht im Minimal Spannenden Baum vorhandene Kante eingefügt, falls dadurch kein Zyklus entstünde

Beispiel Kruskals Algorithmus

Beispiel Kruskals Algorithmus

Der Heap als Datenstruktur Parallelisierung durch geschickte Wahl der Datenstruktur Hier bietet sich der Heap an! => Gute Laufzeiteigenschaften Hier wird der Heap mit -wertigen Knoten zu einem vollständigen Binärbaum ausgebaut Lemma: Man kann mit einer UMA-Multiprozessormaschine mit log nProzessoren ein Element aus einer n-elementigen Menge in konstanter Zeit aus dem Heap auslesen.

Der Heap als Datenstruktur Jede Ebene hat Flag mit Wert => voll wenn alle Knoten belegt => leer wenn es leere Knoten in Ebene gibt Wert empty_node zeigt pro Ebene Knoten, in dem Wert fehlt Jeder Prozessor ist für eine Ebene zuständig. Wird ein Knoten leer so füllt ihn der zuständige Prozessor aus dem kleinsten Element der Kinder dieses Knotens wieder auf Wird ein Blatt leer, so wird der Wert  eingetragen Heapaufbau kann durch Prescheduling parallelisiert werden

Ein Beispielheap E Heap F EN 1 Voll kein 2 Leer 3 6 4

Der Gesamtalgorithmus Aufbauen des Heap Prozess entnimmt fortlaufend Knoten aus dem Heap und überprüft, ob sie zum Minimal Spannenden Baum gehören Die restlichen Prozesse stellen währenddessen den Heap wieder her Terminiert, wenn  ausgelesen wird Laufzeit: Wiederaufbau des Heap und Überprüfung auf Zyklus (Find und Union) geschieht in konstanter Zeit Entnahme der Knoten in konstanter Zeit möglich =>Gesamtalgorithmus benötigt O(n) Zeit

Wechsel....