Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Algoritmalar D ERS 3 Böl ve Fethet(Divide and Conquer) İkili arama Sayı üstelleri Fibonacci sayıları Matriks çarpımı Strassen’in algoritması September.

Benzer bir sunumlar


... konulu sunumlar: "Algoritmalar D ERS 3 Böl ve Fethet(Divide and Conquer) İkili arama Sayı üstelleri Fibonacci sayıları Matriks çarpımı Strassen’in algoritması September."— Sunum transkripti:

1 Algoritmalar D ERS 3 Böl ve Fethet(Divide and Conquer) İkili arama Sayı üstelleri Fibonacci sayıları Matriks çarpımı Strassen’in algoritması September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.1

2 Böl-ve-hükmet tasarım paradigması September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.2 1.Problemi (anlık durumu) alt problemlere böl. 2.Altproblemleri özyinelemeli olarak çözüp, onları fethet. 3.Altproblem çözümlerini birleştir.

3 Birleştirme sıralaması September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.3 1.Bölmek:Kolay. 2. Hükmetmek: 2 altdiziyi özyinelemeli sıralama. 3.Birleştirmek: Doğrusal-zamanda birleştirme.

4 Birleştirme sıralaması 1.Bölmek:Kolay. 2. Hükmetmek: 2 altdiziyi özyinelemeli sıralama. 3.Birleştirmek: Doğrusal-zamanda birleştirme. T(n) = 2 T(n/2) + Θ (n) altproblem sayısı altproblem boyutu bölmeve birleştirme işi September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.4

5 Master teoremi (hatırlatma) September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.5 T(n) = a T(n/b) + f (n) D URUM 1: f (n) = O(n log b a – ε ), sabit ε > 0 ⇒ T(n) = Θ (n log b a ). D URUM 2: f (n) = Θ (n log b a ) ⇒ T(n) = Θ (n log b a ). D URUM 3: f (n) = Ω (n log b a + ε ), sabit ε > 0, ve düzenleyici koşul (regularity condition). ⇒ T(n) = Θ ( f (n)).

6 Master teoremi (hatırlatma) September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.6 T(n) = a T(n/b) + f (n) D URUM 1: f (n) = O(n log b a – ε ), sabit ε > 0 ⇒ T(n) = Θ (n log b a ). D URUM 2: f (n) = Θ (n log b a ) ⇒ T(n) = Θ (n log b a ). D URUM 3: f (n) = Ω (n log b a + ε ), sabit ε > 0, ve düzenleyici koşul (regularity condition). ⇒ T(n) = Θ ( f (n)). Birleştirme sıralaması: a = 2, b = 2 ⇒ n log b a = n log 2 2 = n ⇒ D URUM 2 (k = 0) ⇒ T(n) = Θ (n lg n).

7 İkili arama September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.7 Sıralı dizide bir elemanını bulma: 1.Böl: Orta elemanı belirle. 2.Hükmet: 1 altdizide özyinelemeli arama yap. 3.Birleştir: Kolay.

8 İkili arama Sıralı dizide bir elemanını bulma: 1.Böl: Orta elemanı belirle. 2. Hükmet: 1altdizide özyinelemeli arama yap. 3.Birleştir: Kolay. Örnek:9' u bul September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.8

9 İkili arama Sıralı dizide bir elemanını bulma: 1.Böl:Orta elemanı belirle. 2. Hükmet: 1altdizide özyinelemeli arama yap. 3.Birleştir: Kolay. Örnek:9'u bul September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.9

10 İkili arama Sıralı dizide bir elemanını bulma: 1.Böl: Orta elemanı belirle. 2. Hükmet: 1altdizide özyinelemeli arama yap. 3.Birleştir: Kolay. Örnek:9'u bul September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.10

11 İkili arama Sıralı dizide bir elemanını bulma: 1.Böl: Orta elemanı belirle. 2. Hükmet: 1 altdizide özyinelemeli arama yap. 3.Birleştir: Kolay. Örnek: 9'u bul September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.11

12 İkili arama Sıralı dizide bir elemanını bulma: 1.Böl: Orta elemanı belirle. 2. Hükmet: 1 altdizide özyinelemeli arama yap. 3.Birleştir: Kolay. Örnek:9'u bul September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.12

