Алгоритм Борівки - один із стандартних алгоритмів для обчислення мінімального діапазону дерева для графа , при .
Псевдокод:
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
Кожну ітерацію зовнішньої петлі ми називаємо круглою. У кожному раунді внутрішня петля розрізає кількість компонентів хоча б навпіл. Тому існує максимум раундів. У кожному раунді внутрішня петля дивиться на кожен край максимум двічі (один раз з кожного компонента). Тому час роботи не більше .
Тепер припустимо, що після кожного раунду ми видаляємо всі ребра, які з'єднують лише вершини в межах одного компонента, а також видаляємо дублікати країв між компонентами, щоб внутрішня петля дивилася лише на деяку кількість ребер m '<m, які є ребрами мінімальної ваги, які підключіть два раніше відключені компоненти.
Як ця оптимізація впливає на час роботи?
Якби ми якось знали, що в кожному раунді воно скоротить кількість ребер навпіл, то час роботи значно покращиться: .
Однак, хоча оптимізація різко зменшить кількість обстежених ребер (лише один край на останньому раунді, і не більше # компонентів вибирають 2 загалом), не ясно, як / якщо ми можемо використовувати цей факт для посилення аналізу часу виконання.