You are on page 1of 13

Design and Analysis of Algorithms

Zahra ELMI

Zahra.elmi@izu.edu.tr
Grafik Teorik Problemler

Temel tanımlar
Grafik Gösterimi
Grafik Geçişi (BFS, DFS)
Topolojik sıralama
Güçlü Bağlantılı BileşenlerEn
Kısa Yollar
Tek Kaynaklı Tüm Hedefler (Bellman-Ford, Dijkestra)
Tüm Çiftler (Floyd-Warshall, Johnson)
Minimum Yayılan Ağaç (Kruskal, Prim)
Minimum Yayılan Ağaç

Tanım (Minimum Yayılan Ağaç)


w: E → R ağırlık fonksiyonuna sahip bağlı, yönsüz bir G = (V, E )
grafiğimiz olduğunu varsayalım ve tüm köşeleri birbirine bağlayan bir
çevrimsiz T ⊆ E alt kümesi bulmak istiyoruz ve toplam ağırlığı w(T) =
∑(u,v )∈T w(u,v) minimize edilmiş olsun.
Minimum Yayılan Ağaç
Açgözlü bir strateji, minimum yayılan ağacı her seferinde bir kenar büyüten
aşağıdaki genel algoritma tarafından yakalanır. Algoritma, aşağıdaki döngü
değişmezini koruyarak bir dizi A kenarını yönetir:

Her yinelemeden önce A, bazı minimum kapsayan ağaçların bir alt kümesidir.

Her adımda, A'ya eklenebilecek bir kenar (u, v ) belirleriz.Bu değişmezi


ihlal etmeden, A ∪ {(u, v)} aynı zamanda bir minimum yayılan ağacın bir alt
kümesidir. Böyle bir kenara A için güvenli kenar diyoruz, çünkü değişmezi
korurken A'ya güvenli bir şekilde eklenebilmektedir.
Minimum Yayılan Ağaç

Döngü değişmezini aşağıdaki gibi kullanırız:


Başlatma: 1. satırdan sonra, A kümesi, döngü değişmezini
önemsiz bir şekilde karşılar
Bakım: 2 - 4 satırlarındaki döngü, yalnızca güvenli kenarlar
ekleyerek değişmezi korur.
Sonlandırma: A'ya eklenen tüm kenarlar minimum yayılan
ağaçtadır ve bu nedenle 5. satırda döndürülen A kümesi
minimum yayılan ağaç olmalıdır.
Minimum Yayılan Ağaç
Tanım
Yönsüz bir grafiğin (S, V−S) bir kesimi (S, V−S), G = (V, E ) V'nin bir
bölümüdür. Bir (u, v ) ∈ E kenarının, uç noktalarından biri S'de ve
diğeri V−S'de ise kesimi (S, V−S) kestiğini söyleriz. A'da hiçbir kenar
kesimi geçmiyorsa, bir kesimin bir A kenar kümesine saygı
duyduğunu söylüyoruz. Bir kenar, ağırlığı kesimden geçen herhangi
bir kenarın minimumuysa, bir kesimi geçen hafif bir kenardır.

Güvenli bir noktayı nasıl bulabiliriz?


Minimum Yayılan Ağaç
Theorem
G = (V, E ), E üzerinde tanımlanan w gerçek değerli ağırlık fonksiyonuna sahip bağlantılı,
yönsüz bir grafik olsun. S) G'nin A'ya göre herhangi bir kesimi olsun ve (u, v ) hafif bir kenar
geçişi olsun (S, V− S). O halde (u, v ) kenarı A için güvenlidir.

Proof.
T, A'yı içeren bir minimum kapsayan ağaç olsun.
T'nin açık kenarı (u, v ) içermediğini varsayalım, çünkü içeriyorsa işimiz biter.
A ∪ {(u, v )} içeren başka bir minimum kapsayan T ′ ağacı oluşturacağız.
Kenar (u, v ) T'de u'dan v'ye giden p yolundaki kenarlarla bir döngü oluşturur.
Minimum Yayılan Ağaç

Proof.
u ve v kesimin (S, V − S) karşı taraflarında olduğundan, T'de p yolunda aynı zamanda
kesimi kesen en az bir kenar vardır. (x, y) böyle bir kenar olsun. Kenar (x, y) A'da değil,
çünkü kesim A'ya uyuyor.
(x, y ), T'de u'dan v'ye benzersiz yolda olduğundan, (x, y ) öğesinin kaldırılması T öğesini
iki bileşene ayırır. (u, v ) eklemek, onları yeni bir kapsayan ağaç oluşturmak için yeniden
bağlar T ′ = T − { ( x , y )} ∪{ ( u , v )} .
(u, v ) hafif bir kenar geçişi olduğundan (S, V − S) ve (x, y ) de bu kesimi keser,
w ( u ,v ) ≤ w ( x ,y ) . Öyleyse,

w ( T ′) = w ( T ) − w ( x , y ) + w ( u ,v ) ≤ w ( T ).

Ancak T bir minimum kapsayan ağaçtır, öyle ki w (T ) ≤ w (T'); bu nedenle, T' bir
minimum kapsayan ağaç olmalıdır.

Geriye (u, v )'nin A için güvenli bir kenar olduğunu göstermek kalıyor. A ⊆ T′ var, çünkü A
⊆ T ve (x, y ) ∉ A; böylece, A ∪ {(u, v )} ⊆ T ′. Sonuç olarak, T ′ bir minimum kapsayan
ağaç olduğundan, (u, v ) A için güvenlidir.
Minimum Yayılan Ağaç: Kruskals algorithm
Kruskal'ın algoritması, ormandaki herhangi iki ağacı birbirine
bağlayan tüm kenarların en az ağırlıklı bir kenarını (u, v ) bularak
büyüyen ormana eklenecek güvenli bir kenar bulur.

Ayrık kümeli bir veri yapısı kullanır:


Her küme, mevcut ormanın ağacındaki tepe noktalarını içerir.
FIND-SET(u) işlemi, u içeren kümeden temsili bir öğe döndürür. Böylece, u ve v
köşelerinin aynı ağaca ait olup olmadığını, FIND-SET(u)'nun FIND-SET(v )'ye eşit olup
olmadığını test ederek belirleyebiliriz.
Ağaçların birleştirilmesi UNION prosedürü ile gerçekleştirilir.
Minimum Yayılan Ağaç: Kruskals algorithm
Minimum Yayılan Ağaç: Prim’s algorithm

Prim'in algoritması, A kümesindeki kenarların her zaman tek bir ağaç


oluşturma özelliğine sahiptir.
Ağaç, rastgele bir kök tepe noktasından başlar ve ağaç V'deki tüm
tepe noktalarına yayılana kadar büyür.
Her adımda, A ağacına, A'yı yalıtılmış bir tepe noktasına bağlayan
hafif bir kenar eklenir.
Ağaçta olmayan tüm köşeler, bir anahtar alana dayalı olarak bir min-
öncelikli Q kuyruğunda bulunur. Her v köşesi için, [v] anahtarı, v'yi
ağaçtaki bir tepe noktasına bağlayan herhangi bir kenarın minimum
ağırlığıdır; konvansiyonel olarak, böyle bir kenar yoksa [v] = ∞
anahtarı dır.
π[v ] alanı, ağaçta v'nin ebeveynini adlandırır.
Minimum Yayılan Ağaç: Prim’s algorithm
Minimum Yayılan Ağaç: Prim’s algorithm

You might also like