Algoritma Analizi Big O

Benzer belgeler
ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

Algoritma Analizi. Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Algoritma Geliştirme ve Veri Yapıları 1 Temel Algoritma Kavramları. Mustafa Kemal Üniversitesi

YZM 2116 Veri Yapıları

VERİ YAPILARI DERS NOTLARI BÖLÜM 2 ALGORİTMA ANALİZİ. Yard. Doç. Dr. Deniz KILINÇ

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#3: ALGORİTMA ANALİZİ#2

ALGORİTMA İ VE PROGRAMLAMA

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu

1. Her marka için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)

f(x) ve g(x) reel sayılarda tanımlı iki fonksiyon olmak üzere, x > k olacak şekilde bir k vardır öyle ki,

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

O NOTASYONU. Abdullah Gazi Emre DAĞLI

Veri Yapıları ve Algoritmalar

Algoritmalar ve Karmaşıklık

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Algoritmaların Karşılaştırılması. Doç. Dr. Aybars UĞUR

YMT219 Veri Yapıları. Yrd.Doç.Dr. Erkan TANYILDIZI

Bil Hafta Çalışma Soruları (Yanıtlar)

C ile Uygulamalar 1 - Cevaplar

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

YMT219 Veri Yapıları. Yrd.Doç.Dr. Erkan TANYILDIZI

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

3.Hafta Master Teorem ve Böl-Fethet Metodu

Sınav tarihi : Süre : 60 dak. c) En başta #include<stdio.h> yazılmamıştır. c) zt d) Pi e) X0

Genel Programlama I

F(A, N, K) // A dizi; N, K integer if N<0 then return K; if A[N]>K then K = A[N]; return F(A, N-1, K);

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

Giris {\} /\ Suhap SAHIN Onur GÖK

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Algoritma Nedir? Algoritma

Alıştırma 1: Yineleme

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-10 Diziler. Yrd. Doç. Dr. Ümit ATİLA

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

{\} /\ Suhap SAHIN Onur GÖK

Ders 5: Temel Kütüphane Fonksiyonlar

Bölüm Özeti. Algoritmalar. Fonksiyonların Büyümesi. Algoritmaların Karmaşıklığı. Örnek Algoritmalar Algoritmik Paradigmalar

Özyineleme (Recursion)

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler

Matris İşlemleri Uygulaması

Diziler (Arrays) Çok Boyutlu Diziler

Fonksiyonlar. Yrd.Doç.Dr.Bülent Çobanoğlu

Final Sınavı Soruları Bahar 2018

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

Başkent Üniversitesi MühendislikFakültesi BaharYarıyılı YerSıra No BİL 101 Bilgisayar Yazılımı-I Dersi Dönem Sonu MAZERET Sınavı

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Fonksiyonlar (Altprogram)

Arasınav Sınavı Soruları Güz 2017 Süre: 90 Dakika

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

1 PROGRAMLAMAYA GİRİŞ

IF / ELSE IF / ELSE. Bu deyimler, koşullu işlem yapan deyimlerdir ve daima if deyimi ile başlar, else if veya else ile devam eder.

VERİ YAPILARI DATA STRUCTURE GİRİŞ

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

BLM 111 ALGORİTMA VE PROGRAMLAMA I

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Final Sınavı Soruları Güz, Süre: 90 Dakika

C PROGRAMLAMA D İ L İ

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

ALGORİTMA VE PROGRAMLAMA II

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

Bil 101 Bilgisayar Yazılımı 1 Çözümlü Sorular Timur Karaçay

8. İŞARETCİLER (POINTERS)

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

4.Hafta BİL Soruların Çözümleri

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Özyineleme {\} /\ Suhap SAHIN Onur GÖK

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

elemanlı bir dizide bir sinyalin 1 er saniye aralıklarla ölçülen gerilim değerleri tutulmaktadır. Bu sinyalin tepeden tepeye genliğini,

YZM 2116 Veri Yapıları

Sınav tarihi : Süre : 60 dak.

BİL1001 Bilgisayar Bilimlerine Giriş 1

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.

ALGORİTMA VE PROGRAMLAMA II

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

Transkript:

Algoritma Analizi Big O 0 {\} /\ Suhap SAHIN Onur GÖK

Giris Verimlilik Karsılastırma

Giris Hangisi daha iyi? Hangi kritere göre?

Giris Hangisi daha iyi? Hangi kritere göre?

Giris

Giris?

Verimin ölçülmesi Çalısma Zamanı Bellek kullanımı

Verimin ölçülmesi insan maliyeti

