SlideShare una empresa de Scribd logo
1 de 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ı

Más contenido relacionado

La actualidad más candente

Searching and Sorting Techniques in Data Structure
Searching and Sorting Techniques in Data StructureSearching and Sorting Techniques in Data Structure
Searching and Sorting Techniques in Data StructureBalwant Gorad
 
Data structure and algorithm using java
Data structure and algorithm using javaData structure and algorithm using java
Data structure and algorithm using javaNarayan Sau
 
PPT On Sorting And Searching Concepts In Data Structure | In Programming Lang...
PPT On Sorting And Searching Concepts In Data Structure | In Programming Lang...PPT On Sorting And Searching Concepts In Data Structure | In Programming Lang...
PPT On Sorting And Searching Concepts In Data Structure | In Programming Lang...Umesh Kumar
 
Deque and its applications
Deque and its applicationsDeque and its applications
Deque and its applicationsJsaddam Hussain
 
Data Structure and Algorithms Binary Search Tree
Data Structure and Algorithms Binary Search TreeData Structure and Algorithms Binary Search Tree
Data Structure and Algorithms Binary Search TreeManishPrajapati78
 
Data structures & algorithms lecture 3
Data structures & algorithms lecture 3Data structures & algorithms lecture 3
Data structures & algorithms lecture 3Poojith Chowdhary
 
Searching techniques in Data Structure And Algorithm
Searching techniques in Data Structure And AlgorithmSearching techniques in Data Structure And Algorithm
Searching techniques in Data Structure And Algorithm03446940736
 
Insertion sort
Insertion sortInsertion sort
Insertion sortMYER301
 
Data Structures - Searching & sorting
Data Structures - Searching & sortingData Structures - Searching & sorting
Data Structures - Searching & sortingKaushal Shah
 
Searching Techniques and Analysis
Searching Techniques and AnalysisSearching Techniques and Analysis
Searching Techniques and AnalysisAkashBorse2
 
Lec 17 heap data structure
Lec 17 heap data structureLec 17 heap data structure
Lec 17 heap data structureSajid Marwat
 

La actualidad más candente (20)

Insertion sort algorithm power point presentation
Insertion  sort algorithm power point presentation Insertion  sort algorithm power point presentation
Insertion sort algorithm power point presentation
 
Insertion Sorting
Insertion SortingInsertion Sorting
Insertion Sorting
 
sorting and its types
sorting and its typessorting and its types
sorting and its types
 
Divide & conquer
Divide & conquerDivide & conquer
Divide & conquer
 
Searching and Sorting Techniques in Data Structure
Searching and Sorting Techniques in Data StructureSearching and Sorting Techniques in Data Structure
Searching and Sorting Techniques in Data Structure
 
Greedy algorithms
Greedy algorithmsGreedy algorithms
Greedy algorithms
 
Data structure and algorithm using java
Data structure and algorithm using javaData structure and algorithm using java
Data structure and algorithm using java
 
PPT On Sorting And Searching Concepts In Data Structure | In Programming Lang...
PPT On Sorting And Searching Concepts In Data Structure | In Programming Lang...PPT On Sorting And Searching Concepts In Data Structure | In Programming Lang...
PPT On Sorting And Searching Concepts In Data Structure | In Programming Lang...
 
Deque and its applications
Deque and its applicationsDeque and its applications
Deque and its applications
 
Abstract data types
Abstract data typesAbstract data types
Abstract data types
 
Data Structure and Algorithms Binary Search Tree
Data Structure and Algorithms Binary Search TreeData Structure and Algorithms Binary Search Tree
Data Structure and Algorithms Binary Search Tree
 
07 java collection
07 java collection07 java collection
07 java collection
 
Java collections notes
Java collections notesJava collections notes
Java collections notes
 
Data structures & algorithms lecture 3
Data structures & algorithms lecture 3Data structures & algorithms lecture 3
Data structures & algorithms lecture 3
 
Searching techniques in Data Structure And Algorithm
Searching techniques in Data Structure And AlgorithmSearching techniques in Data Structure And Algorithm
Searching techniques in Data Structure And Algorithm
 
Insertion sort
Insertion sortInsertion sort
Insertion sort
 
Data Structures - Searching & sorting
Data Structures - Searching & sortingData Structures - Searching & sorting
Data Structures - Searching & sorting
 
Linear search-and-binary-search
Linear search-and-binary-searchLinear search-and-binary-search
Linear search-and-binary-search
 
Searching Techniques and Analysis
Searching Techniques and AnalysisSearching Techniques and Analysis
Searching Techniques and Analysis
 
Lec 17 heap data structure
Lec 17 heap data structureLec 17 heap data structure
Lec 17 heap data structure
 

Similar a 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 a 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ı

Notas del editor

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