Modifiye edilmiş Borůvka algoritmasının daha sıkı analizi


11

Borůvka algoritması bir grafik için ağaç kapsayan en az hesaplanması için standart algoritmaları biridir ile .| V | = n , | E | = mG=(V,E)|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 )O(logn)O(mlogn)

Ş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: .T(m)=T(m/2)+O(m)=O(m)

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ı.


En kötü durumda (bir zincir) her turda tam olarak bir kenarı kaldırırsınız, bu nedenle genel bir grafik için sınırları iyileştirmek için bu gerçeği kullanamazsınız. Yine de sadece tam grafikleri düşünebilirsiniz.
Xodarap

@Xodarap basit bir yoldursa (zincirle kastettiğiniz bu mu?), İlk turda kenarların en az yarısını seçersiniz. Bu kenarlar sonraki turlardan kaldırılır. G
Joe

Bu algoritmayı geliştirmek için yüksek düzeyde optimize edilmiş birleşik bulma yapılarından birini kullanabileceğinizi unutmayın .
Raphael

Yanıtlar:


5

Borůvka'nın adımının, köşe sayısını yarıya indirmesine rağmen, her adımdaki kenar sayısını yarıya indirmeyeceği genel grafikler için test senaryoları oluşturmak mümkündür. İlginç bir not, önerdiğiniz optimizasyonun düzlemsel grafikler için çalıştığıdır. Çünkü düzlemsel grafikler için i, e . Ve genel olarak, küçük kapalı grafik aileleri sınıfının hızlanmasına yol açar.| E | = O ( | V | )|E|3|V|6|E|=O(|V|)

Referans:

  • Yüksek lisans tezi, Claude Anderson (sayfa 100 Borůvka algoritması için en kötü durum girişi açıklanmıştır). [link]

  • Msgstr "Küçük kapalı grafik sınıflarında MST için iki doğrusal zaman algoritması". Archivum mathematicum 40 (3): 315–320, 2004. [bağlantı]

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.