Verimin hesaplanması Çalısma Süresi Karmasıklık Parametre sayısı X (artım) Çalısma süresi Çalısma süresi karsılastırma iki farklı bilgisayar Aynı bilgisayar farklı zaman Kullanılan veri Gerekli islem miktarı

Verim hesaplama Veri, bilgisayar ve gerçeklestirime baglı Matematiksel bir analiz Kıyaslama Algoritma Analizi

Algoritma Analizi Matematiksel ifadesi nedir? Temel hesap birimi kaç adet yapılmalı? n f(n) Parametre sayısı Verimlilik n T(n) Çalısma süresi S(n) Bellek gereksinimi

Çalısma Süresi Hesabı Çalısma Süresi (Tn): Algoritmanın belirli bir isleme (Temel hesap birimi) kaç kez gereksinim duydugunu gösteren bagıntıdır. Temel hesap birimi: Programlama dilindeki deyimler Döngü sayısı Toplama islem sayısı Dosyaya erisim sayısı Atama sayısı

ÇSH: Aritmetik Ortalama float bulorta(int A[ ],int n){ 2 float ortalama, toplam=0; 3 int k; 4 for (k=0; k<n;k++) 5 toplam +=A[k]; // döngü içinde gerçekleşen işlem 6 ortalama=toplam/n; 7 return ortalama; 8 }

ÇSH: Aritmetik Ortalama Temel Hesap Birimi islem tekrarı Toplam,,,(n+),n 2n+2 float bulorta(int A[ ],int n){ 2 float ortalama, toplam=0; 3 int k; 4 for (k=0; k<n;k++) 5 toplam +=A[k]; n n 6 ortalama=toplam/n; 7 return ortalama; 8 } T(n)=3n+4

ÇSH: En Küçük eleman int bulenkucuk(int A[], int n){ 2 int enkucuk; 3 int k; 4 enkucuk=a[0]; 5 for (k=0; k<n;k++) 6 if(a[k]<enkucuk) 7 enkucuk=a[k]; 8 return enkucuk; 9 }

ÇSH: En Küçük eleman Temel Hesap Birimi islem tekrarı Toplam,,,n,(n+) 2n int bulenkucuk(int A[], int n){ 2 int enkucuk; 3 int k; 4 enkucuk=a[0]; 5 for (k=0; k<n;k++) 6 if(a[k]<enkucuk) n- n- 7 enkucuk=a[k]; n- n- 8 return enkucuk; 9 } T(n)=4n

ÇSH: Matris Toplama void toplammatris(int A[2][2], int B[2][2]){ 2 int C[2][2]; 3 int i,j; 4 for(i=0;i<2;i++) 5 for(j=0;j<2;j++) 6 7 C[i][j]=A[i][j]+B[i][j]; }

ÇSH: Matris Toplama Temel Hesap Birimi tekrarı Toplam,,,n,(n+) 2n+2,, n*(2m+2) 2nm+2n n*m nm void toplammatris(int A[2][2], int B[2][2]){ 2 int C[2][2]; 3 int i,j; 4 for(i=0;i<2;i++) 5 for(j=0;j<2;j++) 6 7 islem C[i][j]=A[i][j]+B[i][j]; } T(n)=3nm+4n+2

ÇSH: Faktöriyel Hesabı int faktoriyel(int n){ 2 3 4 5 6 } if(n<=) return ; else return (n*faktoriyel(n-));

ÇSH: Faktöriyel Hesabı Temel Hesap Birimi tekrarı Toplam n n n- n- int faktoriyel(int n){ 2 if(n<=) 3 return ; 4 else 5 6 islem return (n*faktoriyel(n-)); } T(n)=2n

Karmasiklik Karmasıklıgı ifade edebilmek için matematiksel ifadeler kullanılmaktadır. Küçük-o (small-o) Büyük-O (big-o, veya big-oh diye de geçer) Teta (Theta Θ, sadece büyük tetadan bahsedebiliz) Büyük omega (big-ω ) Küçük omega(small-ω )

Lineer Döngü Asagıdaki kod kaç defa döner: i= loop( i <= 000 ) (loop body) i=i+ end loop

Logaritmik Döngü Çarpım Döngüsü Bölüm Döngüsü i= loop( i <= 000 ) (loop body) i=i*2 end loop i = 000 loop( i >= ) (loop body) i=i/2 end loop

Logaritmik Döngü Çarpım çarpım: bölüm: 2iterasyon < 000 000 / 2iterasyon >= Bölüm iterasyon i iterasyon i 000 2 2 2 500 3 4 3 250 4 8 4 25 5 6 5 62 6 32 6 3 7 64 7 5 8 28 8 7 9 256 9 3 0 52 0 çıkıs 024 çıkıs 0

iç içe döngüler Karesel (Quadratic) Bagımlı Karesel (Dependent Quadratic) Lineer Logaritmik (Linear Logarithmic)

Karesel i= loop( i <= 0 ) j= loop( j <= 0 ) (loop body) j=j+ end loop i=i+ end loop

Bagımlı Karesel i= loop( i <= 0 ) j= loop( j <= i ) (loop body) j=j+ end loop i=i+ end loop

Lineer Logaritmik i= loop( i <= 0 ) j= loop( j <= 0 ) (loop body) j=j*2 end loop i=i+ end loop

Big O Gösterimi f(n) fonksiyonundan O(n) degerini hesaplamak için asagıdaki adımlar gerçeklestirilir: ) Tüm katsayılar yapılır 2) En büyük terim alınır, digerleri gözardı edilir. Terimlerin küçükten büyüge sırası asagıdaki gibidir: sabit log2n n nlog2n n2 n3 nk 2n n!

