L'algoritmo di Borůvka è uno degli algoritmi standard per il calcolo dell'albero di spanning minimo per un grafico , con .
Lo pseudo-codice è:
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
Chiamiamo ogni iterazione del ciclo esterno un giro. In ogni giro, l'anello interno taglia almeno il metà dei componenti. Pertanto ci sono al massimo round . In ogni giro, l'anello interno guarda ogni bordo al massimo due volte (una volta da ciascun componente). Pertanto il tempo di esecuzione è al massimo .O ( m log n )
Ora supponiamo che dopo ogni giro, rimuoviamo tutti i bordi che collegano solo i vertici all'interno dello stesso componente e rimuoviamo anche i bordi duplicati tra i componenti, in modo che il ciclo interno guardi solo un certo numero di bordi m '<m che sono i bordi di peso minimo che collegare due componenti precedentemente disconnessi.
In che modo questa ottimizzazione influisce sul tempo di esecuzione?
Se in qualche modo sapessimo che in ogni giro, si taglierebbe il numero di spigoli a metà, quindi il tempo di esecuzione sarebbe notevolmente migliorato: .
Tuttavia, sebbene l'ottimizzazione ridurrà drasticamente il numero di spigoli esaminati (solo 1 spigolo per il round finale e al massimo # di componenti scelgono 2 in generale), non è chiaro come / se possiamo usare questo fatto per stringere l'analisi del tempo di esecuzione.