You are on page 1of 31

ALGORTMA VE PROGRAMLAMA

II II
G E d l GVENOLU r.Gr.Erdal GVENOLU
Maltepe niversitesi
Bilgisayar Mhendislii Blm
Hafta 2
ALGORTMAANALZ ALGORTMAANALZ
2
ALGORTMA ANALZ ALGORTMA ANALZ
Neden algoritmay analiz ederiz?
Algoritmann performansn lmek iin
Farkl algoritmalarla karlatrmak iin
Daha iyisi mmkn m? Olabileceklerin en iyisi mi?
zelliklerinin analizi
Algoritmann alma zaman go t a a a a a
Hafzada kaplad alan
KARMAIKLIK: ALGORTMA PERFORMANSI VE KARMAIKLIK: ALGORTMA PERFORMANSI VE
LME YNTEM LME YNTEM
3
LME YNTEM LME YNTEM
Bir algoritmann performans i ve d faktrlere baldr.

Algoritma verimlilii:
l t k i i k
D
Girdi verisinin bykl
Bil i h altrmak iin gereken zaman
altrmak iin gereken yer
(bellek alan)
Bilgisayarn hz
Derleyicinin kalitesi
Karmaklk i faktrlerle ve daha ok da zamanla ilgilidir.
ALIMA ZAMANI ANALZ ALIMA ZAMANI ANALZ
4
N N N N
Bir algoritmann performans i ve d faktrlere baldr.
Algoritma 1 T
1
(N)=1000N
Algoritma 2 T
2
(N)=N
2
N giri verisi alma zaman T
1
(n)
N giri verisi
l T ( ) alma zamanT
2
(n)
10001010101000111110001100011
10101010101010101001000101010
10001000000000000111101010001
11010
ALIMA ZAMANI ANALZ ALIMA ZAMANI ANALZ
5
N N N N
T
(
N
)
Algoritma 2
a

z
a
m
a
n

a
l

