SlideShare a Scribd company logo
1 of 40
YZM 2116
Veri Yapıları
Yrd. Doç. Dr. Deniz KILINÇ
Celal Bayar Üniversitesi
Hasan Ferdi Turgutlu Teknoloji Fakültesi
Yazılım Mühendisliği
BÖLÜM - 2
Bu bölümde,
• Algoritma Analizi,
• Çalışma Zamanı Analizi
• Algoritma Analiz Türleri
• Asimptotik Notasyon,
• Big-O Notasyonu,
• Algoritmalar için “Rate of Growth” (Büyüme Hızı)
• Big-O Hesaplama Kuralları
• Big-O Avantajları
konularına değinilecektir.
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
3
• Basit tanım: Belirli bir görevi yerine getiren sonlu
sayıdaki işlemler dizisidir.
• Geniş tanım: Verilen herhangi bir sorunun çözümüne
ulaşmak için uygulanması gerekli adımların hiç bir
yoruma yer vermeksizin açık, düzenli ve sıralı bir
şekilde söz ve yazı ile ifadesidir. Algoritmayı oluşturan
adımlar özellikle basit ve açık olarak ortaya konmalıdır.
19.yy da İranlı Musaoğlu Horzumlu Mehmet (Alharezmi adını
Araplar takmıştır) problemlerin çözümü için genel kurallar
oluşturdu. Algoritma Alharezmi'nin Latince okunuşudur.
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Algoritma Nedir?
4Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Algoritmaların Sahip Olması Gereken
Özellikler
• Giriş/çıkış bilgisi
• Sonluluk
• Kesinlik
• Etkinlik
• Başarım ve performans
5Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Algoritma Analizi
• Aynı problemi (örneğin sıralama) birçok
algoritma ile (insertion, bubble, quick vs)
çözmek mümkün olduğu için algoritmalar
verimlilik (kullandıkları hafıza ve işlemi
gerçekleştirdikleri zaman) anlamında
kıyaslanmalı ve seçim buna göre yapılmalıdır.
• Bu kıyaslama algoritma analizinde çalışma
zamanı karşılaştırması olarak bilinir.
6Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Algoritma Analizi (devam…)
• Algoritma analizi yapılma nedenleri:
o Algoritmanın performansını ölçmek için
o Farklı algoritmalarla karşılaştırmak için
o Daha iyisi mümkün mü? Bu mudur en iyisi?
• Analiz edilen özellikler aşağıdaki gibidir
o Algoritmanın çalışma zamanı analizi
o Hafızada kapladığı alan analizi
7Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Çalışma Zamanı Analizi
• Çalışma zamanı analizi (karmaşıklık analizi) bir
algoritmanın (artan) “(veri) giriş” boyutuna bağlı
olarak işlem zamanının / süresinin nasıl arttığını
(değiştiğini) tespit etmek olarak tanımlanır.
• Algoritmaların işlediği sıklıkla karşılaşılan “(veri)
giriş” türleri:
o Array (boyuta bağlı)
o Polinom (derecesine bağlı)
o Matris (eleman sayısına bağlı)
o İkilik veri (bit sayısı)
o Grafik (kenar ve düğüm sayısı)
8Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Çalışma Zamanı Analizi (devam…)
• Çalışma zamanı/karmaşıklık analizi için
kullanılan başlıca yöntemler aşağıdaki gibidir:
1. Deneysel Analiz Yöntemi: Örnek problemlerde
denenmiş bir algoritmadaki hesaplama deneyimine
dayanır. Amacı, pratikte algoritmanın nasıl
davrandığını tahmin etmektir. Bilimsel yaklaşımdan
çok, uygulamaya yöneliktir. Programı yazan
programcının tekniğine, kullanılan bilgisayara,
derleyiciye ve programlama diline bağlı değişkenlik
gösterir.
2. RAM (Random Access Machine) Modeli ile Komut
Sayarak Çalışma Zamanı Analiz Yöntemi
9Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Çalışma Zamanı Analizi (devam…)
• RAM Modeli:
o RAM modeli algoritma gerçekleştirimlerini ölçmek için
kullanılan basit bir yöntemdir.
o Genel olarak çalışma zamanı veri giriş boyutu n’e bağlı
T(n) ile ifade edilir.
o Her operasyon (+,-, * =, if, call) “bir” zaman biriminde
gerçekleşir.
o Döngüler ve alt rutinler (fonksiyonlar) basit
operasyonlar ile farklı değerlendirilirler.
o RAM modelinde her bellek erişimi yine “bir” zaman
biriminde gerçekleşir.
10
Örnek 1: Dizideki sayıların toplamını bulma
int Topla(int A[], int N)
{
int toplam = 0;
for (i=0; i < N; i++){
toplam += A[i];
} //Bitti-for
return toplam;
} //Bitti-Topla
Bu fonksiyonun
yürütme zamanı ne
kadardır?
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İşlem
sayısı
1
N
N
1
--------
Toplam: 1 + N + N + 1 = 2N + 2
• Çalışma zamanı: T(N) = 2N+2
– N dizideki eleman sayısı
int Topla(int A[], int N)
{
int topla = 0;
for (i=0; i < N; i++){
topla += A[i];
} //Bitti-for
return topla;
} //Bitti-Topla
Örnek 1: Dizideki sayıların toplamını bulma
12
Örnek 2: Dizideki bir elemanın aranması
Bu fonksiyonun
yürütme zamanı
ne kadardır?
int Arama(int A[], int N,
int sayi) {
int i = 0;
while (i < N){
if (A[i] == sayi) break;
i++;
} //bitti-while
if (i < N) return i;
else return -1;
} //bitti-Arama
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
13
int Arama(int A[], int N,
int sayi) {
int i = 0;
while (i < N){
if (A[i] == sayi) break;
i++;
} //bitti-while
if (i < N) return i;
else return -1;
} //bitti-Arama
İşlem
sayısı
1
1<=L<=N
1<=L<=N
0<=L<=N
1
1
---------
Toplam: 1+3*L+1+1 = 3L+3
Örnek 2: Dizideki bir elemanın aranması
• Çalışma zamanı: T(N) = 3N+3
14Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Algoritma Analiz Türleri
• Bir algoritmanın analizi için o algoritmanın kabaca
bir polinom veya diğer zaman karmaşıklıkları
cinsinden ifade edilmesi gerekir.
• Bu ifade üzerinden veri girişindeki değişime bağlı
olarak algoritmanın best case (en az zaman alan) ve
worst case (en çok zaman alan) durumları
incelenerek algoritmalar arası kıyaslama yapılabilir.
Bu şekilde bir algoritma üç şekilde incelenebilir:
1. Worst case (en kötü)
2. Best case (en iyi)
3. Average case (ortalama)
15Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Algoritma Analiz Türleri (devam…)
• Worst case (en kötü): Algoritma çalışmasının en fazla
sürede gerçekleştiği analiz türüdür. En kötü durum, çalışma
zamanında bir üst sınırdır ve o algoritma için verilen
durumdan “daha uzun sürmeyeceği” garantisi verir. Bazı
algoritmalar için en kötü durum oldukça sık rastlanır.
Arama algoritmasında, aranan öğe genellikle dizide olmaz
dolayısıyla döngü N kez çalışır.
• Best case (en iyi): Algoritmanın en kısa sürede ve en az
adımda çalıştığı giriş durumu olan analiz türüdür. Çalışma
zamanında bir alt sınırdır.
• Average case (ortalama): Algoritmanın ortalama sürede ve
ortalama adımda çalıştığı giriş durumu olan analiz türüdür.
16Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Algoritma Analiz Türleri (devam…)
• Bu incelemeler:
• Lower Bound (i) <= Average Bound (ii) <= Upper Bound (iii)
şeklinde sıralanırlar.
• Grafiksel gösterimi aşağıdaki gibidir:
17Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Algoritma Analiz Türleri (devam…)
• Örnek 2 için en iyi, en kötü ve ortalama çalışma zamanı nedir?
int Arama(int A[], int N,
int sayi) {
int i = 0;
while (i < N){
if (A[i] == sayi) break;
i++;
} //bitti-while
if (i < N) return i;
else return -1;
} //bitti-Arama
 En iyi çalışma zamanı
