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.
3.1.3. Der Algorithmus von Hirschberg et al.<br />
Auf einem Multiprozessor-System kann man entwe<strong>de</strong>r <strong>de</strong>n modifizierten Warshall verwen<strong>de</strong>n,<br />
um zusammenhängen<strong>de</strong> Komponenten zu erkennen, o<strong>de</strong>r man nutzt <strong>de</strong>n Algorithmus<br />
von Hirschberg et al., welcher bereits so mo<strong>de</strong>lliert wur<strong>de</strong>, dass er die Möglichkeiten<br />
eines Multiprozessor-Systems ausnutzt.<br />
Der Algorithmus von Hirschberg et al. ist ursprünglich in [GR98] als ein Algorithmus auf<br />
<strong>de</strong>r P-RAM vorgestellt wor<strong>de</strong>n. Bei diesem Algorithmus wird versucht, unter Ausnutzung<br />
<strong>de</strong>r nebenläufigen 4 Fähigkeiten eines Mo<strong>de</strong>lls wie <strong>de</strong>r P-RAM, die zusammenhängen<strong>de</strong>n<br />
Komponenten eines Graphen zu bestimmen. Auch hier wird <strong>de</strong>r Algorithmus zunächst<br />
schematisch im Original vorgestellt und dann wird dargestellt, wie dieser Algorithmus<br />
auf <strong>de</strong>m GCA mo<strong>de</strong>lliert wer<strong>de</strong>n kann.<br />
3.1.3.1. Ablauf auf <strong>de</strong>r P-RAM<br />
Der Algorithmus von Hirschberg et al. durchläuft insgesamt O(log(n))-mal eine Schleife.<br />
Nach je<strong>de</strong>m Schleifendurchlauf hat er eine Menge von zusammenhängen<strong>de</strong>n Komponenten.<br />
Diese Komponenten wer<strong>de</strong>n in <strong>de</strong>m n-dimensionalen Vektor C gespeichert, wobei<br />
an <strong>de</strong>r Stelle i genau dann <strong>de</strong>r Wert j steht, wenn <strong>de</strong>r Knoten i zu <strong>de</strong>r Komponente<br />
j gehört. Innerhalb einer Komponente gilt immer, dass die kleinste Nummer aller zugehörigen<br />
Knoten die Nummer <strong>de</strong>r Komponente bestimmt. So wird die Ein<strong>de</strong>utigkeit<br />
<strong>de</strong>r Benennung gewährleistet. Der Algorithmus bestimmt diese Komponenten in zwei<br />
Phasen nun folgen<strong>de</strong>rmaßen:<br />
• Die erste Phase bestimmt eine Verbindung von je<strong>de</strong>r Komponente zu <strong>de</strong>r erreichbaren<br />
Komponente mit <strong>de</strong>r niedrigsten Nummer, die in <strong>de</strong>m n-dimensionalen Vektor<br />
T gespeichert wird.<br />
Zu diesem Zweck muss erst von je<strong>de</strong>m <strong>de</strong>r Komponente angehörigen Knoten die<br />
Verbindung zu <strong>de</strong>m kleinsten Knoten, <strong>de</strong>r nicht <strong>de</strong>r Komponente angehört, gesucht<br />
wer<strong>de</strong>n. Der Wert von <strong>de</strong>ssen Komponente muss anschließend gespeichert wer<strong>de</strong>n.<br />
Danach wird von all diesen Verbindungen diejenige ausgesucht, die zu <strong>de</strong>r niedrigsten<br />
Komponente ungleich <strong>de</strong>r eigenen führt. Diese Verbindung wird gleichzeitig<br />
<strong>de</strong>m Repräsentanten <strong>de</strong>r eigenen Komponente zugeordnet.<br />
Diese Phase setzt sich aus zwei Teilschritten zusammen.<br />
• Die zweite Phase sorgt dafür, dass alle Komponenten, die eine Verbindung zueinan<strong>de</strong>r<br />
haben, zusammengelegt wer<strong>de</strong>n und alle in ihnen enthaltenen Knoten auf<br />
<strong>de</strong>n Knoten mit <strong>de</strong>r niedrigsten Nummer verweisen.<br />
4 Man spricht davon, dass zwei Befehle parallel abarbeitbar sind, wenn man die Befehle zeitgleich<br />
ausführen kann. Nebenläufig be<strong>de</strong>utet hingegen, dass es egal ist, in welcher Reihenfolge die Befehle<br />
ausgeführt wer<strong>de</strong>n. Die Befehle können also parallel abgearbeitet wer<strong>de</strong>n o<strong>de</strong>r aber in je<strong>de</strong>r<br />
Kombination sequentiell hintereina<strong>de</strong>r ohne dass es zu Konflikten kommt.<br />
36