Minimal spannende Bäume

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

8. Termin Teil B: Wiederholung Begriffe Baum
Vortrag von Stephanie Weirauch Jens Pleger Peter Jancke Frank Wejmelka
Algorithmen für das Erfüllbarkeitsproblem SAT
Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung
Routing – Routing Protokolle
Berechne den optimalen (kürzesten, schnellsten) Weg
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Single-Source Shortest Paths: SSSP
Minimum Spanning Tree: MST
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
7.2 B-Bäume / B*-Bäume als Hilfsmittel zur Indexorganisation
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.
ADS Vorlesung Prof. Dr. W. Conen, FH Gelsenkirchen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Suche in Texten (Stringsuche )
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Algorithmen und Komplexität
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Das Maßproblem von Klee
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Seminar parallele Programmierung SS 2003
Externe Datenstruktur lineare Liste
High Performance = Innovative Computer Systems + Efficient Algorithms Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen.
Algorithmen und Komplexität
Minimum Spanning Tree: MST
Vortrag über Graphen Von Jörg Hendricks.
Effiziente Algorithmen
Splay Trees Von Projdakov Benjamin.
Effiziente Algorithmen
Effiziente Algorithmen
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Graphen und Bäume.
Optimierungstechniken in modernen Compilern
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Parallelisierung für Multiprozessor-Maschinen
Das Traveling Salesman Problem (TSP)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Analyse der Laufzeit von Algorithmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.
Algorithmen und Datenstrukturen
Gliederung der Vorlesung
Binärbäume.
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 1 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Einführung in die Informationsverarbeitung Teil Thaller Stunde V: Wege und warum man sie geht Graphen. Köln 14. Januar 2016.
Rechen- und Kommunikationszentrum (RZ) Selektionsstrategien auf Graphstrukturen Sven Porsche Seminarvorträge Aachen.
Das Problem des Handlungsreisenden
 Präsentation transkript:

Minimal spannende Bäume Motivation Verbundene Komponenten Minimal spannende Bäume Kruskals Algorithmus Sollins Algorithmus Kürzeste Pfade von einem Ausgangsknoten ausgehend Zusammenfassung

Minimal spannende Bäume Problemstellung - siehe Kruskals Algorithmus Finden einer Menge von Kanten, die alle Knoten eines gewichteten und unge- richteten Graphens mit minimaler Summe der Kantengewichte verbindet Beispielgraph 4 5 2 A B C H 6 1 1 3 5 G D I 1 2 3 7 F E 4

Sequentieller Algorithmus von Sollin (1/2) Vorgehensweise Ähnliche Vorgehensweise wie der Algorithmus von Hirschberg Knoten sind zunächst ebenfalls jeweils ein Teilbaum Je Iteration wird für jeden Teilbaum die Kante mit geringsten Gewicht zu einem anderen Teilbaum gesucht Falls kein Zyklus entsteht werden Teilbäume über die Kante verbunden Kantenwahl in der 1. Iteration 4 A B C H 1 1 3 G D I 1 3 F E Kantenwahl nicht deterministisch Abhängig von der Laufzeit und Datenstruktur

Sequentieller Algorithmus von Sollin (2/2) Kantenwahl in der 2. Iteration 4 2 A B C H 1 1 3 1 G D I 2 3 F E Ein möglicher minimal Spannender Baum 4 A B C H 1 1 3 5 1 G D I 2 3 F E

Parallelisierung des Algorithmus von Sollin (1/2) Vorgehensweise Iteration können nicht parallelisiert werden, lediglich die einzelnen Schleifen Parallele Version ist der sequentiellen sehr ähnlich in paralleler Version: Vorverteilung in paralleler Version: Vorverteilung

Parallelisierung des Algorithmus von Sollin (2/2) Verwendete Operationen Find(v): Gibt Namen der Menge wieder, in der sich ein Knoten befindet - Union(v,w): Zusammenfassen der Mengen v und w zu einer Menge in paralleler Version: Vorverteilung in paralleler Version: Vorverteilung Aber: Sperren der Teilbäume nötig, um exklusiven Zugriff auf Teilbäume für Prozessoren zu erhalten