13 İkili arama Sıralı dizilimin bir elemanını bulma: 1.Böl: Orta elemanı belirle. 2. Hükmet: 1 altdizilimde özyinelemeli arama yap. 3.Birleştir: Kolay. Örnek:9'u bul September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.13

14 İkili arama için yineleme T(n) = 1 T(n/2) + Θ (1) altproblem sayısı altproblem boyutu bölme ve birleştime işi September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.14

15 İkili arama için yineleme T(n) = 1 T(n/2) + Θ (1) altproblem sayısı altproblem boyutu bölme ve birleştime işi September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.15 n log b a = n log 2 1 = n 0 = 1 ⇒ D URUM 2 ⇒ T(n) = Θ (lg n).

16 Bir sayının üstellenmesi September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.16 Problem: a n 'yi,n ∈ N iken hesaplama. Saf (Naive) algoritma: Θ (n).

17 Bir sayının üstellenmesi Problem: a n 'yi,n ∈ N iken hesaplama. a n = a n/2 ⋅ a n/2 a (n–1)/2 ⋅ a (n–1)/2 ⋅ a n çift sayıysa; n tek sayıysa. Saf (Naive) algoritma: Θ (n). Böl-ve-fethet algoritması: September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.17

18 Bir sayının üstellenmesi Problem: a n 'yin ∈ N iken hesaplama. a n = a n/2 ⋅ a n/2 a (n–1)/2 ⋅ a (n–1)/2 ⋅ a n çift sayıysa; n tek sayıysa. Saf (Naive) algorithm: Θ (n). Böl-ve-fethet algoritması: September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.18 T(n) = T(n/2) + Θ (1) ⇒ T(n) = Θ (lg n).

19 Fibonacci sayıları Özyinelemeli tanım: September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.19

20 Fibonacci sayıları Özyinelemeli tanım: September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.20

21 Fibonacci sayılarını hesaplama September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.21 Aşağıdan yukarıya: F 0, F 1, F 2, …, F n 'i sırayla, her sayı iki öncekinin toplamı olacak şekilde hesaplayın. Yürütüm süresi: Θ(n).

22 Fibonacci sayılarını hesaplama Aşağıdan yukarıya: F 0, F 1, F 2, …, F n 'i sırayla, her sayı iki öncekinin toplamı olacak şekilde hesaplayın. Çalışma zamanı: Θ(n). Saf özyinelemeli kare alma (Naive recursive squaring) : Bu yöntem güvenilir değildir, yuvarlama hatalarına gebedir. September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.22

23 Özyineleme ile kare alma (Recursive squaring) September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.23

24 Özyineleme ile kare alma (Recursive squaring) September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.24

25 Özyineleme ile kare alma (Recursive squaring) September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.25

26 Özyineleme ile kare alma September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.26

27 Matrislerde çarpma Girdi: Çıktı: A = [a ij ], B = [b ij ]. C = [c ij ] = A ⋅ B. i, j = 1, 2,…, n. September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.27

28 Standartalgoritma September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.28 for i ← 1 to n (i 1'den n'ye kadar) do for j ← 1 to n doc ij ← 0 for k ← 1 to n do c ij ← c ij + a ik ⋅ b kj (j 1'den n'ye kadar)

29 Standartalgoritma September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.29 for i ← 1 to n (i 1'den n'ye kadar) do for j ← 1 to n doc ij ← 0 for k ← 1 to n do c ij ← c ij + a ik ⋅ b kj (j 1'den n'ye kadar) Çalışma zamanı = Θ(n 3 )

30 Böl-ve-fethet algoritması September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.30

31 Böl-ve-fethet algoritması September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.31

32 altmatris sayısı altmatris boyutu altmatrisleri toplama işi Böl-ve-Fethet algoritmasının çözümlemesi T(n) = 8 T(n/2) + Θ (n 2 ) September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.32

33 altmatris sayısı altmatris boyutu altmatrisleri toplama işi Böl-ve-Fethet algoritmasının çözümlemesi T(n) = 8 T(n/2) + Θ (n 2 ) September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.33 n log b a = n log 2 8 = n 3 ⇒ D URUM 1 ⇒ T(n) = Θ (n 3 ).