Big O Gösterimi

Big O Gösterimi

Big O Gösterimi Big O Degisim sekli O() Sabit, degismiyor O(log n) Logaritmik artıyor O(n) Dogrusal artıyor O(n log n) Dogrusal çarpanlı logaritmik O(n2) Karesel artıyor O(n3) Kübik artıyor O(2n) iki tabanında üssel artıyor O(0n) On tabanında üssel artıyor O(n!) Faktöriyel olarak artıyor

Big O Gösterimi Lineer Döngü i= loop( i <= 000 ) (loop body) i=i+ end loop Logaritmik Döngü //Çarpım Döngüsü i= loop( i < 000 ) (loop body) i=i*2 end loop 2iterasyon<000 f(n)=n/2 => f(n)=n => O(n) 000/2iterasyon>= //Bölüm Döngüsü i = 000 loop( i >= ) (loop body) i=i/2 end loop 2i=n => f(n)=log2n O(log n)

Big O Gösterimi // Karesel i= loop( i <= 0 ) j= loop( j <= 0 ) (loop body) j=j+ end loop i=i+ end loop f(n)=n*n => O(n2) // Bağımlı Karesel i= loop( i <= 0 ) j= loop( j <= i ) (loop body) j=j+ end loop i=i+ end loop f(n)=[n*(n+)]/2 => O(n2) // Lineer Logaritmik i= loop( i <= 0 ) j= loop( j <= 0 ) (loop body) j=j*2 end loop i=i+ end loop f(n)=n*log2n O(n log n) :

Büyük O Gösterimi Big O : her seyin ters gittigi durum

Büyük O Gösterimi Algoritmanın büyüme katsayısı

Büyük O Gösterimi

Sabit Zaman O() Sana pepsi veriyorum

Sabit Zaman O() char *icecekler[4]={"kola","sprite","pepsi","fanta"}; char* icecek =icecekler[2]; Sana pepsi veriyorum

Lineer Zaman O(N) ilk içecek pepsi mi? ikinci içecek pepsi mi? üçüncü içecek pepsi mi? dördüncü içecek pepsi mi? Buldum

Lineer Zaman O(N) #include <stdio.h> int icecekvarmi(char *istenilen, char *icecekler[]){ char* esya; int i=0; for(i=0;i<4;i++){ esya = esyalar[i]; if(esya == istenilen) return ; } return 0; } int main() { char *icecekler[4]={"kola","sprite","pepsi","fanta"}; int gelen = icecekvarmi("kola",esyalar); if(gelen) printf("buldum :)"); else printf("bulamadım :("); return 0;

Logaritmik Zaman O(log N) Sayı ile 9 arasında tahmin et Sayı 4? Degil Sayı 4 den küçük? Evet

Logaritmik Zaman O(log N)

Logaritmik Zaman O(log N) int find(int intarray[],int MAX, int data) { int low= 0; int high= MAX-; int mid= 0; while(low<=high){ mid=(low+high)/2; if(intarray[mid]==data){ return mid; if(intarray[mid]>data){ high=mid-; else low=mid+; } return -; }

Üstel Zaman O(n^2)

Üstel Zaman O(n^2)

Üstel Zaman O(n^2) void sort(int intarray[],int MAX) { int temp,i,mov; for(mov=0; mov<max-; mov++) { for(i=0; i<max--mov; i++) { if(intarray[i]>intarray[i+]){ temp=intarray[i]; intarray[i]=intarray[i+]; intarray[i+]= temp; } } } }

Sorular