Algorytm Borůvki jest jednym ze standardowych algorytmów do obliczania minimalnego drzewa opinającego dla wykresu , z .
Pseudo-kod to:
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
Każdą iterację pętli zewnętrznej nazywamy rundą. W każdej rundzie wewnętrzna pętla zmniejsza liczbę elementów o co najmniej połowę. Dlatego jest co najwyżej rund . W każdej rundzie wewnętrzna pętla patrzy na każdą krawędź maksymalnie dwa razy (raz z każdego elementu). Dlatego czas działania wynosi co najwyżej .
Załóżmy teraz, że po każdej rundzie usuwamy wszystkie krawędzie, które łączą tylko wierzchołki w tym samym komponencie, a także usuwamy zduplikowane krawędzie między komponentami, tak aby wewnętrzna pętla patrzyła tylko na pewną liczbę krawędzi m '<m, które są krawędziami o minimalnej masie, które połącz dwa wcześniej odłączone komponenty.
Jak ta optymalizacja wpływa na czas działania?
Gdybyśmy w jakiś sposób wiedzieli, że w każdej rundzie zmniejszyłoby liczbę krawędzi o połowę, wówczas czas pracy zostałby znacznie skrócony: .
Jednak podczas gdy optymalizacja radykalnie zmniejszy liczbę badanych krawędzi (tylko 1 krawędź do ostatniej rundy i co najwyżej # komponentów wybiera 2 ogólnie), nie jest jasne, w jaki sposób / jeśli możemy wykorzystać ten fakt do zaostrzenia analizy czasu wykonywania.