1 3.Hafta Master Teorem ve Böl-Fethet Metodu
2 Ana Metod (The Master Method) Ana method aşağıda belirtilen yapıdaki yinelemelere uygulanır: T(n) = at(n/b) + f (n), burada a 1, b > 1, ve f asimptotik olarak pozitiftir. T(n) bir algoritmanın çalışma süresidir. n/b boyutunda a tane alt problem recursive olarak çözülür ve her biri T(n/b) süresindedir. f(n) problemin bölünmesi ve sonuçların birleştirilmesi için geçen süredir. Örnek: Merge-sort için T(n)=2T(n/2)+ (n) yazılabilir.
Ana Metod (The Master Method) Üç yaygın uygulama 3
4 Ana Metod (The Master Method) Üç yaygın uygulama c=(1-ε), ε >
Örnekler 5
Örnekler 6
Master teoremdeki düşünce 7
Master teoremdeki düşünce 8
Master teoremdeki düşünce 9
Master teoremdeki düşünce 1
Master teoremi ispat 11 Durum 2: Eğer f n = θ n log ba, ise T n = θ n log ba logn İspat: Eğer f n = θ nlogba, o zaman f n cn log ba olur T n = n logba log + σ b n 1 j= a j f n b j n logba log + c σ b n 1 j= a j n b j log b a = n logba + cn logba log σ b n 1 j= a j 1 b log b a j a = n logba + cn logba n 1 log σ b j= 1 = n log b a + cn logba log b n cn log ba log n Bu yüzden, f n = θ n log ba ise T n = O n log ba logn dir. Durum 1 ve Durum 3 te benzerdir.( Önerilen ders kitabını inceleyiniz)
12 Master teoremi Örnek: çalışma zamanını bulunuz? ise Çözüm: Durum 1:, için
13 Master teoremi Örnek: çalışma zamanını bulunuz? ise Çözüm:, ve Durum 2:
14 Master teoremi Örnek: ise çalışma zamanını bulunuz? Çözüm:, ve Durum 3: için düzenlilik koşulu,, burada için
15 Master teoremi ispat
16 Karakteristik denklemler kullanarak yinelemeleri çözme Doğrusal Yineleme (Rekürans) Bağıntısı Bir yinelemeli bağıntıda t n, dizinin önceki terimlerinin katlarının toplamına eşitse doğrusal (lineer) dır. (t n T(n) ) t n = t n-1 + t n-2 doğrusal t n = t n-1 + t 2 n-2 doğrusal değildir, t 2 n-2 önceki terimin katı değildir. Homojen Yineleme (Rekürans) Bağıntısı: t n sadece önceki terimlerin katlarına bağlı ise homojen (türdeş) olarak adlandırılır. t n = t n-1 + t n-2 homojen t n = 2t n-1 +1 homojen değildir. "+1" terimi t j katı değildir.
17 Karakteristik denklemler kullanarak özyinelemeleri çözme Yinelemeli bağıntıdaki terimlerin katsayıları sabit ise; sabit katsayılı homojen doğrusal yineleme formu aşağıdaki gibidir. c t n +c 1 t n-1 + +c k t n-k = Burada, t i : özyinelemeli bağıntının değerlerini, c i : sabit katsayılı terimlerini ifade eder. c i,reel sayılardır ve c i. k : ise özyinelemeli bağıntının derecesidir.
18 Karakteristik denklemler kullanarak özyinelemeleri çözme Doğrusal özyinelemelerde t i+j, t i2 şeklinde terimler bulunmaz. Öz yineleme homojendir, çünkü t i nin doğrusal kombinasyonundan dolayı (sıfır) a eşittir. Bu öz yinelemeler k başlangıç koşullarını içerir. t n =c t 1 =c 1 t k =c k Fibonacci dizisi için özyineleme f n =f n-1 +f n-2, f n -f n-1 -f n-2 =, burada k=2, c =1 ve c 1 = c 2 = -1 dir.
19 Karakteristik denklemler kullanarak özyinelemeleri çözme Sabit katsayılı homojen doğrusal yineleme bağıntılarını çözmek için basit bir yöntem vardır. Bu yöntem; k bir sabit olmak üzere, t k = x k ; t n =c 1 t n-1 +c 2 t n-2 + +c k t n-k nın bir çözümü kabul edilir ve bağıntıda yerine konulursa x n =c 1 x n-1 + c 2 x n-2 + +c k x n-k elde edilir. Burada, x bilinmeyen bir sabit ve x dır. Bu ifadenin her iki yanını x n-k ile bölersek: x k -c 1 x k-1 -c 2 x k-2 - -c k = bulunur ve derecesi k olan ve genelde k adet kökü olan bu polinoma yineleme bağıntısının karakteristik denklemi (characteristic equation) adı verilir. Bu denklemin kökü birden fazla veya karmaşık olabilir.
2 Karakteristik denklemler kullanarak özyinelemeleri çözme
21 Karakteristik denklemler kullanarak özyinelemeleri çözme t n için genel çözümü yaz
22 Karakteristik denklemler kullanarak özyinelemeleri çözme
23 Karakteristik denklemler kullanarak özyinelemeleri çözme
24 Karakteristik denklemler kullanarak özyinelemeleri çözme
25 Karakteristik denklemler kullanarak özyinelemeleri çözme
26 Karakteristik denklemler kullanarak yinelemeleri çözme Homojen Olmayan Yineleme Bağıntıları t n sadece önceki terimlerin katlarına bağlı değil ise homojen olmayan bağıntı olarak adlandırılır. t n = t n-1 + t n-2 homojen t n = 2t n-1 +1 homojen değildir. "+1" terimi t j katı değildir. Yinelemeli bağıntıların genel formu c t n +c 1 t n-1 + +c k t n-k =f(n) şeklinde ifade edilir. f(n) = eşit ise homojen, sıfırdan farklı ise homojen olmayan yinelemeli bağıntıdır. f(n) = b n p(n) şeklinde ifade edilirse b sıfırdan farklı bir sabiti p(n) ise d. dereceden n nin bir polinomudur.
27 Karakteristik denklemler kullanarak yinelemeleri çözme Örnek: Aşağıda verilen reküransı çözünüz t n - 2t n-1 = 3 n burada b=3, p(n) d =1 ve polinom derecesi d= dır. İlk olarak her iki tarafı 3 ile çarpalım: 3t n - 6t n-1 = 3 n+1 Eğer n, n+1 ile yer değiştirirsek: t n+1-2t n = 3 n+1 denklemini elde ederiz. Her iki denklemi bir birinden çıkarırsak yeni denklem t n+1-5t n + 6t n-1 = olur.
28 Karakteristik denklemler kullanarak yinelemeleri çözme Homojen durumda olduğu gibi çözüm yaparsak karakteristik denklem x 2-5x+6 =, (x-2)(x-3)= Dikkat edilecek olursa (x-2) değeri orijinal rekürans ta sol tarafı, x-3 ise sağ taraftaki polinomu ifade etmekte. Buna göre karakteristik denklemin basit genel formunu aşağıdaki şekilde ifade edebiliriz: (c x k +c 1 x k-1 +c 2 x k-2 + +c k )(x-b) d+1 =, burada d, p(n) polinomunun derecesidir. Bu denklem elde edildikten sonra homojen durumunda olduğu gibi çözüm yapılır.
29 Karakteristik denklemler kullanarak yinelemeleri çözme
3 Karakteristik denklemler kullanarak yinelemeleri çözme c t n +c 1 t n-1 + +c k t n-k =b n p(n) homojen olmayan denklemler için verilen basit genel formu daha da genelleştirirsek c t n +c 1 t n-1 + +c k t n-k =b 1n p 1 (n)+b 2n p 2 (n)+ formunu elde ederiz. Buna göre karakteristik denklem: (c x k +c 1 x k-1 +c 2 x k-2 + +c k )(x-b 1 ) d1+1 (x-b 2 ) d2+1 =,
31 Karakteristik denklemler kullanarak yinelemeleri çözme d 1 =1,d 2 =
32 Karakteristik denklemler kullanarak yinelemeleri çözme Çözüm yolu: Gaus yok etme yöntemi, bilinmeyenlerin ileriye doğru elenmesi. İlk adım ilk bilinmeyeni (c 1 ), 2. denklemden n. Denkleme kadar elemektir. 2.denklem a 21 -(a 21 /a 11 )*a 11 + a 22 -(a 21 /a 11 )*a 12 +..+ a 2n -(a 21 /a 11 )*a 1n = c 2 -(a 21 /a 11 )*c 1 3. denklem a 31 -(a 31 /a 11 )*a 11 + a 32 -(a 31 /a 11 )*a 12 +..+ a 3n -(a 31 /a 11 )*a 1n = c 3 -(a 31 /a 11 )*c 1 n.denklem a n1 -(a n1 /a 11 )*a 11 + a n2 -(a n1 /a 11 )*a 12 +..+ a nn -(a n1 /a 11 )*a 1n = c n -(a n1 /a 11 )*c 1 Buna göre ilk durumda matrisimiz 1 1 1 1 1 2 3 1 2 2 4 8 8 24 c 1 c 2 c 3 c 4 = 3 12 35 1 1 2 3 1 1 3 7 2 8 24 c 1 c 2 c 3 c 4 = 3 12 35
Karakteristik denklemler kullanarak yinelemeleri çözme 33 İkinci adım ikinci bilinmeyeni (c 2 ), 3. denklemden n. denkleme kadar elemektir. 3.denklem a 32 -(a 32 /a 22 )*a 22 + a 33 -(a 32 /a 22 )*a 23 +..+ a 3n -(a 32 /a 22 )*a 2n = c 3 -(a 32 /a 22 )*c 2 n.denklem a n2 -(a n2 /a 22 )*a 22 + a n3 - (a n2 /a 22 )* a 23 +..+ a nn -(a n2 /a 22 )*a 2n = c n - (a n2 /a 22 )* c 2 1 1 2 3 1 1 2 3 8 7 24 c 1 c 2 c 3 c 4 = 3 12 35 1 1 1 1 1 4 2 4 18 c 1 c 2 c 3 c 4 = 3 6 26
34 Karakteristik denklemler kullanarak yinelemeleri çözme Diğer adımlarda benzer şekilde yapılır. 1 1 1 1 2 1 4 4 18 c 1 c 2 c 3 c 4 = 3 6 26 1 1 1 1 1 2 4 2 c 1 c 2 c 3 c 4 = 3 6 2 c 4 = 1, c 3 = 2, c 2 = 1, c 1 = 2 olur. T n = 2 n + 2 n+2 + n2 n T(n) θ(n2 n )
35 Karakteristik denklemler kullanarak yinelemeleri çözme
36 Karakteristik denklemler kullanarak yinelemeleri çözme 2
37 Karakteristik denklemler kullanarak yinelemeleri çözme
38 Karakteristik denklemler kullanarak yinelemeleri çözme Aralık dönüşümleri (Range Transformations): Yinelemelerin çözümünde değişkenlerin değişimi yerine bazen aralık dönüşümü kullanmak daha faydalı olabilir. Örnek: T(n)= nt(n/2) 2, n>1, T(1)=6 n, değerini 2 k (burada k=logn dir) ile yer değiştirirsek T(2 k )=2 k T(2 k-1 ) 2, elde ederiz. t k =T(2 k ) =T(n) ise, t k =2 k t 2 k-1, k> için t =6 İlk bakışta gördüğümüz tekniklerin hiç biri bu yineleme için uygulanamaz çünkü hem doğrusal değil, hem de katsayılardan biri sabit değildir. Aralık dönüşümü yapmak için V k =log t k koyarak yeni bir yineleme oluşturulur.
39 Karakteristik denklemler kullanarak yinelemeleri çözme
4 Karakteristik denklemler kullanarak yinelemeleri çözme
41 Böl-ve-Fethet (Divide & Conquer) Böl ve fethet tekniğiyle algoritma tasarımı: Problem kendisine benzer küçük boyutlu alt problemlere bölünür. Alt problemler çözülür ve bulunan çözümler birleştirilir. Divide: Problem iki veya daha fazla alt problemlere bölünür. Conquer: Alt problemleri özyinelemeli olarak çözüp, onları fethet. Combine: Alt problem çözümlerini birleştir.
Merge Sort (Birleştirme sıralaması) Algoritması 1. Böl: Eğer S en az iki elemana sahipse (S sıfır veya bir elemana sahipse hiçbir işlem yapılmaz), bütün elemanlar S 'e n alınır ve S 1 ve S 2 adlı iki alana yerleştirilir, her biri S dizisinin yarısına sahiptir, (örn. S 1 ilk n/2 elemana ve S 2 ise ikinci n/2 elemana sahiptir). 2. Fethet: S 1 ve S 2 Merge Sort kullanılarak sıralanır. 3. Birleştir: S 1 and S 2 içindeki sıralı elemanlar tekrar S içerisine tek bir sıralı dizi oluşturacak şekilde aktarılır. 42
43 Birleştirme sıralaması 1. Bölmek: Kolay. 2. Hükmetmek: 2 alt dizilimi özyinelemeli sıralama. 3. Birleştirmek: Doğrusal-zamanda birleştirme.
Master teoremi (hatırlatma) 44
45 İkili arama (Binary Search) Sıralı dizilimin bir elemanını bulma: 1. Böl: Orta elemanı belirle. 2. Hükmet: 1 alt dizilimde özyinelemeli arama yap. 3. Birleştir: Kolay. Örnek: 9' u bul.
İkili arama (Binary Search) 46
İkili arama için yineleme 47
48 Bir sayının üstellenmesi Problem: a n 'yi n N iken hesaplama. Saf (Naive) algorithm: Θ(n). Böl-ve-fethet algoritması:
Fibonacci sayıları 49
5 Fibonacci sayılarını hesaplama
51 Özyineleme ile kare alma (Recursive squaring)
52 Özyineleme ile kare alma (Recursive squaring)
53 Matrislerde çarpma
54 Matrislerde çarpma Standart algoritma
Böl-ve-fethet algoritması 55
56 Böl-ve-Fethet algoritmasının çözümlemesi
57 Strassen in fikri 2 2 matrisleri yalnız 7 özyinelemeli çarpmayla çöz.
58 Strassen in fikri 2 2 matrisleri yalnız 7 özyinelemeli çarpmayla çöz.
59 Strassen in algoritması 1. Böl: A ve B'yi (n/2) (n/2) altmatrislere böl. + ve kullanarak çarpılabilecek terimler oluştur. (Θ(n 2 )) 2. Fethet: (n/2) (n/2) altmatrislerde özyinelemeli 7 çarpma yap (P 1, P 2, P 3, P 7.) 3. Birleştir: + ve kullanarak (n/2) (n/2) altmatrislerde C 'yi oluştur. (Θ(n 2 )) T(n) = 7 T(n/2) + Θ(n 2 )
6 Strassen in algoritması 2.81 değeri 3' den çok küçük görünmeyebilir ama, fark üstelde olduğu için, yürütüm süresine etkisi kayda değerdir. Aslında, n 32 değerlerinde Strassen in algoritması günün makinelerinde normal algoritmadan daha hızlı çalışır. Bugünün en iyi değeri (teorik merak açısından): Θ(n 2.376 )
Böl ve Fethet VLSI (Very Large Scale Integration) yerleşimi (Çok Büyük Çapta Tümleşim) Bilgisayar çipleri yada yongaları bildiğiniz gibi çok büyük çapta tümleşim kullanırlar. Elimizde bir devre olduğunu düşünelim ve bu devrenin de bir ikili ağaç olduğunu kabul edelim. Ama şimdilik bu devrenin bir kısmını ele alalım ama siz bunu tüm devre kabul edin. 61 Problem: n yaprağı olan tam bir ikili ağacı en az alan kullanarak bir ızgaraya gömmek.
VLSI (Very Large Scale Integration) yerleşimi (Çok Büyük Çapta Tümleşim) 62 Problem: n yaprağı olan tam bir ikili ağacı en az alan kullanarak bir ızgaraya gömmek.
H-ağacını gömme 63
64 Sonuç Böl ve Fethet algoritma tasarımının güçlü tekniklerinden sadece biridir. Böl ve Fethet algoritmaları yinelemeler ve Ana (Master) metot kullanarak çözümlenebilir. Böl ve Fethet stratejisi genellikle verimli algoritmalara götürür.
65 Ortak Reküranslar Rekürans İlişkisi Kapalı Form Örnek c(1) = a c(n) = b + c(n-1) c(n) = O(n) Linear search c(n) = b*n + c(n-1) c(n) = O(n 2 ) Quicksort c(n) = b + c(n/2) c(n) = O(log(n) Binary search c(n) = b*n + c(n/2) c(n) = b + kc(n/k) c(n) = O(n) c(n) = O(n) c(n) = b*n + 2c(n/2) c(n) = O(nlog(n)) Mergesort c(n) = b*n + kc(n/k) c(n) = O(nlog(n) c(2) = b c(n) = c(n-1) + c(n-2) + d c(n) = O(2n ) Fibonacci
66 Sorular 1.T(n)=3T( 2n )+2 tekrarlı bağıntısını çözünüz. 2. T(n)=3T( n/5 )+n tekrarlı bağıntısının çözümünü iteratif yolla gerçekleştiriniz. Bu bağıntının Özyineleme ağacı nedir? 3. Özyineleme ağacını kullanarak T(n)=T(n/3)+T(2n/3)+n bağıntısının çözümünü elde ediniz. 4. b 1 bir sabit olmak üzere T(n)=T(n/b)+T(b)+n tekrarlı bağıntısının Özyineleme ağacını elde ediniz ve bu bağıntının çözümü nedir? 5. <a<1 sabit olmak üzere T(n)=T(an)+T((1-a)n)+n tekrarlı bağıntısının Özdevinim ağacını elde ediniz ve asimptotik davranışı hakkında bilgi veriniz.
67 Sorular 6. a)t n = nt n + n çalışma zamanı mertesbesininin O(nloglogn) olduğunu iterasyon veya öz yineleme ağacı ile bulunuz. b) T n = nt n/2 + n 7. Master yöntemini kullanarak aşağıdaki tekrarlı bağıntıları çözünüz. a) T(n)=3T(n/3)+n b)t(n)=3t(n/3)+n 2 c) T(n)=3T(n/3)+n 3 d) T(n)=3T(n/3)+n k 8. Aşağıdaki tekrarlı bağıntı verilmiş olsun. T(n)=2T(n/3)+lg(n) a) İteratif yöntem ile bu bağıntının mertebesini (çalışma zamanını) elde ediniz. b) Master yöntemi ile bu bağıntının mertebesini (çalışma zamanını) elde ediniz.
68 Sorular 9. Aşağıdaki tekrarlı bağıntıları karakteristik denklem ve üreten fonksiyon yöntemleri ile çözünüz. a) a n =5a n-1-6a n-2, a 1 =36 ve a = b) a n =3a n-1-2a n-2 +2 n-1 +2.3 n, a 1 =29 ve a =9 c) a n =a n-2 +4n, a 1 =4 ve a =1 d) a n =3a n-1-2a n-2 +3.2 2n-1, a 1 =12 ve a = 1. Master teoremini kullanarak aşağıdaki bağıntının mertebesini (çalışma zamanını) elde ediniz. T(n)=16T(n/4)+O(n 2 ) 11. f(n)=n 2 +4nlogn+9 ve g(n)=n 2 +45logn+h(n) fonksiyonları verilmiştir ve h(n) lineer olan bir polinomdur. f(n) ile g(n) arasındaki asimptotik ilişki nedir? f(n) ve g(n) arasındaki asimptotik ilişkiyi belirlerken h(n) polinomuna ihtiyaç var mıdır? Hangi durumlarda ihtiyaç duyulur veya duyulmaz?
4.Hafta Sıralama Algoritmaları Çabuk Sıralama, Rastgele Algoritmalar 69