Professional Documents
Culture Documents
Giriş
Algoritma Analizi
• Neden algoritmayı analiz ederiz?
– Algoritmanın performansını ölçmek için
– Farklı algoritmalarla karşılaştırmak için
– Daha iyisi mümkün mü? Olabileceklerin en iyisi mi?
• Özelliklerinin analizi
– Algoritmanın çalışma zamanı
– Hafızada kapladığı alan
2
Karmaşıklık: Algoritma performansı
ölçme yöntemi
İç Dış
Algoritma verimliliği: • Girdi verisinin
• Çalıştırmak için gereken büyüklüğü
zaman • Bilgisayarın hızı
• Çalıştırmak için gereken • Derleyicinin kalitesi
yer (bellek alanı)
3
Çalışma Zamanı Analizi
Algoritma 1 T1(N)=1000N
Algoritma 2 T2(N)=N2
Algoritma 1
N giriş verisi
100010101010001111100011000111010
101010101010100100010101010001000
Çalışma zamanıT2(n)
00000000011110101000111010
Algoritma 2 4
Çalışma Zamanı Analizi
Çalışma zamanı T(N)
Algoritma 2
Algoritma 1
Giriş verisi N
1000
5
Çalışma Zamanları Özeti
N T1 T2
7
O Notasyonu- Asimtotik Üst Limit
• Bir algoritmanın çalışma süresi
T(N)=O(f(n))
O bir fonksiyon değil,
sadece gösterimdir.
9
Sık Kullanılan Büyüme hızları
O(N2)
O(Nlog N)
Zaman
11
Bir programın asıl çalışma zamanını
hesaplama (örnek)
• Bir işlem için harcanan zaman 10ms olsun(bir veri üzerinde yapılan tek bir işlem)
• 1000 veriyi işlemek için programın ne kadar çalışması gerekir? Programın çalışma
zamanı aşağıdaki gibi verilmişse bu değer nasıl hesaplanır?
– log10 N
– N
– N log10 N
– N2
– N3
12
büyük-O nasıl hesaplanır?
13
Kural 1: Döngüler
14
Kural 2:İç içe Döngüler
15
Kural 3: Ardışık deyimler
16
Kural 4: If-then-else deyimleri
En kötü çalışma zamanı:test zamanına then veya
else kısmındaki çalışma zamanının hangisi
büyükse o kısım eklenir.
17
Kural 5: Logaritmik karmaşıklık
Problemin büyüklüğünü belli oranda(genelde ½)
azaltmak için sabit bir zaman harcanıyorsa bu
algoritma O(log N)’dir.
20
O notasyonu- Örnek 3
• Fonksiyonların harcadıkları zamanları O notasyonuna göre
yazınız.
• f1(n) = 10 n + 25 n2
• f2(n) = 20 n log n + 5 n • O(n2)
• f3(n) = 12 n log n + 0.05 n2 • O(n log n)
• f4(n) = n1/2 + 3 n log n
• O(n2)
• O(n log n)
21
Analiz
Üst limit
Alt limit
22
Analiz
• Çalışma zamanının kesin olarak belirlenmesi zordur
– Giriş verilerine bağlı olan en iyi durum (best case)
– Ortalama durum (Average case), hesaplanması zordur
– En kötü durum analizi, hesaplanması diğerlerine göre kolaydır
23
En iyi, ortalama, en kötü durum
karmaşıklığı
24
Ω Notasyonu- Asimtotik Alt Limit
O notasyonun tam tersidir.
Her durumda T(N) ≥ c f(n) ve N ≥ n0 koşullarını
sağlayan pozitif, sabit c ve n0 değerleri bulunabiliyorsa
T(N)=Ω (f(n)) ifadesi doğrudur. f(n)
n0
25
Ω notasyonu- Örnek 1
• 7n2+3n+5 = O(n4)
• 7n2+3n+5 = O(n3)
• 7n2+3n+5 = O(n2)
• 7n2+3n+5 = Ω (n2)
• 7n2+3n+5 = Ω (n)
• 7n2+3n+5 = Ω (1)
26
Algoritma 1
28
Algoritma 3
If( condition )
S1
Else
S2 Çalışma zamanı
max_calışma_zamanı(S1,S2)
29
Algoritma 4
• int binary search(A,key,N)
• low=0, high=N-1
• while(low≤ high)
• mid=(low+high)/2
• if(A[mid]<key)
• low=mid+1
• if(A[mid]>key)
• high=mid-1; Her bir iterasyondan
• if(A[mid]=key)
• return mid sonra, arama
• Return not found yapılacak eleman
sayısı logaritmik
olarak azalmaktadır.
Çalışma süresi
O(logN)’dir.
30
Algoritma 5
• int binarysearch(A,key,low,high)
• if (low>high)
• Return not found
• else
• mid=(low+high)/2
• if(A[mid]<key)
• Return binarysearch(A,key,mid+1,high)
• if(A[mid]>key)
• Return binary search(A,key,low,mid-1)
• if (A[mid]=key)
• Return mid
T(N)=T(N/2)+O(1)
31
Algoritma 6
MaxSubsequenceSum(const int A[], int n)
ThisSum=MaxSum=0;
for(j=0;j<N;j++)
ThisSum+=A[j];
if (ThisSum<MaxSum)
MaxSum=ThisSum;
else if(ThisSum<0)
ThisSum=0;
Return MaxSum;
32
Performans her şey demek değildir!
33