Tarafından belirtildiği gibi Raphael'in yorumun ve j_random_hacker yorumuna cevap olumludur. Aslında, herhangi bir MST'ye bazı küçük istisnalar dışında herhangi bir MST algoritması tarafından erişilebilir .
grafiği için , her iki ağırlık işlevinin neden olduğu kenarlardaki katı zayıf sıralamayı aynı katıya genişletebilirsek, tüm kenarlardaki (gerçek sayılara) iki ağırlık işlevi (zayıf) karşılaştırmaya uyumlu (birbirine ) olarak tanımlanır. Genel sipariş toplamı. Yani, her ağırlık fonksiyonuyla tutarlı bağlantı koparma kuralları tasarlayabiliriz, böylece herhangi bir iki kenarın bir ağırlık fonksiyonu ile karşılaştırılması sonucu ve bağ kırma kuralları diğer ağırlık fonksiyonu ve bağının sonucu ile aynı olur. kurallar.G
Lemma 1 : ve w 2'nin iki ağırlık fonksiyonu olmasına izin verin . Aşağıdaki beş ifade birbirine denktir.w1w2
- ve w 2 karşılaştırma uyumludur.w1w2
- Kenarların herhangi bir set ise, kenar hafif tarafından bir ortak olduğu tarafından w 2 .w1w2
- Kenarların herhangi bir set ise, ortak bir ağır ayrıt tarafından w 2 .w1w2
- Ağırlık işlevi mevcuttur öyle ki farklı kenarlarına farklı ağırlıkları tayin w 3 karşılaştırma uyumlu olan ağırlık , 1 ve w 2 .w3w3w1w2
- e1e2e1e2e1e2
Lemma 1 kanıtı kolay bir egzersiz olarak bırakılmıştır.
w1w2e1<w1e2e1<w2e2
w2w1
G
GG
Karşılaştırma uyumlu bir MST algoritması tüm MST'leri bulabilir.
mGw1mw2e1e2w1e1e2w2w1w2mw2w2mw1w2mw2mw1
Her MST algoritması karşılaştırma uyumludur
Yukarıdaki teklif kulağa aşırı geliyor. Her MST algoritması ile, yanlış veya gereksiz adımları olan görünüşte patolojik olanlar hariç, gördüğüm herhangi bir genel karşılaştırma tabanlı MST algoritmasını kastediyorum. Karşılaştırma uyumlu bir MST algoritması tüm MST'leri bulabildiğinden, her MST algoritması tüm MST'leri bulabilir. Özellikle, dört klasik MST algoritmasının her biri , yani Borůvka, Prim, Kruskal ve ters silme algoritmaları tüm MST'leri bulabilir.
İşte karşılaştırma ile uyumlu üç MST algoritması daha.
- ağır kenar silme algoritması. Tüm kenarlarla başlayın. Bir döngüyü tekrar tekrar bulun ve hiçbir döngü kalmayana kadar en ağır kenarlarından birini çıkarın.
- add-heavy-edge-edge algoritması. Boş setle başlayın. Tüm kenarlardan tekrarlayın. Her kenar eklenir ve bir döngü oluşursa, en ağır kenarlarından birini çıkarın.
- TTeTtetTeTT
Aşağıdaki MST algoritması karşılaştırma uyumlu değildir.
- S{ab,bc,cd}a,b,cab1bc,cd,db2
Lütfen yukarıda belirtilen sekiz MST algoritmasının hepsinin karşılaştırma tabanlı olduğunu unutmayın.
Karşılaştırma uyumlu bir algoritma nasıl gösterilir?
G
- FGF
- S
- SF
- S
- S
- Bu kenar iki farklı ağacı birbirine ormanına ekleyinF
- F
w1w2GSw1w2
Bir algoritma, gevşek terimlerle üç tür adımda açıklanabiliyorsa karşılaştırmaya uyumludur.
- kilo içermeyen bir şey yapın.
- belirli bir kenar kümesinde minimum ağırlığı olan bir kenar seçin
- belirli bir kenar kümesinde maksimum ağırlığı olan bir kenar seçin
Bu yeterli koşul Borůvka, Prim, Kruskal, ters silme, silme-ağır kenar ve ağır-kenar eklememe algoritmasını kapsar. Bu yeterli koşula uymak için, ulaşılabilir MST setini etkilemeden bir algoritmanın belirli açıklamalarını değiştirmemiz gerekebileceğini unutmayın. Dereceye eğilimli Kruskal'ın algoritmasının karşılaştırma uyumlu olması dışında, bu yeterli koşulun gevşek terimlerle tanımlandığını vurgulayayım.