Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...
Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...
Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
⎛<br />
B =<br />
⎜<br />
⎝<br />
0 0 0 1 0 0 0 0<br />
0 0 1 1 0 0 1 0<br />
0 1 0 0 1 1 0 0<br />
1 1 0 0 0 0 0 1<br />
0 0 1 0 0 0 0 0<br />
0 0 1 0 0 0 0 0<br />
0 1 0 0 0 0 0 0<br />
0 0 0 1 0 0 0 0<br />
⎞<br />
⎟<br />
⎠<br />
Abbildung 3.6.: Beispielgraph für <strong>de</strong>n Algorithmus von Hirschberg<br />
Im ersten Teilschritt wird von je<strong>de</strong>m Knoten ausgehend die Kante zum Nachbarn mit<br />
<strong>de</strong>r kleinsten Nummer gesucht, <strong>de</strong>r noch nicht in <strong>de</strong>r gleichen Komponente enthalten ist.<br />
Dieser Nachbar wird in <strong>de</strong>n Vektor T gespeichert, welchen man wie<strong>de</strong>r als Grundlage<br />
für einen gerichteten Graphen verwen<strong>de</strong>n kann (<strong>de</strong>r Wert j an <strong>de</strong>r Stelle i impliziert eine<br />
gerichtete Verbindung von i nach j). Interpretiert man <strong>de</strong>n Vektor T in dieser Weise, so<br />
entsteht am En<strong>de</strong> <strong>de</strong>s ersten Schritts <strong>de</strong>r Graph aus Abbildung 3.7.<br />
Im ersten Durchlauf än<strong>de</strong>rt <strong>de</strong>r zweite Teilschritt nichts am Vektor T, da bislang 8<br />
Komponenten existieren, in <strong>de</strong>nen jeweils nur ein Knoten, <strong>de</strong>r Repräsentant, enthalten<br />
ist. Ein Minimum über alle Elemente <strong>de</strong>r Komponente wird also nichts än<strong>de</strong>rn und<br />
Abbildung 3.7 repräsentiert somit auch das Ergebnis <strong>de</strong>s zweiten Teilschritts <strong>de</strong>s ersten<br />
Durchlaufs.<br />
Im dritten Teilschritt wird nunmehr eine Kopie angelegt, welche für <strong>de</strong>n fünften und<br />
letzten Teilschritt benötigt wird.<br />
Im vierten Teilschritt wird nun log(n) mal die Doubling-Technik angewen<strong>de</strong>t. Dabei setzt<br />
je<strong>de</strong>r Knoten seinen Nachfolger auf <strong>de</strong>n Nachfolger seines ursprünglichen Nachfolgers.<br />
Diese Aktion wird im Algorithmus log(n)-wie<strong>de</strong>rholt, bis schließlich als Ergebnis <strong>de</strong>r<br />
Graph aus Abbildung 3.8 entsteht. Der Vektor T wird dafür wie<strong>de</strong>r wie vorne beschrieben<br />
interpretiert.<br />
Auffällig am Ergebnis nach <strong>de</strong>m vierten Schritt ist, dass nun vier und nicht mehr, wie<br />
nach <strong>de</strong>m zweiten Schritt, zwei Komponenten vorhan<strong>de</strong>n sind. Solches Auseinan<strong>de</strong>rreißen<br />
von Komponenten ist allerdings unerwünscht, weshalb <strong>de</strong>r fünfte Schritt wie<strong>de</strong>r<br />
38