O algoritmo de Borůvka é um dos algoritmos padrão para calcular a árvore de abrangência mínima para um gráfico , com | V | = n , | E | = m .
O pseudocódigo é:
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
Chamamos cada iteração do loop externo de uma rodada. Em cada rodada, o loop interno reduz o número de componentes pelo menos pela metade. Portanto, existem no máximo rodadas . Em cada rodada, o loop interno analisa cada aresta no máximo duas vezes (uma vez de cada componente). Portanto, o tempo de execução é no máximo O ( m log n ) .
Agora, suponha que, após cada rodada, removamos todas as arestas que conectam apenas vértices no mesmo componente e também removemos arestas duplicadas entre os componentes, de modo que o loop interno observe apenas algum número de arestas m '<m, que são as arestas de peso mínimo que conecte dois componentes desconectados anteriormente.
Como essa otimização afeta o tempo de execução?
No entanto, embora a otimização reduza drasticamente o número de arestas examinadas (apenas uma aresta na rodada final e, no máximo, o número de componentes escolhe 2 em geral), não está claro como / se podemos usar esse fato para restringir a análise. do tempo de execução.