m
a
Algoritma 1
Gi i i i N Giri verisi N
1000
ALIMA ZAMANI ANALZ ALIMA ZAMANI ANALZ
6
N N N N
N T1 T2
10 10
-2
sec 10
-4
sec
100 10
-1
sec 10
-2
sec
1000 1 sec 1 sec 1000 1 sec 1 sec
10000 10 sec 100 sec
100000 100 sec 10000 sec
N deerinin 1000den kk olduu durumlarda iki algoritma
arasndaki alma zaman ihmal edilebilir byklktedir.
BYME HIZI VE BYK O (BIG O) BYME HIZI VE BYK O (BIG O)
NOTASYONU NOTASYONU
7
NOTASYONU NOTASYONU
Byme hz bir algoritmann performansn yanstan en iyi
gstergedir.
B k O b h i Bi l i Byk-O notasyonu byme hzn gsterir. Bir algoritmann
performansn en iyi tanmlayan matematiksel bir formldr
ve algoritmann i detaylarna baklarak elde edilir ve algoritmann i detaylarna baklarak elde edilir.
Byk-O girdi verisinin bykln gsteren bir N
parametresine dayanan bir fonksiyondur. parametresine dayanan bir fonksiyondur.
rnein n deerine bal olarak performans (sabit a, b, c deerleri
iin) an
2
+ bn + c olan bir algoritmann performans O(N
2
)dir
N deeri arttka N
2
terimi baskn olaca iin byk-O
notasyonunda sadece baskn olan terim kullanlr.
BYME HIZI VE BYK O (BIG O) BYME HIZI VE BYK O (BIG O)
NOTASYONU NOTASYONU
8
NOTASYONU NOTASYONU
Bir algoritmann alma sresi
T(N)=O(f(n))
O bir fonksiyon deil,
sadece gsterimdir sadece gsterimdir.
BYME HIZI VE BYK O (BIG O) BYME HIZI VE BYK O (BIG O)
NOTASYONU NOTASYONU
9
NOTASYONU NOTASYONU
O notasyonunda yazarken en basit ekilde yazarz.
rnein
3n
2
+2n+5 = O(n
2
)
Aadaki gsterimlerde dorudur fakat kullanlmaz.
3n
2
+2n+5 = O(3n
2
+2n+5)
3n
2
+2n+5 = O(n
2
+n)
3n
2
+2n+5 = O(3n
2
) 3n
2
+2n+5 = O(3n
2
)
BYK O (BIG O) NASIL HESAPLANIR? BYK O (BIG O) NASIL HESAPLANIR?
10
BYK O (BIG O) NASIL HESAPLANIR? BYK O (BIG O) NASIL HESAPLANIR?
Bir program kodunun zaman karmakln hesaplamak iin 5
Kural;
1 Dngler
2 ie Dngler
3 Ardk deyimler
4 If-then-else deyimleri
5 Logaritmik karmaklk g
1. DNGLER 1. DNGLER
11
1. DNGLER 1. DNGLER
Bir dngnn alma zaman en ok dng iindeki deyimlerin
alma zamannn iterasyon saysyla arplmas kadardr. alma zamannn iterasyon saysyla arplmas kadardr.
for (i=1; i<=n; i++)
{
+ 2
Sabit zaman
n defa
alr
m = m + 2;
}
Sabit zaman
alr
Toplam zaman = sabit c * n = cn = O(N)
2. E DNGLER 2. E DNGLER
12
2. E DNGLER 2. E DNGLER
teki analiz yaplr. Toplam zaman btn dnglerin
alma saylarnn arpmna eittir
for (i=1; i<=n; i++) {
D d i d
for (j=1; j<=n; j++) {
k = k+1;
}
D dng
n defa
alr
i dng
n defa
alr
}
}
Sabit zaman
Toplam zaman = c * n * n * = cn
2
= O(N
2
)
3. ARDIIK DEYMLER 3. ARDIIK DEYMLER
13
3. ARDIIK DEYMLER 3. ARDIIK DEYMLER
Her deyimin zaman birbirine eklenir.
x = x +1; Sabit zaman x = x +1;
for (i=1; i<=n; i++) {
m = m + 2;
}
n defa
alr
Sabit zaman
Sabit zaman
}
for (i=1; i<=n; i++) {
for (j=1; j<=n; j++) {
i dng
n defa
D dng
d f
k = k+1;
}
}
n defa
alr
n defa
alr
Sabit zaman
toplam zaman = c
0
+ c
1
n + c
2
n
2
= O(N
2
)
}
4. IF 4. IF--THEN THEN--ELSE DEYMLER ELSE DEYMLER
14
4. IF 4. IF THEN THEN ELSE DEYMLER ELSE DEYMLER
En kt alma zaman:test zamanna then veya else
ksmndaki alma zamannn hangisi bykse o ksm
eklenir.
if (depth( ) != otherStack.depth( ) ) {
t f l
then:
test:
bit return false;
}
else {
for (int n = 0; n < depth( ); n++) {
then:
sabit
sabit
for (int n = 0; n < depth( ); n++) {
if (!list[n].equals(otherStack.list[n]))
return false;
}
else:
(sabit +sabit) * n
Dier if :
sabit+sabit
(else yok)
}
}
(else yok)
Toplam zaman = c
0
+ c
1
+ (c
2
+ c
3
) * n = O(N) Toplam zaman c
0
c
1
(c
2
c
3
) n O(N)
5. LOGARTMK KARMAIKLIK 5. LOGARTMK KARMAIKLIK
15
5. LOGARTMK KARMAIKLIK 5. LOGARTMK KARMAIKLIK
Problemin bykln belli oranda(genelde )
azaltmak iin sabit bir zaman harcanyorsa bu algoritma
O(log N)dir. O(log N) dir.
rnek algoritma (binary search): rnek algoritma (binary search):
N sayfal bir szlkten bir szck arama
Szln orta ksmna baklr
Szck ortaya gre sada m solda m kald
bulunur?
B i l ld k b l k d Bu ilem sa veya solda szck bulunana kadar
tekrarlanr
O NOTASYONU O NOTASYONU RNEK 1 RNEK 1
16
O NOTASYONU O NOTASYONU RNEK 1 RNEK 1
3n
2
+2n+5 = O(n
2
) ifadesinin doru olup olmadn
ispatlaynz. ispatlaynz.
10 n
2
= 3n
2
+ 2n
2
+ 5n
2
k i i l
10 n = 3n + 2n + 5n
3n
2
+ 2n + 5 for n 1
zm kmesini salayan
ka tane n
0
ve c cifti olduu
nemli deildir. Tek bir ift
c = 10, n
0
= 1
olmas notasyonun doruluu
iin yeterlidir.
O NOTASYONU O NOTASYONU RNEK 2 RNEK 2
17
O NOTASYONU O NOTASYONU RNEK 2 RNEK 2
Fonksiyonlarn harcadklar zamanlar O notasyonuna gre yaznz.
f1(n) = 10 n + 25 n
2
f2(n) = 20 n log n + 5 n
f3(n) = 12 n log n + 0.05 n
2
O(n
2
)
O(n log n)
( ) g
f4(n) = n
1/2
+ 3 n log n
O(n log n)
O(n
2
)
O(n log n)
SIK KULLANILAN BYME HIZLARI SIK KULLANILAN BYME HIZLARI
18
SIK KULLANILAN BYME HIZLARI SIK KULLANILAN BYME HIZLARI
Zaman karmakl rnek
O(1) sabit Bal listeye ilk eleman olarak ekleme
yapma
O(log N) log Sral bir dizide bir eleman arama
O(N) lineer Sral olmayan bir dizide bir eleman arama O(N) lineer Sral olmayan bir dizide bir eleman arama
O(N log N) n-log-n N eleman bl-parala-yut yntemiyle
sralama
O(N
2
) ikinci dereceden Bir grafikte iki dm arasndaki en ksa
yolu bulma
O(N
3
)
nc dereceden
Ardarda gerekletirilen lineer denklemler
O(2
N
) ssel Hanoinin Kuleleri problemi O(2 ) ssel Hanoi nin Kuleleri problemi
BYME HIZLARI BYME HIZLARI
19
BYME HIZLARI BYME HIZLARI
O(N
2
)
O(Nlog N)
K bi i i N
2
Ksa bir sre iin N
2
NlogNden daha iyi
N
BR PROGRAMIN ASIL ALIMA ZAMANINI BR PROGRAMIN ASIL ALIMA ZAMANINI
HESAPLAMA(RNEK) HESAPLAMA(RNEK)
20
Al i l i li i k l d h i i l l bil i l bi
HESAPLAMA (RNEK) HESAPLAMA (RNEK)
Algoritma ve algoritma analizi kavramlarnn daha iyi anlalabilmesi amacyla bir
problemin zm iin tasarlanm olan Ave B algoritman ele alalm. Bu
algoritmalarn zelliklerinin belirlendiini, analizlerinin yapldn ve aadaki algoritmalarn zelliklerinin belirlendiini, analizlerinin yapldn ve aadaki
sonularn elde edildiini dnelim.
Yukarda Ave B algoritmalar iin geerli olan zaman formlleri verilmitir. N, girdi
boyutunu ifade etmektedir. Her iki algoritma iin harcanan zaman farkldr. Girdi y g
boyutuna gre deiiklik gstermektedir.
BR PROGRAMIN ASIL ALIMA ZAMANINI BR PROGRAMIN ASIL ALIMA ZAMANINI
HESAPLAMA(RNEK) HESAPLAMA(RNEK)
21
A l i l i di b h d kl l di
HESAPLAMA (RNEK) HESAPLAMA (RNEK)
A ve B algoritmalarnn girdi boyutuna gre harcadklar zamanlarn diyagram
ekil de gsterilmitir.
BR PROGRAMIN ASIL ALIMA ZAMANINI BR PROGRAMIN ASIL ALIMA ZAMANINI
HESAPLAMA(RNEK) HESAPLAMA(RNEK)
22
A l i l h d kl l d b l d l k
HESAPLAMA (RNEK) HESAPLAMA (RNEK)
A ve B algoritmalarnn harcadklar zamanlar gz nnde bulundurularak,
analizleri aada ayr ayr yaplmtr.
BR PROGRAMIN ASIL ALIMA ZAMANINI BR PROGRAMIN ASIL ALIMA ZAMANINI
HESAPLAMA(RNEK) HESAPLAMA(RNEK)
23
A l i l h d kl l d b l d l k
HESAPLAMA (RNEK) HESAPLAMA (RNEK)
A ve B algoritmalarnn harcadklar zamanlar gz nnde bulundurularak,
analizleri aada ayr ayr yaplmtr.
RNEKLER RNEKLER
24
1 A d bi di i i i ik l b l k ll i
RNEKLER RNEKLER
1. Aada bir dizinin aritmetik ortalamasn bulan ve sonucu kullancya geri
dndren bulortalama() adl fonksiyonun kodu verilmitir. Bu fonksiyonun
yrtme zamann gsteren T(n) bantsn elde ediniz?
RNEKLER RNEKLER
25
RNEKLER RNEKLER
RNEKLER RNEKLER
26
RNEKLER RNEKLER
RNEKLER RNEKLER
27
RNEKLER RNEKLER
RNEKLER RNEKLER
28
RNEKLER RNEKLER
RNEKLER RNEKLER
29
RNEKLER RNEKLER
RNEKLER RNEKLER
30
RNEKLER RNEKLER
RNEKLER RNEKLER
31
RNEKLER RNEKLER

You might also like