bölüm 1. algoritma analizi -...

32
O. T. Yıldız, C && Java ile Veri Yapılarına Giri¸ s, Bo ˘ gaziçi Üniversitesi Yayınevi, 2013 1 / 32 Bölüm 1. Algoritma Analizi Olcay Taner Yıldız 2014

Upload: others

Post on 31-Aug-2019

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 1 / 32

Bölüm 1. Algoritma Analizi

Olcay Taner Yıldız

2014

Page 2: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Büyük-O Gösterimi

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 2 / 32

Page 3: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Bir dizinin en büyük elemanını bulanalgoritma

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 3 / 32

1 int diziEnBuyuk(int[] dizi)2 int i, enBuyuk;3 enBuyuk = dizi[0];4 for (i = 1; i < dizi . length; i++)5 if ( dizi [ i ] > enBuyuk)6 enBuyuk = dizi[ i ];7 8 return enBuyuk;9

Page 4: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Islem Sayısı (En Fazla)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 4 / 32

1 defa enBuyuk = dizi[0] atama komutu 1 defa i = 1 atama komutu N defa i < N karsılastırma komutu N - 1 defa i++ atama komutu N - 1 defa if ( dizi [ i ] > enBuyuk) karsılastırma komutu N - 1 defa enBuyuk = dizi[ i ] atama komutu

Page 5: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

O(n)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 5 / 32

Tanım 1 f(n) ve g(n) pozitif tamsayılardan reel sayılara

tanımlı iki fonksiyon olsun. Eger her n > n0 tamsayısı için

f(n) < cg(n) olacak sekilde c ve n0 sabitleri varsa, f= O(g)’dir

ve f fonksiyonu için g fonksiyonu bir üst sınır belirler.

Page 6: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Islem Sayısı (En Az)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 6 / 32

1 defa enBuyuk = dizi[0] atama komutu 1 defa i = 1 atama komutu N defa i < N karsılastırma komutu N - 1 defa i++ atama komutu N - 1 defa if ( dizi [ i ] > enBuyuk) karsılastırma komutu

Page 7: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Ω(n)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 7 / 32

Tanım 2 f(n) ve g(n) pozitif tamsayılardan reel sayılara

tanımlı iki fonksiyon olsun. Eger her n > n0 tamsayısı için

f(n) > cg(n) olacak sekilde c ve n0 sabitleri varsa, f= Ω(g)’dir

ve f fonksiyonu için g fonksiyonu bir alt sınır belirler.

Page 8: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Θ(n)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 8 / 32

Tanım 3 f(n) ve g(n) pozitif tamsayılardan reel sayılara

tanımlı iki fonksiyon olsun. Eger her n > n0 tamsayısı için

c1g(n) > f(n) > c2g(n) olacak sekilde c1, c2 ve n0 sabitleri

varsa, f= Θ(g)’dir ve f fonksiyonu için g fonksiyonu hem üst

hem de bir alt sınır belirler.

Page 9: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Algoritma analizinde sıklıkla kullanılan 8temel fonksiyonun büyüme oranları

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 9 / 32

0

1

2

3

4

5

6

7

8

9

10

0 1 2 3 4 5 6 7 8 9 10

Page 10: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Yinelemesiz Programların Analizi

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 10 / 32

Page 11: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Püf Nokta (1)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 11 / 32

Bir for döngüsünün çalısma süresi döngünün içindekisatırların çalısma süreleri ile döngünün tekrar sayısınınçarpımı kadardır.

1 int kare_toplami(int N)2 int i, toplam = 0;3 for (i = 1; i <= N; i++)4 toplam += i * i ;5 return toplam;6

T (N) =N∑

i=1

1

= N ∈ O(N)

Page 12: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Püf Nokta (2)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 12 / 32

Birden fazla döngü iç içe oldugunda fonksiyonun çalısmasüresi bütün döngülerin çalısma sürelerinin çarpımı kadardır.

1 toplam = 0;2 for (i = 0; i < N; i++)3 for (j = 0; j < N; j++)4 toplam++;

Page 13: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Püf Nokta (2)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 13 / 32

T (N) =

N−1∑

i=0

N−1∑

j=0

1

︸ ︷︷ ︸

N

=N−1∑

i=0

N

= NN−1∑

i=0

1

︸ ︷︷ ︸

N

