Thuật toán của Borůvka là một trong những thuật toán tiêu chuẩn để tính cây bao trùm tối thiểu cho đồ thị , với .
Mã giả là:
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
Chúng tôi gọi mỗi lần lặp của vòng lặp bên ngoài là một vòng. Trong mỗi vòng, vòng lặp bên trong sẽ cắt giảm số lượng thành phần ít nhất là một nửa. Do đó, có nhiều nhất là các vòng . Trong mỗi vòng, vòng lặp bên trong nhìn vào mỗi cạnh nhiều nhất hai lần (một lần từ mỗi thành phần). Do đó, thời gian chạy tối đa là .
Bây giờ, giả sử sau mỗi vòng, chúng ta loại bỏ tất cả các cạnh chỉ kết nối các đỉnh trong cùng một thành phần và cũng loại bỏ các cạnh trùng lặp giữa các thành phần, để vòng lặp bên trong chỉ nhìn vào một số cạnh m '<m là các cạnh có trọng số tối thiểu kết nối hai thành phần bị ngắt kết nối trước đó.
Làm thế nào để tối ưu hóa này ảnh hưởng đến thời gian chạy?
Nếu chúng ta bằng cách nào đó biết rằng trong mỗi vòng, nó sẽ cắt giảm một nửa số cạnh, thì thời gian chạy sẽ được cải thiện đáng kể: .
Tuy nhiên, trong khi tối ưu hóa sẽ giảm đáng kể số lượng cạnh được kiểm tra, (chỉ có 1 cạnh cho vòng cuối cùng và nhiều nhất là # các thành phần chọn 2 nói chung), không rõ bằng cách nào / nếu chúng ta có thể sử dụng thực tế này để thắt chặt phân tích của thời gian chạy.