Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1.Motivation 2.Verbundene Komponenten 3.Minimal spannende Bäume 1.Kruskals Algorithmus 2.Sollins Algorithmus 4.Kürzeste Pfade von einem Ausgangsknoten.

Ähnliche Präsentationen


Präsentation zum Thema: "1.Motivation 2.Verbundene Komponenten 3.Minimal spannende Bäume 1.Kruskals Algorithmus 2.Sollins Algorithmus 4.Kürzeste Pfade von einem Ausgangsknoten."—  Präsentation transkript:

1 1.Motivation 2.Verbundene Komponenten 3.Minimal spannende Bäume 1.Kruskals Algorithmus 2.Sollins Algorithmus 4.Kürzeste Pfade von einem Ausgangsknoten ausgehend 5.Zusammenfassung

2 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 BH E AC F G ID

3 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 3 11 BH E AC F G ID Kantenwahl nicht deterministisch - Abhängig von der Laufzeit und Datenstruktur

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

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

6 Parallelisierung des Algorithmus von Sollin (2/2) - in paralleler Version: Vorverteilung - Aber: Sperren der Teilbäume nötig, um exklusiven Zugriff auf Teilbäume für Prozessoren zu erhalten 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

7 - 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 (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 - langsam wachsende Zeitkomplexität Θ können vereinfachend als Konstanten angenommen werden Union- und Find- Operationen For-Schleifen in den Iterationen

8 - 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 Laufzeit des parallelen Algorithmus auf dem UMA-Multiprozessormodell (2/2) Letzte For-Schleife in den Iterationen Θ X Θ = Θ Gute Beschleunigung bei p < < n Resultierende Zeitkomplexität

9 1.Motivation 2.Verbundene Komponenten 3.Minimal spannende Bäume 1.Kruskals Algorithmus 2.Sollins Algorithmus 4.Kürzeste Pfade von einem Ausgangsknoten ausgehend 5.Zusammenfassung

10 - 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 Kürzeste Pfade von einem Ausgangsknoten ausgehend Beispielgraph Moores Algorithmus BD A CE Problemstellung Bestimmen der kürzesten Pfade eines Knotens zu allen anderen Knoten des gerichteten und gewichteten Graphens

11 Sequentieller Algorithmus von Moore (1/2) Ausgangssituation Distanzarray A0 B∞ C∞ D∞ E∞ Queue A Vorgehensweise In den Iterationen - 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 1. Iteration BD A CE Distanzarray A0 B4 C1 D∞ E∞ Queue B C

12 Sequentieller Algorithmus von Moore (2/2) 2. Iteration 3. Iteration BD A CE Distanzarray A0 B4 C1 D7 E∞ Queue C D BD A CE Distanzarray A0 B3 C1 D7 E∞ Queue D B Letzte Iteration Distanzarray A0 B3 C1 D6 E7... Queue E Keine abgehenden Kanten Algorithmus terminiert

13 Parallelisierung des Algorithmus Möglichkeiten Auftretende Probleme 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. (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 Naive Vor- gehensweise - Gleichzeitige Initialisierung der Knoten mit der Distanz ∞ durch Vorverteilung - Beginn der parallelen Bearbeitung der in der Queue befindlichen Knoten, bis die Queue leer ist 

14 Lösungsmöglichkeiten für die Probleme zu (1) zu (3) - Einführung eines Sperrmechanismus für die Queue, so dass nur ein Prozessor exklusiven Zugriff besitzt zu (2) - 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 - 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 ABER: Beeinträchtigung der Geschwindigkeitsbeschleunigung durch gegenseitiges Blockieren der Prozessoren beim Einfügen und Entnehmen Lösung: Datenstruktur Linked Array

15 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 Bereich für P 1 Bereich für P 2 Bereich für P 3 Bereich für P Am Ende der Iteration wird der Bereich mit p Verweisen auf den nächsten Bereich aufgefüllt: X X X X X 11 X 12 X 13...X 1N V1V1 V2V2 V3V3... X 21 X 22 X Je Iteration besitzt jeder der p Prozessoren einen Bereich (in einem Array), in den er zu untersuchende Knoten einstellen kann: Array zum Einfügen in die Queue

16 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: X 11 X 12 X 13...X 1N V1V1 V2V2 V3V3 V4V4 X 21 X 22 X P1P1 P2P2 P3P3 P1P1 P2P2 P3P3 P4P4 P1P1

17 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)

18 1.Motivation 2.Verbundene Komponenten 3.Minimal spannende Bäume 1.Kruskals Algorithmus 2.Sollins Algorithmus 4.Kürzeste Pfade von einem Ausgangsknoten ausgehend 5.Zusammenfassung

19 Zusammenfassung - Graphen bilden mathematisch Probleme der Realität ab - Parallelisierung sinnvoll, um Problemlösung zu ermöglichen oder zu beschleunigen - Finden der Knoten, die zu jeweils einer Komponente gehören - Viele Algorithmen für Parallelrechnermodelle basieren auf Hirschbergs Algorithmus - 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 Minimal spannende Bäume Verbundene Komponenten Motivation


Herunterladen ppt "1.Motivation 2.Verbundene Komponenten 3.Minimal spannende Bäume 1.Kruskals Algorithmus 2.Sollins Algorithmus 4.Kürzeste Pfade von einem Ausgangsknoten."

Ähnliche Präsentationen


Google-Anzeigen