o Döngü sadece bir kez çalıştı
T(n) = 6
 Ortalama çalışma zamanı
o Döngü N/2 kez çalıştı
T(n)=3*n/2+3 = 1.5n+3
 En kötü çalışma zamanı
o Döngü N kez çalıştı
T(n) = 3n+3
18
• Bir algoritmanın genelde EN KÖTÜ durumdaki
çalışma zamanına bakılır. Neden?
o En kötü durum çalışma zamanında bir üst sınırdır ve o
algoritma için verilen durumdan daha uzun sürmeyeceği
garantisi verir.
o Bazı algoritmalar için en kötü durum oldukça sık
rastlanır. Arama algoritmasında, aranan öğe genellikle
dizide olmaz dolayısıyla döngü N kez çalışır.
o Ortalama çalışma zamanı genellikle en kötü çalışma
zamanı kadardır. Arama algoritması için hem ortalama
hem de en kötü çalışma zamanı doğrusal fonksiyondur.
Algoritma En Kötü Durum Analizi
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Bir problemi çözmek için A ve B şeklinde iki algoritma
verildiğini düşünelim.
• Giriş boyutu N için aşağıda A ve B algoritmalarının
çalışma zamanı TA ve TB fonksiyonları verilmiştir.
Hangi algoritmayı
seçersiniz?
Çalışmazamanı
Giriş Boyutu (N)
Asimptotik Notasyon
20
• N büyüdüğü zaman A ve B nin çalışma zamanı:
Şimdi hangi
algoritmayı
seçersiniz?
ÇalışmaZamanı
Giriş Boyutu (N)
Asimptotik Notasyon (devam…)
21
• Asimptotik notasyon, eleman sayısı n’nin sonsuza
gitmesi durumunda algoritmanın, benzer işi yapan
algoritmalarla karşılaştırmak için kullanılır.
• Eleman sayısının küçük olduğu durumlar mümkün
olabilir fakat bu birçok uygulama için geçerli değildir.
• Verilen iki algoritmanın çalışma zamanını T1(N) ve
T2(N) fonksiyonları şeklinde gösterilir. Hangisinin
daha iyi olduğunu belirlemek için bir yol belirlememiz
gerekiyor.
– Big-O (Big O): Asimptotik üst sınır
– Big W (Big Omega): Asimptotik alt sınır
– Big Q (Big Teta): Asimptotik alt ve üst sınır
Asimptotik Notasyon (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
22
• Algoritmanın f(n) şeklinde ifade edildiğini
varsayalım.
• Algoritma, fonksiyonunun sıkı üst sınırı (tight
upper bound) olarak tanımlanır.
• Bir fonksiyonun sıkı üst sınırı genel olarak:
f(n) = O(g(n))
• şeklinde ifade edilir.
• Bu ifade n’nin artan değerlerinde
– f(n)’nin üst sınırı g(n)’dir
• şeklinde yorumlanır.
Big-O Notasyonu
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
23
• Örneğin:
f(n) = n4 + 100n2 + 10n + 50 algoritma fonksiyonunda
g(n)= n4 olur.
• “Daha açık bir ifadeyle”, n’nin artan değerlerinde f(n)
nin maksimum büyüme oranı
g(n) = n4
• O-notasyonu gösteriminde bir fonksiyonun düşük n
değerlerindeki performansı önemsiz kabul edilir.
Big-O Notasyonu (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
24
• O(g(n)) = {
– f(n): tüm n>=n0 için, 0 <= f(n)<= cg(n) olmak üzere
pozitif c ve n0 sabitleri bulunsun
• }
• Bu durumda g(n), f(n)’nin asimptotik (n sonsuza
giderken) sıkı üst sınırı olur.
• n’nin düşük değerleri ve o değerlerdeki değişim
dikkate alınmazken, no’dan büyük değerler için
algoritmanın büyüme oranı değerlendirilir.
Big-O Notasyonu (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
25
• Dikkat edilirse, no’dan büyük değerler için c*g(n),
• f(n) için üst sınırı (asimptot) olarak görülürken,
• no öncesinde iki fonksiyonun değişimi farklı
olabilir.
Big-O Notasyonu (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
26
Büyüme Oranı (Rate of Growth)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Zaman
karmaşıklığı
Açıklama Örnek
O(1) Sabit: Veri giriş boyutundan
bağımsız gerçekleşen işlemler.
Bağlı listeye ilk eleman olarak
ekleme yapma
O(log N) Logaritmik: Problemi küçük veri
parçalarına bölen algoritmalarda
görülür.
Binary search tree veri yapısı
üzerinde arama
O(N) Lineer – doğrusal: Veri giriş
boyutuna bağlı doğrusal artan.
Sıralı olmayan bir dizide bir eleman
arama
O(N log N) Doğrusal çarpanlı logaritmik:
Problemi küçük veri parçalarına
bölen ve daha sonra bu parçalar
üzerinde işlem yapan.
N elemanı böl-parçala-yönet
yöntemiyle sıralama. Quick Sort.
O(N2) Karesel Bir grafikte iki düğüm arasındaki en
kısa yolu bulma veya Buble Sort.
O(N3) Kübik Ardarda gerçekleştirilen lineer
denklemler
O(2N) İki tabanında üssel Hanoi’nin Kuleleri problemi
27
Büyüme Oranı (Rate of Growth) (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
28
• f(n), g(n), h(n), ve p(n) pozitif tamsayılar kümesinden, pozitif
reel sayılar kümesine tanımlanmış fonksiyonlar olsun:
1. Katsayı Kuralı: f(n) , O(g(n)) ise o zaman kf(n) yine O(g(n))
olur. Katsayılar önemsizdir.
2. Toplam Kuralı: f(n), O(h(n)) ise ve g(n), O(p(n)) verilmişse
f(n)+g(n), O(h(n)+p(n)) olur. Üst-sınırlar toplanır.
3. Çarpım Kuralı: f(n), O(h(n)) ve g(n), O(p(n)) için f(n)g(n) is
O(h(n)p(n)) olur.
4. Polinom Kuralı: f(n), k dereceli polinom ise f(n) için O(nk)
kabul edilir.
5. Kuvvetin Log’u Kuralı: log(nk) için O(log(n)) dir.
Big-O Analiz Kuralları
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
29
• Programların ve algoritmaların Big-O
yaklaşımıyla analizi için aşağıdaki kurallardan
faydalanırız:
1. Döngüler (Loops)
2. İç içe Döngüler
3. Ardışık deyimler
4. If-then-else deyimleri
5. Logaritmik karmaşıklık
Big-O Hesaplama Kuralları
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Kural 1: Döngüler (Loops)
Bir döngünün çalışma zamanı, en çok döngü
içindeki deyimlerin çalışma zamanının iterasyon
sayısıyla çarpılması kadardır.
for (i=1; i<=n; i++)
{
m = m + 2;
}
Sabit zaman
n defa
çalışır
Toplam zaman = sabit c * n = cn = O(N)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
DİKKAT: Eğer bir döngünün n değeri sabit verilmişse.
Örneğin: n = 100 ise değeri O(1)’dir.
30
İçteki analiz yapılır. Toplam zaman bütün
döngülerin çalışma sayılarının çarpımına eşittir.
for (i=1; i<=n; i++) {
for (j=1; j<=n; j++) {
k = k+1;
}
} Sabit zaman
Dış döngü
n defa
çalışır
iç döngü
n defa
çalışır
Toplam zaman = c * n * n * = cn2 = O(N2)
Kural 2: İç İçe Döngüler
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 31
32
Her deyimin zamanı birbirine eklenir.
Toplam zaman = c0 + c1n + c2n2 = O(N2)
x = x +1;
for (i=1; i<=n; i++) {
m = m + 2;
}
for (i=1; i<=n; i++) {
for (j=1; j<=n; j++) {
k = k+1;
}
}
iç döngü
n defa
çalışır
Dış döngü
n defa
çalışır Sabit zaman
n defa
çalışır
Sabit zaman
Sabit zaman
Kural 3: Ardışık Deyimler
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
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.
if (depth( ) != otherStack.depth( ) ) {
return false;
}
else {
for (int n = 0; n < depth( ); n++) {
if (!list[n].equals(otherStack.list[n]))
return false;
}
}
then:
sabit
else:
(sabit +sabit) * n
test:
sabit
Diğer if :
sabit+sabit
(else yok)
Toplam zaman = c0 + c1 + (c2 + c3) * n = O(N)
Kural 4: If Then Else Deyimleri
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 33
Problemin büyüklüğünü belli oranda(genelde ½)
azaltmak için sabit bir zaman harcanıyorsa bu
algoritma O(log N)’dir.
for(i=1; i<=n;)
i = i*2;
• kod parçasında n döngü sayısı i = i*2 den dolayı her seferinde
yarıya düşer.
• Loop’un k kadar döndüğünü varsayarsak;
o k adımında 2i = n olur.
o Her iki tarafın logaritmasını alırsak;
 ilog2 = logn ve i = log n olur.
o i’ye bağlı olarak (problemi ikiye bölen değişken!)
Kural 5: Logaritmik Karmaşıklık
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 34
Kural 5: Logaritmik Karmaşıklık (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Örneğin: Binary Search (İkili arama) algoritması
kullanılarak bir sözlükte arama:
o Sözlüğün orta kısmına bakılır.
o Sözcük ortaya göre sağda mı solda mı kaldığı bulunur?
o Bu işlem sağ veya solda sözcük bulunana kadar
tekrarlanır.
• bu tarz bir algoritmadır. Bu algoritmalar genel olarak
“divide and conquer (böl ve yönet)” yaklaşımı ile
tasarlanmışlardır. Bu yaklaşımla tasarlanan olan
örnek sıralama algoritmaları:
o Merge Sort and Quick Sort.
35
36
• Sabitler göz ardı edilirler çünkü
o Donanım, derleyici, kod optimizasyonu vb. nedenlerden
dolayı bir komutun çalışma süresi her zaman farklılık
gösterebilir. Amacımız bu etkenlerden bağımsız olarak
algoritmanın ne kadar etkin olduğunu ölçmektir.
o Sabitlerin atılması analizi basitleştirir. 3.2n2 veya 3.9n2
yerine sadece n2’ye odaklanırız.
• Algoritmalar arasında kıyaslamayı basit tek bir değere
indirger.
• Küçük n değerleri göz ardı edilerek sadece büyük n
değerlerine odaklanılır.
Big-O Avantajları
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
37
• Özetle: Donanım, işletim sistemi, derleyici ve
algoritma detaylarından bağımsız, sadece büyük n
değerlerine odaklanıp, sabitleri göz ardı ederek daha
basit bir şekilde algoritmaları analiz etmemize ve
karşılaştırmamızı sağlar.
• RAM’den O(n)’ dönüşüm:
o 4n2 - 3n log n + 17.5 n - 43 n⅔ + 75 
o n2 – n log n + n - n⅔ + 1  sabitleri atalım
o n2  sadece büyük n değerlerini alalım
o O(n2)
Big-O Avantajları (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
38
• Aşağıdaki fonksiyonların karmaşıklıklarını Big O
notasyonunda gösteriniz.
o f1(n) = 10 n + 25 n2
o f2(n) = 20 n log n + 5 n
o f3(n) = 12 n log n + 0.05 n2
o f4(n) = n1/2 + 3 n log n
Çalışma
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İYİ ÇALIŞMALAR…
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Yararlanılan Kaynaklar
• Ders Kitabı:
• Data Structures through JAVA, V.V.Muniswamy
• Yardımcı Okumalar:
• Data Structures and Algorithms in Java, Narashima
Karumanchi
• Data Structures, Algorithms and Applications in Java,
Sartaj Sahni
• Algorithms, Robert Sedgewick
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

More Related Content

What's hot

Ayrık yapılar algoritmalar
Ayrık yapılar algoritmalarAyrık yapılar algoritmalar
Ayrık yapılar algoritmalarEmrah Gürcan
 
Yzm 2116 Bölüm 7 - Tree ve Binary tree - İkili Ağaç
Yzm 2116  Bölüm 7 - Tree  ve Binary tree - İkili AğaçYzm 2116  Bölüm 7 - Tree  ve Binary tree - İkili Ağaç
Yzm 2116 Bölüm 7 - Tree ve Binary tree - İkili AğaçDeniz KILINÇ
 
Yzm 2116 Bölüm 11 - Graph - Çizge
Yzm 2116   Bölüm 11 - Graph - ÇizgeYzm 2116   Bölüm 11 - Graph - Çizge
Yzm 2116 Bölüm 11 - Graph - ÇizgeDeniz KILINÇ
 
Siralama algoritmalari ileri algoritma analizi
Siralama algoritmalari   ileri algoritma analiziSiralama algoritmalari   ileri algoritma analizi
Siralama algoritmalari ileri algoritma analiziVeysi Ertekin
 
Bilgisayar Mimarisi 09, Feza BUZLUCA
Bilgisayar Mimarisi 09, Feza BUZLUCABilgisayar Mimarisi 09, Feza BUZLUCA
Bilgisayar Mimarisi 09, Feza BUZLUCAFeza BUZLUCA
 
Clustering Analysis DBSCAN & SOM
Clustering Analysis DBSCAN & SOMClustering Analysis DBSCAN & SOM
Clustering Analysis DBSCAN & SOMÖmer Can Koç
 
Meta-Learning with Memory Augmented Neural Networks
Meta-Learning with Memory Augmented Neural NetworksMeta-Learning with Memory Augmented Neural Networks
Meta-Learning with Memory Augmented Neural Networks홍배 김
 
Bilgisayar Mimarisi 06, Feza BUZLUCA
Bilgisayar Mimarisi 06, Feza BUZLUCABilgisayar Mimarisi 06, Feza BUZLUCA
Bilgisayar Mimarisi 06, Feza BUZLUCAFeza BUZLUCA
 
Feature Engineering
Feature EngineeringFeature Engineering
Feature EngineeringHJ van Veen
 
Introduction to prolog
Introduction to prologIntroduction to prolog
Introduction to prologHarry Potter
 
Bilgisayar Mimarisi 02, Feza BUZLUCA
Bilgisayar Mimarisi 02, Feza BUZLUCABilgisayar Mimarisi 02, Feza BUZLUCA
Bilgisayar Mimarisi 02, Feza BUZLUCAFeza BUZLUCA
 
Asymptotic analysis
Asymptotic analysisAsymptotic analysis
Asymptotic analysisSoujanya V
 
Bilgisayar Mimarisi 07, Feza BUZLUCA
Bilgisayar Mimarisi 07, Feza BUZLUCABilgisayar Mimarisi 07, Feza BUZLUCA
Bilgisayar Mimarisi 07, Feza BUZLUCAFeza BUZLUCA
 
Lecture 1 graphical models
Lecture 1  graphical modelsLecture 1  graphical models
Lecture 1 graphical modelsDuy Tung Pham
 
Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networksYunjey Choi
 
Importance of Algorithm
Importance of AlgorithmImportance of Algorithm
Importance of AlgorithmRakib Hossain
 
ELM: Extreme Learning Machine: Learning without iterative tuning
ELM: Extreme Learning Machine: Learning without iterative tuningELM: Extreme Learning Machine: Learning without iterative tuning
ELM: Extreme Learning Machine: Learning without iterative tuningzukun
 

What's hot (20)

Ayrık yapılar algoritmalar
Ayrık yapılar algoritmalarAyrık yapılar algoritmalar
Ayrık yapılar algoritmalar
 
Yzm 2116 Bölüm 7 - Tree ve Binary tree - İkili Ağaç
Yzm 2116  Bölüm 7 - Tree  ve Binary tree - İkili AğaçYzm 2116  Bölüm 7 - Tree  ve Binary tree - İkili Ağaç
Yzm 2116 Bölüm 7 - Tree ve Binary tree - İkili Ağaç
 
Yzm 2116 Bölüm 11 - Graph - Çizge
Yzm 2116   Bölüm 11 - Graph - ÇizgeYzm 2116   Bölüm 11 - Graph - Çizge
Yzm 2116 Bölüm 11 - Graph - Çizge
 
Siralama algoritmalari ileri algoritma analizi
Siralama algoritmalari   ileri algoritma analiziSiralama algoritmalari   ileri algoritma analizi
Siralama algoritmalari ileri algoritma analizi
 
Bellekler
BelleklerBellekler
Bellekler
 
Bilgisayar Mimarisi 09, Feza BUZLUCA
Bilgisayar Mimarisi 09, Feza BUZLUCABilgisayar Mimarisi 09, Feza BUZLUCA
Bilgisayar Mimarisi 09, Feza BUZLUCA
 
Divide & conquer
Divide & conquerDivide & conquer
Divide & conquer
 
Clustering Analysis DBSCAN & SOM
Clustering Analysis DBSCAN & SOMClustering Analysis DBSCAN & SOM
Clustering Analysis DBSCAN & SOM
 
Meta-Learning with Memory Augmented Neural Networks
Meta-Learning with Memory Augmented Neural NetworksMeta-Learning with Memory Augmented Neural Networks
Meta-Learning with Memory Augmented Neural Networks
 
Bilgisayar Mimarisi 06, Feza BUZLUCA
Bilgisayar Mimarisi 06, Feza BUZLUCABilgisayar Mimarisi 06, Feza BUZLUCA
Bilgisayar Mimarisi 06, Feza BUZLUCA
 
Feature Engineering
Feature EngineeringFeature Engineering
Feature Engineering
 
Activation function
Activation functionActivation function
Activation function
 
Introduction to prolog
Introduction to prologIntroduction to prolog
Introduction to prolog
 
Bilgisayar Mimarisi 02, Feza BUZLUCA
Bilgisayar Mimarisi 02, Feza BUZLUCABilgisayar Mimarisi 02, Feza BUZLUCA
Bilgisayar Mimarisi 02, Feza BUZLUCA
 
Asymptotic analysis
Asymptotic analysisAsymptotic analysis
Asymptotic analysis
 
Bilgisayar Mimarisi 07, Feza BUZLUCA
Bilgisayar Mimarisi 07, Feza BUZLUCABilgisayar Mimarisi 07, Feza BUZLUCA
Bilgisayar Mimarisi 07, Feza BUZLUCA
 
Lecture 1 graphical models
Lecture 1  graphical modelsLecture 1  graphical models
Lecture 1 graphical models
 
Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networks
 
Importance of Algorithm
Importance of AlgorithmImportance of Algorithm
Importance of Algorithm
 
ELM: Extreme Learning Machine: Learning without iterative tuning
ELM: Extreme Learning Machine: Learning without iterative tuningELM: Extreme Learning Machine: Learning without iterative tuning
ELM: Extreme Learning Machine: Learning without iterative tuning
 

Similar to Yzm 2116 - Bölüm 2 (Algoritma Analizi)

Esnek Atölye Tipi Çizelgeleme Problemleri için Bir Melez Harmoni Arama Algori...
Esnek Atölye Tipi Çizelgeleme Problemleri için Bir Melez Harmoni Arama Algori...Esnek Atölye Tipi Çizelgeleme Problemleri için Bir Melez Harmoni Arama Algori...
Esnek Atölye Tipi Çizelgeleme Problemleri için Bir Melez Harmoni Arama Algori...Mustafa Tanyer
 
Akış Şemaları ( İş Analizi ve Uygulamaları Dersi)
Akış Şemaları ( İş Analizi ve Uygulamaları Dersi)Akış Şemaları ( İş Analizi ve Uygulamaları Dersi)
Akış Şemaları ( İş Analizi ve Uygulamaları Dersi)Tugba Ozen
 
Karar ağaçlari
Karar ağaçlariKarar ağaçlari
Karar ağaçlarireyhan koç
 
Log yonetimi tecrubeleri
Log yonetimi tecrubeleriLog yonetimi tecrubeleri
Log yonetimi tecrubeleriErtugrul Akbas
 
Yapay Zeka ile Araçların Yakıt Tüketimi Tahmini.pptx
Yapay Zeka ile Araçların Yakıt Tüketimi Tahmini.pptxYapay Zeka ile Araçların Yakıt Tüketimi Tahmini.pptx
Yapay Zeka ile Araçların Yakıt Tüketimi Tahmini.pptxAbbasgulu Allahverdili
 
Adaptif Penetration(Sızma) Testleri - Sunum
Adaptif Penetration(Sızma) Testleri - SunumAdaptif Penetration(Sızma) Testleri - Sunum
Adaptif Penetration(Sızma) Testleri - Sunumhamdi_sevben
 
Algoritma ve akış şemaları
Algoritma ve akış şemalarıAlgoritma ve akış şemaları
Algoritma ve akış şemalarıNesibe Yalçın
 
Ensari Elektrokrip Sunum
Ensari Elektrokrip SunumEnsari Elektrokrip Sunum
Ensari Elektrokrip Sunumeroglu
 
Roket Yazılımı Eğitimi Hafta 1
Roket Yazılımı Eğitimi Hafta 1Roket Yazılımı Eğitimi Hafta 1
Roket Yazılımı Eğitimi Hafta 1Uğurkan Ateş
 

Similar to Yzm 2116 - Bölüm 2 (Algoritma Analizi) (14)

başlıkk 11111
başlıkk 11111başlıkk 11111
başlıkk 11111
 
Algoritma
AlgoritmaAlgoritma
Algoritma
 
Esnek Atölye Tipi Çizelgeleme Problemleri için Bir Melez Harmoni Arama Algori...
Esnek Atölye Tipi Çizelgeleme Problemleri için Bir Melez Harmoni Arama Algori...Esnek Atölye Tipi Çizelgeleme Problemleri için Bir Melez Harmoni Arama Algori...
Esnek Atölye Tipi Çizelgeleme Problemleri için Bir Melez Harmoni Arama Algori...
 
Akış Şemaları ( İş Analizi ve Uygulamaları Dersi)
Akış Şemaları ( İş Analizi ve Uygulamaları Dersi)Akış Şemaları ( İş Analizi ve Uygulamaları Dersi)
Akış Şemaları ( İş Analizi ve Uygulamaları Dersi)
 
Karar ağaçlari
Karar ağaçlariKarar ağaçlari
Karar ağaçlari
 
Log yonetimi tecrubeleri
Log yonetimi tecrubeleriLog yonetimi tecrubeleri
Log yonetimi tecrubeleri
 
Yapay Zeka ile Araçların Yakıt Tüketimi Tahmini.pptx
Yapay Zeka ile Araçların Yakıt Tüketimi Tahmini.pptxYapay Zeka ile Araçların Yakıt Tüketimi Tahmini.pptx
Yapay Zeka ile Araçların Yakıt Tüketimi Tahmini.pptx
 
Python for Hackers
Python for HackersPython for Hackers
Python for Hackers
 
Slayt_4
Slayt_4Slayt_4
Slayt_4
 
Adaptif Penetration(Sızma) Testleri - Sunum
Adaptif Penetration(Sızma) Testleri - SunumAdaptif Penetration(Sızma) Testleri - Sunum
Adaptif Penetration(Sızma) Testleri - Sunum
 
Algoritma ve akış şemaları
Algoritma ve akış şemalarıAlgoritma ve akış şemaları
Algoritma ve akış şemaları
 
Ensari Elektrokrip Sunum
Ensari Elektrokrip SunumEnsari Elektrokrip Sunum
Ensari Elektrokrip Sunum
 
Algoritma
AlgoritmaAlgoritma
Algoritma
 
Roket Yazılımı Eğitimi Hafta 1
Roket Yazılımı Eğitimi Hafta 1Roket Yazılımı Eğitimi Hafta 1
Roket Yazılımı Eğitimi Hafta 1
 

Yzm 2116 - Bölüm 2 (Algoritma Analizi)

  • 1. YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği
  • 2. BÖLÜM - 2 Bu bölümde, • Algoritma Analizi, • Çalışma Zamanı Analizi • Algoritma Analiz Türleri • Asimptotik Notasyon, • Big-O Notasyonu, • Algoritmalar için “Rate of Growth” (Büyüme Hızı) • Big-O Hesaplama Kuralları • Big-O Avantajları konularına değinilecektir. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 3. 3 • Basit tanım: Belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir. • Geniş tanım: Verilen herhangi bir sorunun çözümüne ulaşmak için uygulanması gerekli adımların hiç bir yoruma yer vermeksizin açık, düzenli ve sıralı bir şekilde söz ve yazı ile ifadesidir. Algoritmayı oluşturan adımlar özellikle basit ve açık olarak ortaya konmalıdır. 19.yy da İranlı Musaoğlu Horzumlu Mehmet (Alharezmi adını Araplar takmıştır) problemlerin çözümü için genel kurallar oluşturdu. Algoritma Alharezmi'nin Latince okunuşudur. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Algoritma Nedir?
  • 4. 4Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Algoritmaların Sahip Olması Gereken Özellikler • Giriş/çıkış bilgisi • Sonluluk • Kesinlik • Etkinlik • Başarım ve performans
  • 5. 5Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Algoritma Analizi • Aynı problemi (örneğin sıralama) birçok algoritma ile (insertion, bubble, quick vs) çözmek mümkün olduğu için algoritmalar verimlilik (kullandıkları hafıza ve işlemi gerçekleştirdikleri zaman) anlamında kıyaslanmalı ve seçim buna göre yapılmalıdır. • Bu kıyaslama algoritma analizinde çalışma zamanı karşılaştırması olarak bilinir.
  • 6. 6Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Algoritma Analizi (devam…) • Algoritma analizi yapılma nedenleri: o Algoritmanın performansını ölçmek için o Farklı algoritmalarla karşılaştırmak için o Daha iyisi mümkün mü? Bu mudur en iyisi? • Analiz edilen özellikler aşağıdaki gibidir o Algoritmanın çalışma zamanı analizi o Hafızada kapladığı alan analizi
  • 7. 7Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Çalışma Zamanı Analizi • Çalışma zamanı analizi (karmaşıklık analizi) bir algoritmanın (artan) “(veri) giriş” boyutuna bağlı olarak işlem zamanının / süresinin nasıl arttığını (değiştiğini) tespit etmek olarak tanımlanır. • Algoritmaların işlediği sıklıkla karşılaşılan “(veri) giriş” türleri: o Array (boyuta bağlı) o Polinom (derecesine bağlı) o Matris (eleman sayısına bağlı) o İkilik veri (bit sayısı) o Grafik (kenar ve düğüm sayısı)
  • 8. 8Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Çalışma Zamanı Analizi (devam…) • Çalışma zamanı/karmaşıklık analizi için kullanılan başlıca yöntemler aşağıdaki gibidir: 1. Deneysel Analiz Yöntemi: Örnek problemlerde denenmiş bir algoritmadaki hesaplama deneyimine dayanır. Amacı, pratikte algoritmanın nasıl davrandığını tahmin etmektir. Bilimsel yaklaşımdan çok, uygulamaya yöneliktir. Programı yazan programcının tekniğine, kullanılan bilgisayara, derleyiciye ve programlama diline bağlı değişkenlik gösterir. 2. RAM (Random Access Machine) Modeli ile Komut Sayarak Çalışma Zamanı Analiz Yöntemi
  • 9. 9Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Çalışma Zamanı Analizi (devam…) • RAM Modeli: o RAM modeli algoritma gerçekleştirimlerini ölçmek için kullanılan basit bir yöntemdir. o Genel olarak çalışma zamanı veri giriş boyutu n’e bağlı T(n) ile ifade edilir. o Her operasyon (+,-, * =, if, call) “bir” zaman biriminde gerçekleşir. o Döngüler ve alt rutinler (fonksiyonlar) basit operasyonlar ile farklı değerlendirilirler. o RAM modelinde her bellek erişimi yine “bir” zaman biriminde gerçekleşir.
  • 10. 10 Örnek 1: Dizideki sayıların toplamını bulma int Topla(int A[], int N) { int toplam = 0; for (i=0; i < N; i++){ toplam += A[i]; } //Bitti-for return toplam; } //Bitti-Topla Bu fonksiyonun yürütme zamanı ne kadardır? Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 11. İşlem sayısı 1 N N 1 -------- Toplam: 1 + N + N + 1 = 2N + 2 • Çalışma zamanı: T(N) = 2N+2 – N dizideki eleman sayısı int Topla(int A[], int N) { int topla = 0; for (i=0; i < N; i++){ topla += A[i]; } //Bitti-for return topla; } //Bitti-Topla Örnek 1: Dizideki sayıların toplamını bulma
  • 12. 12 Örnek 2: Dizideki bir elemanın aranması Bu fonksiyonun yürütme zamanı ne kadardır? int Arama(int A[], int N, int sayi) { int i = 0; while (i < N){ if (A[i] == sayi) break; i++; } //bitti-while if (i < N) return i; else return -1; } //bitti-Arama Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 13. 13 int Arama(int A[], int N, int sayi) { int i = 0; while (i < N){ if (A[i] == sayi) break; i++; } //bitti-while if (i < N) return i; else return -1; } //bitti-Arama İşlem sayısı 1 1<=L<=N 1<=L<=N 0<=L<=N 1 1 --------- Toplam: 1+3*L+1+1 = 3L+3 Örnek 2: Dizideki bir elemanın aranması • Çalışma zamanı: T(N) = 3N+3
  • 14. 14Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Algoritma Analiz Türleri • Bir algoritmanın analizi için o algoritmanın kabaca bir polinom veya diğer zaman karmaşıklıkları cinsinden ifade edilmesi gerekir. • Bu ifade üzerinden veri girişindeki değişime bağlı olarak algoritmanın best case (en az zaman alan) ve worst case (en çok zaman alan) durumları incelenerek algoritmalar arası kıyaslama yapılabilir. Bu şekilde bir algoritma üç şekilde incelenebilir: 1. Worst case (en kötü) 2. Best case (en iyi) 3. Average case (ortalama)
  • 15. 15Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Algoritma Analiz Türleri (devam…) • Worst case (en kötü): Algoritma çalışmasının en fazla sürede gerçekleştiği analiz türüdür. En kötü durum, çalışma zamanında bir üst sınırdır ve o algoritma için verilen durumdan “daha uzun sürmeyeceği” garantisi verir. Bazı algoritmalar için en kötü durum oldukça sık rastlanır. Arama algoritmasında, aranan öğe genellikle dizide olmaz dolayısıyla döngü N kez çalışır. • Best case (en iyi): Algoritmanın en kısa sürede ve en az adımda çalıştığı giriş durumu olan analiz türüdür. Çalışma zamanında bir alt sınırdır. • Average case (ortalama): Algoritmanın ortalama sürede ve ortalama adımda çalıştığı giriş durumu olan analiz türüdür.
  • 16. 16Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Algoritma Analiz Türleri (devam…) • Bu incelemeler: • Lower Bound (i) <= Average Bound (ii) <= Upper Bound (iii) şeklinde sıralanırlar. • Grafiksel gösterimi aşağıdaki gibidir:
  • 17. 17Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Algoritma Analiz Türleri (devam…) • Örnek 2 için en iyi, en kötü ve ortalama çalışma zamanı nedir? int Arama(int A[], int N, int sayi) { int i = 0; while (i < N){ if (A[i] == sayi) break; i++; } //bitti-while if (i < N) return i; else return -1; } //bitti-Arama  En iyi çalışma zamanı o Döngü sadece bir kez çalıştı T(n) = 6  Ortalama çalışma zamanı o Döngü N/2 kez çalıştı T(n)=3*n/2+3 = 1.5n+3  En kötü çalışma zamanı o Döngü N kez çalıştı T(n) = 3n+3
  • 18. 18 • Bir algoritmanın genelde EN KÖTÜ durumdaki çalışma zamanına bakılır. Neden? o En kötü durum çalışma zamanında bir üst sınırdır ve o algoritma için verilen durumdan daha uzun sürmeyeceği garantisi verir. o Bazı algoritmalar için en kötü durum oldukça sık rastlanır. Arama algoritmasında, aranan öğe genellikle dizide olmaz dolayısıyla döngü N kez çalışır. o Ortalama çalışma zamanı genellikle en kötü çalışma zamanı kadardır. Arama algoritması için hem ortalama hem de en kötü çalışma zamanı doğrusal fonksiyondur. Algoritma En Kötü Durum Analizi Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 19. • Bir problemi çözmek için A ve B şeklinde iki algoritma verildiğini düşünelim. • Giriş boyutu N için aşağıda A ve B algoritmalarının çalışma zamanı TA ve TB fonksiyonları verilmiştir. Hangi algoritmayı seçersiniz? Çalışmazamanı Giriş Boyutu (N) Asimptotik Notasyon
  • 20. 20 • N büyüdüğü zaman A ve B nin çalışma zamanı: Şimdi hangi algoritmayı seçersiniz? ÇalışmaZamanı Giriş Boyutu (N) Asimptotik Notasyon (devam…)
  • 21. 21 • Asimptotik notasyon, eleman sayısı n’nin sonsuza gitmesi durumunda algoritmanın, benzer işi yapan algoritmalarla karşılaştırmak için kullanılır. • Eleman sayısının küçük olduğu durumlar mümkün olabilir fakat bu birçok uygulama için geçerli değildir. • Verilen iki algoritmanın çalışma zamanını T1(N) ve T2(N) fonksiyonları şeklinde gösterilir. Hangisinin daha iyi olduğunu belirlemek için bir yol belirlememiz gerekiyor. – Big-O (Big O): Asimptotik üst sınır – Big W (Big Omega): Asimptotik alt sınır – Big Q (Big Teta): Asimptotik alt ve üst sınır Asimptotik Notasyon (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 22. 22 • Algoritmanın f(n) şeklinde ifade edildiğini varsayalım. • Algoritma, fonksiyonunun sıkı üst sınırı (tight upper bound) olarak tanımlanır. • Bir fonksiyonun sıkı üst sınırı genel olarak: f(n) = O(g(n)) • şeklinde ifade edilir. • Bu ifade n’nin artan değerlerinde – f(n)’nin üst sınırı g(n)’dir • şeklinde yorumlanır. Big-O Notasyonu Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 23. 23 • Örneğin: f(n) = n4 + 100n2 + 10n + 50 algoritma fonksiyonunda g(n)= n4 olur. • “Daha açık bir ifadeyle”, n’nin artan değerlerinde f(n) nin maksimum büyüme oranı g(n) = n4 • O-notasyonu gösteriminde bir fonksiyonun düşük n değerlerindeki performansı önemsiz kabul edilir. Big-O Notasyonu (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 24. 24 • O(g(n)) = { – f(n): tüm n>=n0 için, 0 <= f(n)<= cg(n) olmak üzere pozitif c ve n0 sabitleri bulunsun • } • Bu durumda g(n), f(n)’nin asimptotik (n sonsuza giderken) sıkı üst sınırı olur. • n’nin düşük değerleri ve o değerlerdeki değişim dikkate alınmazken, no’dan büyük değerler için algoritmanın büyüme oranı değerlendirilir. Big-O Notasyonu (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 25. 25 • Dikkat edilirse, no’dan büyük değerler için c*g(n), • f(n) için üst sınırı (asimptot) olarak görülürken, • no öncesinde iki fonksiyonun değişimi farklı olabilir. Big-O Notasyonu (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 26. 26 Büyüme Oranı (Rate of Growth) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Zaman karmaşıklığı Açıklama Örnek O(1) Sabit: Veri giriş boyutundan bağımsız gerçekleşen işlemler. Bağlı listeye ilk eleman olarak ekleme yapma O(log N) Logaritmik: Problemi küçük veri parçalarına bölen algoritmalarda görülür. Binary search tree veri yapısı üzerinde arama O(N) Lineer – doğrusal: Veri giriş boyutuna bağlı doğrusal artan. Sıralı olmayan bir dizide bir eleman arama O(N log N) Doğrusal çarpanlı logaritmik: Problemi küçük veri parçalarına bölen ve daha sonra bu parçalar üzerinde işlem yapan. N elemanı böl-parçala-yönet yöntemiyle sıralama. Quick Sort. O(N2) Karesel Bir grafikte iki düğüm arasındaki en kısa yolu bulma veya Buble Sort. O(N3) Kübik Ardarda gerçekleştirilen lineer denklemler O(2N) İki tabanında üssel Hanoi’nin Kuleleri problemi
  • 27. 27 Büyüme Oranı (Rate of Growth) (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 28. 28 • f(n), g(n), h(n), ve p(n) pozitif tamsayılar kümesinden, pozitif reel sayılar kümesine tanımlanmış fonksiyonlar olsun: 1. Katsayı Kuralı: f(n) , O(g(n)) ise o zaman kf(n) yine O(g(n)) olur. Katsayılar önemsizdir. 2. Toplam Kuralı: f(n), O(h(n)) ise ve g(n), O(p(n)) verilmişse f(n)+g(n), O(h(n)+p(n)) olur. Üst-sınırlar toplanır. 3. Çarpım Kuralı: f(n), O(h(n)) ve g(n), O(p(n)) için f(n)g(n) is O(h(n)p(n)) olur. 4. Polinom Kuralı: f(n), k dereceli polinom ise f(n) için O(nk) kabul edilir. 5. Kuvvetin Log’u Kuralı: log(nk) için O(log(n)) dir. Big-O Analiz Kuralları Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 29. 29 • Programların ve algoritmaların Big-O yaklaşımıyla analizi için aşağıdaki kurallardan faydalanırız: 1. Döngüler (Loops) 2. İç içe Döngüler 3. Ardışık deyimler 4. If-then-else deyimleri 5. Logaritmik karmaşıklık Big-O Hesaplama Kuralları Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 30. Kural 1: Döngüler (Loops) Bir döngünün çalışma zamanı, en çok döngü içindeki deyimlerin çalışma zamanının iterasyon sayısıyla çarpılması kadardır. for (i=1; i<=n; i++) { m = m + 2; } Sabit zaman n defa çalışır Toplam zaman = sabit c * n = cn = O(N) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları DİKKAT: Eğer bir döngünün n değeri sabit verilmişse. Örneğin: n = 100 ise değeri O(1)’dir. 30
  • 31. İçteki analiz yapılır. Toplam zaman bütün döngülerin çalışma sayılarının çarpımına eşittir. for (i=1; i<=n; i++) { for (j=1; j<=n; j++) { k = k+1; } } Sabit zaman Dış döngü n defa çalışır iç döngü n defa çalışır Toplam zaman = c * n * n * = cn2 = O(N2) Kural 2: İç İçe Döngüler Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 31
  • 32. 32 Her deyimin zamanı birbirine eklenir. Toplam zaman = c0 + c1n + c2n2 = O(N2) x = x +1; for (i=1; i<=n; i++) { m = m + 2; } for (i=1; i<=n; i++) { for (j=1; j<=n; j++) { k = k+1; } } iç döngü n defa çalışır Dış döngü n defa çalışır Sabit zaman n defa çalışır Sabit zaman Sabit zaman Kural 3: Ardışık Deyimler Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 33. 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. if (depth( ) != otherStack.depth( ) ) { return false; } else { for (int n = 0; n < depth( ); n++) { if (!list[n].equals(otherStack.list[n])) return false; } } then: sabit else: (sabit +sabit) * n test: sabit Diğer if : sabit+sabit (else yok) Toplam zaman = c0 + c1 + (c2 + c3) * n = O(N) Kural 4: If Then Else Deyimleri Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 33
  • 34. Problemin büyüklüğünü belli oranda(genelde ½) azaltmak için sabit bir zaman harcanıyorsa bu algoritma O(log N)’dir. for(i=1; i<=n;) i = i*2; • kod parçasında n döngü sayısı i = i*2 den dolayı her seferinde yarıya düşer. • Loop’un k kadar döndüğünü varsayarsak; o k adımında 2i = n olur. o Her iki tarafın logaritmasını alırsak;  ilog2 = logn ve i = log n olur. o i’ye bağlı olarak (problemi ikiye bölen değişken!) Kural 5: Logaritmik Karmaşıklık Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 34
  • 35. Kural 5: Logaritmik Karmaşıklık (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları • Örneğin: Binary Search (İkili arama) algoritması kullanılarak bir sözlükte arama: o Sözlüğün orta kısmına bakılır. o Sözcük ortaya göre sağda mı solda mı kaldığı bulunur? o Bu işlem sağ veya solda sözcük bulunana kadar tekrarlanır. • bu tarz bir algoritmadır. Bu algoritmalar genel olarak “divide and conquer (böl ve yönet)” yaklaşımı ile tasarlanmışlardır. Bu yaklaşımla tasarlanan olan örnek sıralama algoritmaları: o Merge Sort and Quick Sort. 35
  • 36. 36 • Sabitler göz ardı edilirler çünkü o Donanım, derleyici, kod optimizasyonu vb. nedenlerden dolayı bir komutun çalışma süresi her zaman farklılık gösterebilir. Amacımız bu etkenlerden bağımsız olarak algoritmanın ne kadar etkin olduğunu ölçmektir. o Sabitlerin atılması analizi basitleştirir. 3.2n2 veya 3.9n2 yerine sadece n2’ye odaklanırız. • Algoritmalar arasında kıyaslamayı basit tek bir değere indirger. • Küçük n değerleri göz ardı edilerek sadece büyük n değerlerine odaklanılır. Big-O Avantajları Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 37. 37 • Özetle: Donanım, işletim sistemi, derleyici ve algoritma detaylarından bağımsız, sadece büyük n değerlerine odaklanıp, sabitleri göz ardı ederek daha basit bir şekilde algoritmaları analiz etmemize ve karşılaştırmamızı sağlar. • RAM’den O(n)’ dönüşüm: o 4n2 - 3n log n + 17.5 n - 43 n⅔ + 75  o n2 – n log n + n - n⅔ + 1  sabitleri atalım o n2  sadece büyük n değerlerini alalım o O(n2) Big-O Avantajları (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 38. 38 • Aşağıdaki fonksiyonların karmaşıklıklarını Big O notasyonunda gösteriniz. o f1(n) = 10 n + 25 n2 o f2(n) = 20 n log n + 5 n o f3(n) = 12 n log n + 0.05 n2 o f4(n) = n1/2 + 3 n log n Çalışma Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 39. İYİ ÇALIŞMALAR… Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 40. Yararlanılan Kaynaklar • Ders Kitabı: • Data Structures through JAVA, V.V.Muniswamy • Yardımcı Okumalar: • Data Structures and Algorithms in Java, Narashima Karumanchi • Data Structures, Algorithms and Applications in Java, Sartaj Sahni • Algorithms, Robert Sedgewick Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

Editor's Notes

  1. Hemen atlamayalım…It depends… N=50 oluncaya kadar Tb daha iyi