Laufzeit des parallelen Algorithmus auf dem Laufzeit des parallelen Algorithmus auf dem UMA-Multiprozessormodell (1/2) Iteration Verminderung der Anzahl Teilbäume um mind. Faktor 2 je Iteration, da jeder Teilbaum mit mind. einem weiteren Teilbaum verbunden wird max. Iterationen nötig Union- und Find- Operationen langsam wachsende Zeitkomplexität Θ können vereinfachend als Konstanten angenommen werden For-Schleifen in den Iterationen Initialisierung (9-11): Θ Durch Vorverteilung der n Teilbäume auf die p Prozessoren Suche der Kante mit geringstem Gewicht (12-19): Θ Es können max. n–1 Kanten von n Knoten abgehen Somit Vorverteilung der max. nötigen Untersuchungen auf die p Prozessoren

Laufzeit des parallelen Algorithmus auf dem UMA-Multiprozessormodell (2/2) Letzte For-Schleife in den Iterationen - Verbinden der Teilbäume (20-28): Θ Vorverteilung der n Teilbäume auf die p Prozessoren ABER Worst Case: Zum Sperren muss ein Prozessor auf alle anderen p-1 Prozessoren warten Zusätzlich in jeder For-Schleife: Θ Datenstruktur muss für Vorverteilung in den Schleifen max. p-Mal gesperrt werden Resultierende Zeitkomplexität Θ X Θ = Θ Gute Beschleunigung bei p < < n

Kürzeste Pfade von einem Ausgangsknoten ausgehend Motivation Verbundene Komponenten Minimal spannende Bäume Kruskals Algorithmus Sollins Algorithmus Kürzeste Pfade von einem Ausgangsknoten ausgehend Zusammenfassung

Kürzeste Pfade von einem Ausgangsknoten ausgehend Problemstellung Bestimmen der kürzesten Pfade eines Knotens zu allen anderen Knoten des gerichteten und gewichteten Graphens Von Moore im Jahr 1959 entwickelt benötigt ein Distanzarray und eine Queue für abzuarbeitende Knoten Pfade vom Ausgangsknoten haben zu Beginn das Gewicht ∞, außer zu sich selbst Queue enthält initial lediglich den Ausgangsknoten Moores Algorithmus 3 B D Beispielgraph 4 A 1 2 1 C E

Sequentieller Algorithmus von Moore (1/2) Ausgangssituation Distanzarray A B ∞ C D E Queue A Löschen des ersten Knoten in der Queue Überprüfung, ob bisherige Distanzen zu den Nachbarknoten des gelöschten Knoten aktualisiert werden müssen: Distanz zum gelöschten Knoten + Distanz zwischen den beiden Knoten < Bisherige Distanz des Nachbarknotens Einfügen der erreichbaren Knoten an das Ende der Queue, falls sie noch nicht in der Queue stehen und sich ihr Wert im Distanzarray verringert hat Vorgehensweise In den Iterationen Distanzarray A B 4 C 1 D ∞ E Queue B C 1. Iteration 3 B D 4 A 2 1 1 C E

Sequentieller Algorithmus von Moore (2/2) Distanzarray A B 4 C 1 D 7 E ∞ Queue C D 3 2. Iteration B D 4 A 1 2 1 C E Distanzarray A B 3 C 1 D 7 E ∞ Queue D B 3 3. Iteration B D 4 A 1 2 1 C E . . . Distanzarray A B 3 C 1 D 6 E 7 Queue E Letzte Iteration Keine abgehenden Kanten Algorithmus terminiert

Parallelisierung des Algorithmus Möglichkeiten 1. Parallele Untersuchung der abgehenden Kanten des gelöschten Knotens - Eingeschränkt parallel wg. begrenzten Anzahl der abgehenden Kanten 2. Parallele Bearbeitung der in der Queue befindlichen Knoten + Entstehende Aufgaben für die einzelnen Prozessoren größer als bei 1.  Gleichzeitige Initialisierung der Knoten mit der Distanz ∞ durch Vorverteilung Beginn der parallelen Bearbeitung der in der Queue befindlichen Knoten, bis die Queue leer ist Naive Vor- gehensweise (1) Problem des (vorzeitigen) Stoppens von Prozessoren, da Queue (momentan) leer (2) Konflikte bei der gleichzeitigen Aktualisierung des Distanzarrays (3) Konflikte beim Einfügen und Entnehmen aus der Queue durch die Prozessoren Auftretende Probleme

