Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
Çizge Algoritmalari 10. Ders
2
Ön küçük örten ağaçlar
3
Örten ağaç A B A B C C E D E D F F
G=(V, E) bağlantılı çizgesinin örten ağacı Bir ağaçtır V kümesinin tüm elemanları bu ağacın düğümleridir G örten ağaç Örten ağaçta |V| - 1 kiriş olur. A B A B C C E D E D F F
4
Örten Ağaçlar Bir çizgenin çok sayida örten ağaci olabilir. Çizge G
G çizgesinin bazı örten ağaçları
5
Tam Çizge 16 tane örten ağaç var
6
Örten ağaçlarin toplam sayisi
n köşeli bir tam çizgenin n (n-2) sayıda örten ağaçı var (Cayley formülü) = Bir yılda *106 saniye var. Bir nanosaniye =(10-9) saniye. Bir yılda *1015 < nanosaniye var. 100 köşeli çizgenin tüm örten ağaçlarını yıldan daha uzun sürede bulabiliriz.(Bir işlemi bir nanosaniyede yapabilirsek)
7
En küçük örten ağaç Giriş:
Yönsüz bağlantılı çizge G = (V, E) and ağırlık fonksiyonu w : E→R, Çıkış: En küçük örten ağaç T : tüm köşeleri birleştiren ve değeri en küçük olan ağaç Açgözlü algoritmalar Genel en küçük ağaç algoritması Kruskal algoritması Prim algoritması
8
AÇGÖZLÜ YAKLAŞİM İÇİN TEMEL
Aşağıdaki teorem doğrudur: Teorem. T ağacı G = (V, E) çizgesinin en küçük örten ağacı, S V olsun ve (u, v) ∈ E kirişi S kümesindeki köşeleri S – A kümesindeki köşelere birleştiren en küçük ağırlıklı kiriş olsun. Bu durumda (u, v) ∈ T.
9
BÜYÜYEN EN KÜÇÜK ÖRTEN AĞAÇ
Genel algoritma Her adımda en küçük ağaç bir kiriş büyüyerek oluşturulur A kümesi kirişler kümesi olsun ve bu küme bir en küçük örten ağacın kirişlerinin altkümesi olsun Her adımda A kümesinin yukarıdaki özelliğini bozmayacak bir (u, v) kirişi buluyoruz ve A kümesine ekliyoruz: A {(u, v)} kümesi de bir en küçük örten ağacın kirişler kümesinin altkümesidir (u, v) kirişine güvenli kiriş denir.
10
GENERIC-MST
11
GÜVENLİ KİRİŞ NASİL BULUNUR?
A kümesi bir en küçük örten ağacın kirişler kümesi olan E nin altkümesi, (S, V-S) ise G nin A ya göre bir kesiti olsun. (Yani A daki kirişlerin her iki ucu ya S kümesindedir, ya da V-S kümesindedir.) (u, v) kirişi G nin S kümesindeki köşeleri V-S kümesindeki köşelere birleştiren en küçük ağırlıklı kirişi olsun. Bu durumda (u, v) kirişi A için güvenli kiriş olur.
12
Örnek A={(a,b}, (c, i}, (h, g}, {g, f}}
S={a, b, c, i, e}; V-S = {h, g, f, d} A ya göre oluşturulabilecek kesitlerden biri (c, f) S den V-S e olan en az ağırlıklı kiriş, yani güvenli kirişdir
13
Kruskal Algoritmasi Kiriş tabanlı algoritmadır Açgözlü strateji:
Kalan kirişler arasında ağırlığı en az olan ve artık seçilmiş kirişlerle döngü oluşturmayacak kirişi seç |V|-1 defa tekrar et
14
Kruskal Algoritmasi Giriş: Ağırlıklı G = (V, E) çizgesi,|V| = n ÇIKIŞ:
G nin örten ağacı T Tüm köşeleri içerir, n-1 kirişi var Kirişlerinin toplam ağırlığı en azdır Algoritma: Boş T kümesinden başla, Her adımda kirişleri artan ağırlık sırasıyla ekle Yeni kirişi kabul edilme şartı: eklenen kiriş bir ağaç kirişi olmalıdır (yani bu kiriş T de döngü oluşturmamalıldır) Bu işleme T de n-1 kiriş olana kadar devam edilir
15
Kruskal Algoritmasi MST-Kruskal(G,w) 1 A ¬ Æ
2 for each vertex v Î V[G] do 3 Make-Set(v) //creates set containing v (for initialization) 4 sort the edges of E 5 for each (u,v)ÎE do 6 if Find-Set(u) ¹ Find-Set(v) then // different component A ¬ A È {(u,v)} Union(Set(u),Set(v)) // merge 9 return A
16
Kruskal Algoritmasi
17
Kruskal’s Algorithm
18
Kruskal’s Algorithm
19
Kruskal’s Algorithm
20
Kruskal's Algorithm // takes O(E) MST-Kruskal(G,w) 1 A ¬ Æ
2 for each vertex v Î V[G] do // takes O(V) 3 Make-Set(v) 4 sort the edges of E // takes O(E lg E) // takes O(E) 5 for each (u,v)ÎE, in nondecreasing of weight do 6 if Find-Set(u) ¹ Find-Set(v) then A ¬ A È {(u,v)} Union(Set(u),Set(v)) 9 return A
21
Prim Algoritmasi Köşe tabanlı algoritmadır. Verilen başlangıç köşe en küçük örten ağacın kökü olur. Her adımda örten ağaca yeni bir köşe eklenir.
22
Prim’s Algorithm updating keys
MST-Prim(G,w,r) //G: graph with weight w and a root vertex r 1 for each u Î V[G]{ 2 key[u] ¬ ¥ p[u] ¬ NULL // parent of u } 4 key[r] ¬ 0 5 Q = BuildMinHeap(V,key); // Q – vertices out of T 6 while Q ¹ Æ do 7 u ¬ ExtractMin(Q) // making u part of T for each v Î Adj[u] do if v Î Q and w(u,v) key[v] then p[v] ¬ u key[v] ¬ w(u,v) updating keys
23
Örnek
24
Örnek
25
Örnek
26
Örnek
27
Örnek
28
Örnek
29
Örnek Extract_min from Q
30
Örnek
31
Örnek
32
Örnek
33
Örnek
34
Örnek
35
Örnek
43
PRİM ALGORİTMASI İŞLEM SÜRESİ
İşlem süresi Q nün nasıl yapıldığına bağlıdır İkili heap için: O(E lg V)
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.