El algoritmo de Borůvka es uno de los algoritmos estándar para calcular el árbol de expansión mínimo para un gráfico , con .
El pseudocódigo es:
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
Llamamos a cada iteración del bucle externo una ronda. En cada ronda, el bucle interno corta el número de componentes al menos a la mitad. Por lo tanto, hay a lo sumo rondas . En cada ronda, el bucle interno mira cada borde como máximo dos veces (una vez de cada componente). Por lo tanto, el tiempo de ejecución es como máximo .
Ahora supongamos que después de cada ronda, eliminamos todos los bordes que solo conectan vértices dentro del mismo componente y también eliminamos los bordes duplicados entre componentes, de modo que el bucle interno solo mire algunos bordes m '<m, que son los bordes de peso mínimo que conecte dos componentes previamente desconectados.
¿Cómo afecta esta optimización al tiempo de ejecución?
Si de alguna manera supiéramos que en cada ronda, reduciría el número de aristas a la mitad, entonces el tiempo de ejecución mejoraría significativamente: .
Sin embargo, si bien la optimización reducirá drásticamente el número de bordes examinados (solo 1 borde en la ronda final, y como máximo # de componentes elige 2 en general), no está claro cómo / si podemos usar este hecho para ajustar el análisis del tiempo de ejecución.