Lösung: Datenstruktur Linked Array Lösungsmöglichkeiten für die Probleme zu (1) Einführung der Variablen halt (global) und waiting(i) (für jeden Prozessor) Falls Prozessor i keinen zu bearbeitenden Knoten in der Queue findet, wird waiting(i) auf true gesetzt Falls Prozessor 1 keinen zu bearbeitenden Knoten in der Queue findet und alle Variablen waiting(i) auf true stehen, wird halt auf true gestellt und alle Prozesse können terminieren zu (2) Einführung eines Sperrmechanismus für die Variable distance(v), um einem Pro- zessor alleinigen Zugriff und somit die Aktualisierung der Variable zu ermöglichen zu (3) - Einführung eines Sperrmechanismus für die Queue, so dass nur ein Prozessor exklusiven Zugriff besitzt ABER: Beeinträchtigung der Geschwindigkeitsbeschleunigung durch gegenseitiges Blockieren der Prozessoren beim Einfügen und Entnehmen Lösung: Datenstruktur Linked Array

Linked Array (1/3) Ansatz Entnehmen und Einfügen werden separat mit jeweils einem Array abgebildet Rollen zwischen den benötigten Arrays wechseln in jeder Iteration Array zum Einfügen in die Queue - Je Iteration besitzt jeder der p Prozessoren einen Bereich (in einem Array), in den er zu untersuchende Knoten einstellen kann: X11 . . . X21 X31 X41 Bereich für P1 Bereich für P2 Bereich für P3 Bereich für P4 . . . Am Ende der Iteration wird der Bereich mit p Verweisen auf den nächsten Bereich aufgefüllt: X11 X12 X13 . . . X1N V1 V2 V3 X21 X22 X23

Linked Array (2/3) Array zur Entnahme aus der Queue In der nächsten Iteration kommt es nun zum Rollentausch Jeder Prozessor entnimmt nun aus diesem Array den p-ten Knoten und bearbeitet ihn Mit Hilfe der Verweise arbeiten sich die Prozessoren durch das Array, bis Ver- weis außerhalb des Arrays gefunden wird Prozessor hat Arbeit in der entsprechenden Iteration beendet und kann stoppen Beispiel mit 4 Prozessoren: P1 P2 P3 . . . P4 X11 X12 X13 . . . X1N V1 V2 V3 V4 X21 X22 X23

Linked Array (3/3) Vorteile Keine Konflikte beim Entnehmen und Einfügen in die Queue unter den Prozessoren Bessere Beschleunigung durch die Parallelisierung Gleichmäßige Lastverteilung zwischen den Prozessoren Nachteile Falls es keinen separaten Prozessor zum Einfügen in die Queue gibt: Knoten können im Array zur Entnahme aus der Queue doppelt enthalten sein Weiterhin Sperrmechanismus für die Variable distance(v) nötig Problem der Größe der Einfügebereiche für die Prozessoren Benötigtes Array muss erheblich größer dimensioniert werden Maximal: p x (n + p)

Zusammenfassung Motivation Verbundene Komponenten Minimal spannende Bäume Kruskals Algorithmus Sollins Algorithmus Kürzeste Pfade von einem Ausgangsknoten ausgehend Zusammenfassung

Kürzeste Pfade von einem Zusammenfassung Motivation Graphen bilden mathematisch Probleme der Realität ab - Parallelisierung sinnvoll, um Problemlösung zu ermöglichen oder zu beschleunigen Verbundene Komponenten - Finden der Knoten, die zu jeweils einer Komponente gehören - Viele Algorithmen für Parallelrechnermodelle basieren auf Hirschbergs Algorithmus Minimal spannende Bäume - Finden einer Menge von Kanten, die alle Knoten eines gewichteten und unge- richteten Graphens mit minimaler Summe der Kantengewichte verbindet - Vorgestellte Algorithmen: Kruskal und Sollin, da parallelisierbar - Parallelisierung durch einen Heap bzw. parallele Schleifendurchläufe Kürzeste Pfade von einem Ausgangsknoten - Bestimmung der kürzesten Pfade eines Knotens zu allen anderen Knoten des gerichteten und gewichteten Graphens - Parallelisierung des Algorithmus birgt einige Probleme in sich - Größere Beschleunigungsmöglichkeiten durch Datenstruktur Linked Array