Algorithmus von Borůvka
Der Algorithmus von Borůvka gilt als erster Algorithmus zum Auffinden minimaler Spannbäume in ungerichteten Graphen. Er wurde 1926 von dem tschechischen Mathematiker Otakar Borůvka beschrieben. Die beiden bekannteren Algorithmen zur Lösung dieses Problems sind der Algorithmus von Prim und der Algorithmus von Kruskal. In der Erstveröffentlichung dieser beiden Algorithmen wird Borůvka jeweils erwähnt.
Grundprinzip und Komplexität
Der Algorithmus von Borůvka nutzt die Schnitteigenschaft minimaler Spannbäume. In jeder Runde wird die leichteste ausgehende Kante jedes Knoten ausgewählt und der Graph entlang dieser Kanten kontrahiert. Die beiden zu einer kontrahierten Kante inzidenten Knoten verschmelzen dabei zu einem Knoten. Der minimale Spannbaum besteht aus genau den kontrahierten Kanten. Bei geschickter Implementierung benötigt jede Runde Zeit in . Da die Anzahl der verbleibenden Komponenten in jeder Runde mindestens halbiert wird, ergibt sich eine sequentielle Laufzeit in .
solange für alle leichteste Kante für alle kontrahiere return
Parallele Implementierung
Im Folgenden sei die Anzahl der Prozessoren. Der Algorithmus nutzt die Repräsentation des Graphen durch ein Adjazenzarray. Dabei sei die Menge der Nachbarn von und entsprechend deren Anzahl. Mit wird das Gewicht der Kante von nach bezeichnet. Jede ungerichtete Kante wird durch zwei gegenteilig gerichtete Kanten dargestellt.
Für jeden Knoten sucht eine Teilmenge der Prozessoren parallel nach der leichtesten ausgehenden Kante.
für alle parallel ordne Prozessoren Knoten zu wähle mit minimalem Gewicht in gib originale Kante als Teil des Spannbaums aus (Kante vor allen Kontraktionen) setze
Die Zuordnung der Prozessoren kann dabei mithilfe einer parallelen Präfixsumme geschehen, sodass in konstanter Zeit berechnet werden kann. Das lässt sich dann durch eine Minimumsreduktion zwischen den beteiligten Prozessoren bestimmen. Diese kann in Zeit durchgeführt werden.
Betrachte nun den gerichteten Graphen . Der Graph hat Ausgangsgrad . In jeder Komponente dieses Graphen gibt es also Kanten und damit handelt es sich um einen Baum mit genau einer zusätzlichen Kante. Außerdem gibt es genau einen -Kreis entlang der ursprünglich leichtesten Kante und alle weiteren Kanten in sind zu oder hin gerichtet. Wir bezeichnen diese Struktur als Pseudobaum. In Zeit lassen sich alle Pseudobäume in gewurzelte Bäume umwandeln, also Bäume mit einer eindeutigen Wurzel auf die alle Kanten hinzulaufen. Dabei wird ein Vergleich der Knoten-Nummern () zur Brechung der Symmetrie der parallelen Kanten genutzt.
für alle parallel falls und
In einem weiteren Schritt mit Laufzeit können diese gewurzelten Bäume dann in gewurzelte Sterne umgewandelt werden. Dies sind spezielle Bäume der Höhe , das heißt alle Kanten zeigen direkt auf die eindeutige Wurzel.
solange für alle parallel
Die gewurzelten Sterne können nun kontrahiert werden, indem deren Wurzeln die neue Knotenmenge bilden. Dies benötigt Zeit in .
Anzahl der Komponenten (Sterne) wähle eine bijektive Abbildung
Man erhält einen Graphen . Die Knoten von sind dabei genau die Sternwurzeln, die von der bijektiven Abbildung in umbenannt wurden. Dabei enthält eventuell parallele Kanten, von denen nur noch jeweils die leichteste benötigt wird. Der Graph muss jetzt für den Rekursionsschritt noch in Adjazenzarrayrepräsentation gebracht werden. Dies kann in erwarteter Zeit erfolgen[1].
Zusammengefasst ergibt sich eine erwartete Gesamtlaufzeit von pro Runde und damit von insgesamt .
Literatur
- Borůvka, Otakar (1926). "O jistém problému minimálním (About a certain minimal problem)". Práce mor. přírodověd. spol. v Brně III (in Czech, German summary) 3: 37–58.
- Borůvka, Otakar (1926). "Příspěvek k řešení otázky ekonomické stavby elektrovodních sítí (Contribution to the solution of a problem of economical construction of electrical networks)". Elektronický Obzor (in Czech) 15: 153–154.
- Nešetřil, Jaroslav; Milková, Eva; Nešetřilová, Helena (2001). "Otakar Borůvka on minimum spanning tree problem: translation of both the 1926 papers, comments, history". Discrete Mathematics 233 (1–3): 3–36. doi:10.1016/S0012-365X(00)00224-7.
- Choquet, Gustave (1938). "Étude de certains réseaux de routes". Comptes-rendus de l’Académie des Sciences (in French) 206: 310–313.
- Florek, Kazimierz (1951). "Sur la liaison et la division des points d'un ensemble fini". Colloquium Mathematicum 2 (1951) (in French): 282–285.
- Sollin, M. (1965). "Le tracé de canalisation". Programming, Games, and Transportation Networks (in French).
- Eppstein, David (1999). "Spanning trees and spanners". In Sack, J.-R.; Urrutia, J. Handbook of Computational Geometry. Elsevier. pp. 425–461.
- Mareš, Martin (2004). "Two linear time algorithms for MST on minor closed graph classes". Archivum mathematicum 40 (3): 315–320.
Einzelnachweise
- Rajasekaran, J Reif: Optimal and Sublogarithmic Time Randomized Parallel Sorting Algorithms. In: SIAM Journal on Computing. 18, 1989, S. 594–607.