İleri Algoritma Analizi Ders4: İteratif algoritmaların işlem zamanı analizi Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Introduction to Algorithms (2nd edition) by Cormen, Leiserson, Rivest & Stein Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Seçmeli sıralama algoritması Dizinin minimum elemanını bul. Dizinin ilk elemanı ile minimum elemanın yerini değiştir. İlk eleman dışındaki tüm elemanlara aynı işlemi tekrar tekrar uygula.
Sözde kod n-1 iterasyon for i←1 to n-1 for j← i+1 to n n-i iterasyon if A[i] > A[j] then A[i]↔A[j] n-i iterasyon
İşlem zamanı analizi i=1 için n-1, i=2 için n-2, … , i=n-1 için 1 karşılaştırma yapılır.
Bubble Sort (Kabarcık Sıralama) Dizinin baştan sona ardışık 2 terimini karşılaştır. Sırası düzgün olmayan (küçük solda, büyük sağda değilse) ikililerin yerlerini değiştir. İlk 2 adımı n-1 defa tekrar et (Her tekrara bir iterasyon denir). İlk iterasyondan sonra en büyük eleman dizinin en sonunda olacaktır. Bir iterasyonda hiç yerdeğişme olmazsa sıralanmış olur ve işlem durdurulabilir.
Bubble Sort: Sözde kod En kötü durum n-1 iterasyon for i←1 to n-1 Switch←False for j←1 to n-i if A[j] > A[j+1] then A[j] ↔A[j+1] Switch = True if Not Switch then break n-i iterasyon
Bubble Sort Analizi Seçmeli sıralamada olduğu gibi:
Copyright © The MIT press
Copyright © MIT Press,. Permission required for reproduction or display.
Eklemeli Sıralama çalışma süresi n n T(n) = c1n + c2(n-1) + c4(n-1) + c5 Σ tj + c6 Σ(tj -1) j=2 j=2 n + c7 Σ (tj – 1) + c8 (n-1). j=2 *tj sayısı 5. satırdaki while döngüsünün j için kaç defa çalıştığını göstermektedir.
En iyi durum Dizi sıralanmış verilmişse (artan sıra ile) T(n) = c1n + c2(n-1) + c4(n-1) + c5(n-1) +c8(n-1)
Σ j = (n (n + 1) / 2) – 1 Σ ( j - 1) = n (n - 1) / 2 En kötü durum Dizi ters sıralı verilmişse (azalan sıra ile) n Σ j = (n (n + 1) / 2) – 1 j = 2 Σ ( j - 1) = n (n - 1) / 2
En kötü durum T(n) = c1n + c2(n-1) + c4(n-1) + c5((n (n+1) /2)-1) + c6(n(n-1)/2) + c7(n(n-1)/2)+ c8(n-1) = ((c5/2)+(c6/2)+(c7/2) n2 + (c1+c2+c4+ (c5/2)-(c6/2)-(c7/2)+c8) n – (c2+c4+c5+c8). a n2 + bn + c ( n in 2. dereceden fonksiyonudur)
Insertion Sort: Ortalama işlem zamanı analizi Varsayım: Her i için i. Sayı sıralanmış i-1 sayıdan oluşan diziye eklendiğinde var olan i yerden her birine gelme olasılığı eşit olsun. Tam olarak i yer var, olasılıklar da eşit ise tüm olasılıklar 1/i olur. Her yer değişme için bir karşılaştırma gerekir.
Insertion Sort (Ortalama durum) Sayının k-1 pozisyon yer atlaması için k karşılaştıma gerekir. İstisna: İlk ve 2. pozisyona gelmesi için i-1 karşılaştırma gereklidir. Pozisyon 1 2 3 ... i-2 i-1 i ... ... i-1 i-1 i-2 3 2 1 Bu pozisyona gelmesi için gerekli karşılaştırmalar.
Insertion Sort (Ortalama durum) Ortalama karşılaştırma sayısı Çözüm
Insertion Sort (Ortalama durum) Toplam ortalama:
Soru: Aşağıda sözde kodu verilen algoritmanın işlem zamanını hesaplayınız: i←n count←0 while(i>0) for j←0 to i-1 count←count+1 i←floor(i/2)
Çözüm: Hesaplamayı kolay yapabilmek n=2k olduğunu varsayalım Çözüm: Hesaplamayı kolay yapabilmek n=2k olduğunu varsayalım. i=n için for döngüsü n defa, i=n/2 için for döngüsü n/2 defa, i=n/4 için for döngüsü n/4 defa,…i=1 için for döngüsü 1 defa çalışacaktır. Yani T(n)=2k+2k-1+…1=2k+1-1=2n-1=Ɵ(n)