Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...
Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...
Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
stellen, welche Nachfolger <strong>de</strong>r Knoten i hat. Möchte man aber testen, ob eine Verbindung<br />
zwischen <strong>de</strong>m i-ten und <strong>de</strong>m j-ten Knoten existiert, so reicht eine Anfrage.<br />
Einer <strong>de</strong>r größten Nachteile dieser Repräsentation ist allerdings, dass man auf einem<br />
klassischen Einprozessor-System minimal O(n 2 ) Schritte benötigt, wenn ein Problem<br />
mit <strong>de</strong>r Matrizendarstellung arbeitet und einen Großteil <strong>de</strong>s Graphen betrachten muss.<br />
Im Laufe dieser Arbeit wird <strong>de</strong>utlich wer<strong>de</strong>n, dass es nicht möglich ist, diesen Aufwand zu<br />
minimieren. Allerdings ist es möglich, Teile <strong>de</strong>s Aufwands auf die Hardware zu verlagern<br />
und so einen Speed-Up zu erzielen.<br />
Diese Aussage wird am Beispiel <strong>de</strong>s Warshall-Algorithmus noch <strong>de</strong>utlicher wer<strong>de</strong>n, wobei<br />
klar sein sollte, dass ein Aufwand von O(n) be<strong>de</strong>utet, dass <strong>de</strong>r Algorithmus eine Laufzeit<br />
von O(n) hat, falls nicht explizit etwas an<strong>de</strong>res erwähnt wird.<br />
3.1. Erkennung von zusammenhängen<strong>de</strong>n Komponenten<br />
eines Graphen<br />
In vielen Aufgabenstellungen aus <strong>de</strong>r Praxis ist es wichtig, zu erkennen, ob Komponenten<br />
eines Graphen zusammenhängen. So möchte man z. B. effizient testen, ob alle Computer<br />
eines Netzwerks verbun<strong>de</strong>n sind.<br />
Auf einem Rechner mit einem Prozessor kann man hier u. a. <strong>de</strong>n Warshall-Algorithmus<br />
anwen<strong>de</strong>n, welcher die transitive Hülle berechnet und somit die Erreichbarkeitsmatrix<br />
liefert. Dabei steht eine 1 in Zeile A und Spalte B <strong>de</strong>r Matrix immer dafür, dass es einen<br />
Weg zwischen <strong>de</strong>m Punkt A und <strong>de</strong>m Punkt B gibt, eine 0 <strong>de</strong>mentsprechend dafür, dass<br />
kein Weg existiert. Der Algorithmus von Warshall benötigt auf einem Einprozessor-<br />
System eine Laufzeit von O(n 3 ). Im folgen<strong>de</strong>n Abschnitt wird schrittweise hergeleitet,<br />
wie man <strong>de</strong>n Warshall-Algorithmus auf <strong>de</strong>m GCA mo<strong>de</strong>llieren kann und wie es möglich<br />
ist, eine Laufzeit von O(n) zu erreichen.<br />
3.1.1. Der Warshall-Algorithmus<br />
Der Warshall-Algorithmus ist eine Spezialisierung <strong>de</strong>s Kleene-Algorithmus und je nach<br />
Litera<strong>tu</strong>r berechnet er die reflexive-transitive-Hülle 1 o<strong>de</strong>r nur die transitive Hülle 2 . Ein<br />
Vorteil <strong>de</strong>r Berechnung <strong>de</strong>r reinen transitiven Hülle ist, dass man sehr leicht mit <strong>de</strong>m<br />
Warshall-Algorithmus testen kann, ob ein Graph Zyklen enthält.<br />
Da es für die Erkennung von zusammenhängen<strong>de</strong>n Komponenten irrelevant ist, ob die<br />
Hülle reflexiv ist o<strong>de</strong>r nicht, wird im weiteren <strong>de</strong>r Warshall-Algorithmus verwen<strong>de</strong>t,<br />
1 Bei <strong>de</strong>r reflexiven Hülle existiert von je<strong>de</strong>m Knoten eine Verbindung zu sich selber. Auf <strong>de</strong>r Diagonalen<br />
stehen also nur Einsen. Die reflexive-transitive Hülle erfüllt die Bedingung <strong>de</strong>r reflexiven Hülle<br />
zusätzlich zu <strong>de</strong>n Bedingungen <strong>de</strong>r transitiven Hülle.<br />
2 Hier steht auf <strong>de</strong>r Diagonale nur dann eine 1, wenn es von <strong>de</strong>m Knoten aus möglich ist, wie<strong>de</strong>r zu<br />
<strong>de</strong>m Knoten zu kommen<br />
28