Genauere Analyse des modifizierten Borůvka-Algorithmus


11

Der Borůvka-Algorithmus ist einer der Standardalgorithmen zur Berechnung des minimalen Spannbaums für einen Graphen mit | V | = n , | E | = m .G=(V,E)|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 .O(logn)O(mlogn)

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: T(m)=T(m/2)+O(m)=O(m) .

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.


Im schlimmsten Fall (einer Kette) würden Sie genau eine Kante pro Runde entfernen, sodass Sie diese Tatsache nicht verwenden können, um die Grenzen für ein allgemeines Diagramm zu verbessern. Sie können jedoch zB nur vollständige Diagramme berücksichtigen.
Xodarap

G

Beachten Sie, dass Sie eine der hochoptimierten Union-Find-Strukturen verwenden können , um diesen Algorithmus zu verbessern.
Raphael

Antworten:


5

|E.|3|V.|- -6|E.|=Ö(|V.|)

Referenz:

  • Masterarbeit, Claude Anderson (auf Seite 100 wird die Worst-Case-Eingabe für Borůvkas Algorithmus beschrieben). [Verknüpfung]

  • "Zwei lineare Zeitalgorithmen für MST für kleinere geschlossene Graphklassen". Archivum mathematicum 40 (3): 315–320, 2004. [Link]

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.