= N2 ∈ O(N2)

Page 14: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Püf Nokta (3)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 14 / 32

Ardısık program parçaları söz konusu oldugunda çalısmasüresi en fazla olan program parçasının çalısma süresi tümprogramın çalısma süresi olarak kabul edilir.

1 toplam = 0;2 for (i = 1; i <= N; i++)3 toplam += i * i ;4 for (i = 0; i < N; i++)5 for (j = 0; j < N; j++)6 toplam++;

T (N) = O(N) +O(N2) ∈ O(N2)

Page 15: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Püf Nokta (4)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 15 / 32

If/Else kosul satırının çalısma süresi, kosulun dogru veyayanlıs oldugu durumların çalısma sürelerinin en fazlasıkadardır.

1 toplam = 0;2 if (N % 2 == 0)3 for (i = 1; i <= N; i++)4 toplam += i * i ;5 else

6 for (i = 0; i < N; i++)7 for (j = 0; j < N; j++)8 toplam++;

T (N) = O(N2)

Page 16: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Püf Nokta (5)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 16 / 32

Döngü degiskeninin birer birer artmadıgı / azalmadıgıdurumlarda döngü degiskeninin döngü süresince aldıgıdegerleri belirlemek döngünün çalısma süresini belirlemedeyardımcı olacaktır.

1 int basamak_sayisi(int N)2 int i, sayi = 1;3 while (N > 1)4 sayi++;5 N = N / 2;6 7 return sayi;8

Page 17: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Püf Nokta (5)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 17 / 32

Ilk döngü sonundaki degeriN

2, ikinci döngü sonundaki degeri

N

4=N

22, üçüncü döngü sonundaki degeri

N

8=N

23, . . ., k’nıncı

döngü sonundaki degeri iseN

2kolacaktır.

N

2k= 1

N = 2k

k = log2N

sonucunda toplam tekrar sayısı log2N , fonksiyonun çalısmasüresi de O(logN ) olur.

Page 18: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Özyinelemeli Programların Analizi

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 18 / 32

Page 19: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Özyinelemeli Programların Analizi

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 19 / 32

Özyinelemeli programların analizi, özyinelemeli olmayanprogramların analizi gibi yapılamaz.

Bunun temel nedeni, programın çalısma süresinin sadeceyapılan islemlere degil aynı zamanda programın kendiçalısma süresinin bir fonksiyonuna da baglı olmasıdır.

Page 20: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Örnek (1)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 20 / 32

1 int faktoryel(int N)2 if (N <= 1)3 return 1;4 else

5 return N * faktoryel(N - 1);6

N girdisi için çalısma süresi yine faktöryel fonksiyonununN − 1 girdisi için çalısma süresine baglıdır.

Page 21: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Örnek (1)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 21 / 32

f(1) = 1

f(N) = f(N − 1) + 1

Birinci denklem N= 1 için fonksiyonun yaptıgı islemsayısını, yani return 1; satırındaki döndürme islemini

Ikinci denklemdeki +1 isereturn N * faktoryel(N - 1); satırındaki çarpma isleminigöstermektedir.

Page 22: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Örnek (1)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 22 / 32

Ikinci denklemdeki N yerine sırayla N − 1, N − 2, . . ., 2koyarak

f(N) = f(N − 1) + 1

f(N − 1) = f(N − 2) + 1

f(N − 2) = f(N − 3) + 1

. . .

f(2) = f(1) + 1

elde ederiz. Esitlikleri taraf tarafa topladıgımızda, f(N − 1),f(N − 2), . . ., f(2) sadelesir ve geriye

f(N) = f(1) +N − 1

f(N) = N ∈ O(N)

Page 23: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Örnek (2)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 23 / 32

1 int basamak_sayisi(int N)2 if (N == 1)3 return 1;4 else

5 return 1 + basamak_sayisi(N / 2);6

Bu fonksiyonun çalısma süresi (girdi N için) yine bufonksiyonun çalısma süresine (girdi N / 2 için) baglıdır.

Page 24: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Örnek (2)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 24 / 32

b(1) = 1

b(N) = b(N/2) + 1

Birinci denklem N= 1 için fonksiyonun yaptıgı islemsayısını, yani return 1; satırındaki döndürme islemini

Ikinci denklemdeki +1 isereturn 1 + basamak_sayisi(N / 2); satırındaki toplama isleminigöstermektedir.

