Professional Documents
Culture Documents
Algoritma Analizi
Algoritma Analizi
Algoritmalar ve analizleri
Asimptotik Notasyonlar
Byk O, Q, W Notasyonlar
Algoritma Karmakl
2
Algoritma
Bir problemi zmek iin veya bir hesaplama
yapmak iin iyi tanml, sonlu sayda, birbirini
izleyen komutlar kmesidir.
Algoritmalarn baz temel zellikleri
Giri
k
yi tanml olmas
Doru olmas
Sonlu olmas
Etkili olmas
Genel olmas
Algoritma Analizi
Teorik almalarda bilgisayar programlarnn performans ve
kaynak kullanm irdelenmektedir.
Ancak performanstan daha nemli baz kriterler
Modlerlik
Doruluk
Baklabilirlik
Fonksiyonellik
Kararllk
Kullanc dostu olma
Programlama zaman
Basitlik
Gelitirilebilirlik
Gvenilirlik
rnek I:
Dizideki saylarn toplamn bulma
return toplam;
} //Bitti-Topla
5
rnek I:
Dizideki saylarn toplamn bulma
lem
int Topla(int A[], int N) says
{ 1
int topla = 0;
return topla; 1
} //Bitti-Topla
--------
Toplam: 1 + 2N + N + 1 = 2N + 2
alma zaman: T(N) = 3N+2
N dizideki say says 6
rnek II:
Dizideki bir elemann aranmas
lem
int Arama(int A[], int N,
int sayi) { says
int i = 0; 1
if (i < N) return i; 1
else return -1; 1
} //bitti-Arama ---------
Toplam: 1+3*N+1+1 = 3L+3
7
rnek II:
Dizideki bir elemann aranmas
En iyi alma zaman nedir?
Dng sadece bir kez alt=>T(n) = 6
8
Algoritmalarn en kt durum analizi
Bir algoritmann sadece EN KT durumdaki
alma zamanna baklr. Neden?
En kt durum alma zamannda bir st snrdr ve o algoritma
iin verilen durumdan daha uzun srmeyecei garantisi verir.
9
rnek III: ie dngler
for (i=1; i<=N; i++){
for (j=1; j<=N; j++){
printf(Merhaba\n);
} //bitti-iteki for
} //bitti-dtaki for
N N N
T ( N ) 1 N N * N N 2
i 1 j 1 i 1
10
rnek IV: Matris arpm
/* ki boyutlu dizi A, B, C. Hesapla C = A*B */
for (i=0; i<N; i++) {
for (j=0; j<N; j++) {
C[i][j] = 0;
for (int k=0; k<N; k++){
C[i][j] += A[i][k]*B[k][j];
} //bitti-en iteki for
} //bitti-iteki for
} //bitti-dtaki for
N 1 N 1 N 1
T ( N ) (1 1) N N 3 2
i 0 j 0 k 0
11
rnek V: kili Arama
Problem: Sral bir dizi veriliyor ve bir sayy
aryorsunuz.
Dorusal arama T(n) = 3n+2 (En kt durum)
Daha iyisi yaplabilir mi?
.g. Aadaki sral dizide 55 saysn arayalm
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
3 8 10 11 20 50 55 60 65 70 72 90 91 94 96 99
12
rnek V: kili Arama
Dizi sralanm olduundan, dizinin ortasnda bulunan say ile
aranan sayy karlatrarak arama boyutunu yarya drlr ve
bu ekilde devam edilir.
rnek: 55i arayalm
0 1 2 3 4 7 8 11 15
3 8 10 11 20 50 55 60 65 70 72 90 91 94 96 99
( sol sa )
sol orta sa
2
0 1 2 3 4 6 7 8 11 15
3 8 10 11 20 50 55 60 65 70 72 90 91 94 96 99
13
kili arama (devam)
0 1 2 3 4 5 6 7 8 11 15
3 8 10 11 20 50 55 60 65 70 72 90 91 94 96 99
0 1 2 3 4 5 6 7 8 11 15
3 8 10 11 20 50 55 60 65 70 72 90 91 94 96 99
Elendi
orta
55i bulduk Baarl arama
57yi aradmzda, bir sonraki ilemde baarsz bir ekilde
sonlanacak.
14
kili Arama (devam)
< hedef ? > hedef
sol sa
15
kili Arama - Algoritma
// Aranan saynn indeksini dndrr aranan say bulunamazsa -1 dndrr.
int ikiliArama(int A[], int N, int sayi){
sol = 0;
sag = N-1;
seersiniz?
imdi hangi
algoritmay
seersiniz?
Running Time
19
Byk-Oh(Big-Oh) Notasyonu:
Asimptotik st Snr
T(n) = O(f(n))
c ve n0 eklinde pozitif sabitlerimiz olduunu dnelim. n >= n0
ifadesini salayan tm deerler iin T(n) <= c*f(n) dir.
c*f(n)
alma Zaman
T(n)
n0 Eleman says N
24
Karlalan Genel Fonksiyonlar (devam)
25
rnek: Maksimum Alt Dizi Toplam
26
zm-1 Kaba Kuvvet Algoritmas
30
W Notasyonu: Asimptotik Alt Snr
T(n) = W (f(n))
c ve n0 eklinde pozitif sabitlerimiz olduunu dnelim. n >= n0
ifadesini salayan tm deerler iin T(n) >= c*f(n) dir.
T(n)
alma Zaman
c*f(n)
n0 Eleman says N
c2*f(n)
alma zaman
T(n)
c1*f(n)
n0 Eleman Says N
33
Ska Yaplan Hatalar
34
N tane pozitif tam saynn toplamn
bulan algoritmann karmakl nedir.
N tane pozitif tam saynn toplamn
bulan algoritmann karmakl nedir.
N tane pozitif tam saynn toplamn
bulan algoritmann karmakl nedir.
Faktriyel hesab yapan fonksiyonun
karmakl nedir?
Faktriyel hesab yapan fonksiyonun
karmakl nedir?