34 altmatris sayısı altmatris boyutu altmatrisleri toplama işi Böl-ve-Fethet algoritmasının çözümlemesi T(n) = 8 T(n/2) + Θ (n 2 ) September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.34 n log b a = n log 2 8 = n 3 ⇒ D URUM 1 ⇒ T(n) = Θ (n 3 ). Sıradan algoritmadan daha iyi değil.

35 Strassen’in fikri September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL × 2 matrisleri yalnız 7 özyinelemeli çarpmayla çöz.

36 Strassen’in fikri September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL × 2 matrisleri yalnız 7 özyinelemeli çarpmayla çöz. P 1 = a ⋅ ( f – h) P 2 = (a + b) ⋅ h P 3 = (c + d) ⋅ e P 4 = d ⋅ (g – e) P 5 = (a + d) ⋅ (e + h) P 6 = (b – d) ⋅ (g + h) P 7 = (a – c) ⋅ (e + f )

37 Strassen’in fikri September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL × 2 matrisleri yalnız 7 özyinelemeli çarpmayla çöz. P 1 = a ⋅ ( f – h) P 2 = (a + b) ⋅ h P 3 = (c + d) ⋅ e P 4 = d ⋅ (g – e) P 5 = (a + d) ⋅ (e + h) P 6 = (b – d) ⋅ (g + h) P 7 = (a – c) ⋅ (e + f )

38 Strassen’in fikri September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL × 2 matrisleri yalnız 7 özyinelemeli çarpmayla çöz. P 1 = a ⋅ ( f – h) P 2 = (a + b) ⋅ h P 3 = (c + d) ⋅ e P 4 = d ⋅ (g – e) P 5 = (a + d) ⋅ (e + h) P 6 = (b – d) ⋅ (g + h) P 7 = (a – c) ⋅ (e + f )

39 Strassen’in algoritması September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL Böl: A ve B'yi (n/2) × (n/2) altmatrislere böl.+ ve– kullanarak çarpılabilecek terimler oluştur. 2.Fethet: (n/2) × (n/2) altmatrislerde özyinelemeli 7 çarpma yap. 3. Birleştir:+ ve –kullanarak (n/2) × (n/2) altmatrislerde C 'yi oluştur.

40 Strassen’in algoritması September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL Böl: A ve B'yi (n/2) × (n/2) altmatrislere böl.+ ve– kullanarak çarpılabilecek terimler oluştur. 2.Fethet: (n/2) × (n/2) altmatrislerde özyinelemeli 7 çarpma yap. 3. Birleştir:+ ve –kullanarak (n/2) × (n/2) altmatrislerde C 'yi oluştur. T(n) = 7 T(n/2) + Θ(n 2 )

41 Strassen'in çözümlenmesi September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.41 T(n) = 7 T(n/2) + Θ(n 2 )

42 Strassen'in çözümlenmesi September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.42 T(n) = 7 T(n/2) + Θ (n 2 ) n log b a = n log 2 7 ≈ n 2.81 ⇒ D URUM 1 ⇒ T(n) = Θ(n lg 7 ).

43 Strassen'in çözümlenmesi September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.43 T(n) = 7 T(n/2) + Θ (n 2 ) n log b a = n log 2 7 ≈ n 2.81 ⇒ D URUM 1 ⇒ T(n) = Θ(n lg 7 ) değeri 3'den çok küçük görünmeyebilirama, fark üstelde olduğu için, koşma süresine etkisi kayda değerdir.Aslında,n ≥ 32 değerlerinde, Strassen’in algoritması günün makinelerinde normalalgoritmadan daha hızlı çalışır.

44 Strassen'in çözümlenmesi September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.44 T(n) = 7 T(n/2) + Θ (n 2 ) n log b a = n log 2 7 ≈ n 2.81 ⇒ D URUM 1 ⇒ T(n) = Θ(n lg 7 ) 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, Coppersmith– Winograd algorithm): Θ(n ).

45 Sonuç September 14, 2005Copyright © Erik D. Demaine and Charles E. LeisersonL2.45 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. (bu nedenle bu matematiğin pratiğini yapın). Böl ve Fethet stratejisi genellikle verimli algoritmalara götürür.


"Algoritmalar D ERS 3 Böl ve Fethet(Divide and Conquer) İkili arama Sayı üstelleri Fibonacci sayıları Matriks çarpımı Strassen’in algoritması September." indir ppt

Benzer bir sunumlar


Google Reklamları