Borůvka algoritması bir grafik için ağaç kapsayan en az hesaplanması için standart algoritmaları biridir ile .| V | = n , | E | = m
Sözde kod:
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
Dış döngünün her yinelemesine bir tur diyoruz. Her turda, iç halka bileşen sayısını en az yarıya indirir. Bu nedenle en fazla turu vardır. Her turda, iç halka her bir kenara en fazla iki kez (her bileşenden bir kez) bakar. Bu nedenle çalışma süresi en fazla .O ( m log n )
Şimdi her turdan sonra, sadece aynı bileşen içindeki köşeleri birbirine bağlayan tüm kenarları kaldırdığımızı ve bileşenler arasındaki çift kenarları da kaldırdığımızı varsayalım, böylece iç döngü sadece minimum ağırlık kenarları olan m '<m kenarlarına bakar. daha önce bağlantısı kesilmiş iki bileşeni bağlayın.
Bu optimizasyon çalışma süresini nasıl etkiler?
Bir şekilde her turda kenar sayısını yarıya indireceğini bilseydik, çalışma süresi önemli ölçüde artar: .
Bununla birlikte, optimizasyon incelenen kenar sayısını önemli ölçüde azaltırken (son turda sadece 1 kenar ve en fazla bileşen genel olarak 2'yi seçer), bu gerçeği analizi sıkılaştırmak için nasıl / kullanıp kullanamayacağımız açık değildir. çalışma zamanı.