Der Borůvka-Algorithmus ist einer der Standardalgorithmen zur Berechnung des minimalen Spannbaums für einen Graphen mit | V | = n , | E | = m .
Der Pseudocode lautet:
MST T = empty tree
Begin with each vertex as a component
While number of components > 1
For each component c
let e = minimum edge out of component c
if e is not in T
add e to T //merging the two components connected by e
Wir nennen jede Iteration der äußeren Schleife eine Runde. In jeder Runde halbiert die innere Schleife die Anzahl der Komponenten mindestens. Daher gibt es höchstens Runden. In jeder Runde betrachtet die innere Schleife jede Kante höchstens zweimal (einmal von jeder Komponente). Daher beträgt die Laufzeit höchstens .
Nehmen wir nun an, wir entfernen nach jeder Runde alle Kanten, die nur Eckpunkte innerhalb derselben Komponente verbinden, und entfernen auch doppelte Kanten zwischen Komponenten, so dass die innere Schleife nur eine bestimmte Anzahl von Kanten m '<m betrachtet, die die Kanten mit dem Mindestgewicht sind Verbinden Sie zwei zuvor getrennte Komponenten.
Wie wirkt sich diese Optimierung auf die Laufzeit aus?
Wenn wir irgendwie wüssten, dass in jeder Runde die Anzahl der Kanten halbiert würde, würde sich die Laufzeit erheblich verbessern: .
Während die Optimierung die Anzahl der untersuchten Kanten drastisch reduziert (nur 1 Kante in der letzten Runde und höchstens 2 Komponenten im Allgemeinen 2), ist nicht klar, wie / ob wir diese Tatsache nutzen können, um die Analyse zu straffen der Laufzeit.