Page 25: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Örnek (2)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 25 / 32

N = 2k varsayıp N yerine sırayla N/2 = 2k−1, N/22 = 2k−2,. . . , N/2k−1 = 2 koyarak

b(2k) = b(2k−1) + 1

b(2k−1) = b(2k−2) + 1

b(2k−2) = b(2k−3) + 1

. . .

b(21) = b(1) + 1

elde ederiz. Esitlikleri taraf tarafa topladıgımızda, b(2k−1),b(2k−2), . . ., b(2) sadelesir ve geriye

b(2k) = b(1) + k

b(2k) = k + 1

b(N) = log2N + 1 ∈ O(logN)

Page 26: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Örnek (3)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 26 / 32

1 void hanoi(int N, int sutun1, int sutun2)2 sutun3 = 6 - sutun1 - sutun2;3 if (N = 1)4 hareketEttir (sutun1, sutun2);5 else6 hanoi(N - 1, sutun1, sutun3);7 hareketEttir (sutun1, sutun2);8 hanoi(N - 1, sutun3, sutun2);9

10

Hanoi fonksiyonunun çalısma süresi (girdi N için) yine bufonksiyonun çalısma süresine (girdi N − 1 için) baglıdır.

Page 27: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Örnek (3)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 27 / 32

h(1) = 1

h(N) = 2h(N − 1) + 1

Birinci denklem N= 1 için fonksiyonun yaptıgı islemsayısını, yani hareketEttir (1, 3); satırındaki islemi

Ikinci denklemdeki 2h(N - 1), 2 kere özyinelemeli çagırılanhanoi(N - 1, ...) satırını; +1 ise hareketEttir (1, 3); satırındakiislemi göstermektedir

Page 28: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Örnek (3)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 28 / 32

Ikinci denklemdeki N yerine sırayla N − 1, N − 2, . . ., 2koyarak

h(N) = 2h(N − 1) + 1

h(N − 1) = 2h(N − 2) + 1

h(N − 2) = 2h(N − 3) + 1

. . .

h(2) = 2h(1) + 1

elde ederiz.

Page 29: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Örnek (3)

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 29 / 32

Ikinci denklemi 2 ile, üçüncü denklemi 4= 22 ile, . . . çarparsak,

h(N) = 2h(N − 1) + 1

2h(N − 1) = 22h(N − 2) + 2

22h(N − 2) = 23h(N − 3) + 22

. . .

2N−1h(2) = 2Nh(1) + 2N−1

olur. Esitlikleri taraf tarafa topladıgımızda, h(N − 1), h(N − 2),. . ., h(2) sadelesir ve geriye

h(N) = 2Nf(1) + 2N−1 + 2N−2 + . . .+ 1

h(N) =N∑

i=0

2i

h(N) = 2N+1 − 1 ∈ O(2N )

Page 30: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Temel Teorem

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 30 / 32

Page 31: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Özyinelemeli Problem Bölümü

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 31 / 32

N büyüklügünde bir problemi özyinelemeli çözmek için

N / b büyüklügünde a tane alt problem çözüyor bu alt problemlerin çözümlerini de O(Nd) zamanda

birlestirip ana probleme çözüm buluyorsak

ana problemi çözmek için harcayacagımız zaman

T (N) = aT (N/b) +O(Nd)

Page 32: Bölüm 1. Algoritma Analizi - haydut.isikun.edu.trhaydut.isikun.edu.tr/veriyapilari-sunum/analiz.pdf · O. T. Yıldız, C && Java ile Veri Yapılarına Giris¸, Bogaziçi Üniversitesi

Temel Teorem

Büyük-O Gösterimi

YinelemesizProgramların Analizi

ÖzyinelemeliProgramların Analizi

Temel Teorem

O. T. Yıldız, C && Java ile Veri Yapılarına Giris, Bogaziçi Üniversitesi Yayınevi, 2013 32 / 32

Teorem 1 a, b ve d a > 0, b > 1, d ≥ 0 kosullarını saglayan

birer reel sayı olmak üzere,

T (N) = aT (N/b) +O(Nd)

denkleminin çözümü

T (N) =

O(Nd) eger d > logb aO(Nd logN) eger d = logb aO(N logb a) eger d < logb a

olarak verilir.