Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Çizge Algoritmalari 10. Ders.

Benzer bir sunumlar


... konulu sunumlar: "Çizge Algoritmalari 10. Ders."— Sunum transkripti:

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

36

37

38

39

40

41

42

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)


"Çizge Algoritmalari 10. Ders." indir ppt

Benzer bir sunumlar


Google Reklamları