Algorithmus von Borůvka

Handlungsvorschriften zur Lösung eines Problems in der Informatik

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.

Animation

Grundprinzip und Komplexität

Bearbeiten

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

Bearbeiten

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

Bearbeiten
  • 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

Bearbeiten
  1. S Rajasekaran, J Reif: Optimal and Sublogarithmic Time Randomized Parallel Sorting Algorithms. In: SIAM Journal on Computing. Band 18, 1989, S. 594–607, doi:10.1137/0218041.