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

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

YZM 2116 Veri Yapıları

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

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

Alıştırma 1: Yineleme

Algoritmalar ve Karmaşıklık

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İ

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

ALGORİTMA İ VE PROGRAMLAMA

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

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

Yrd. Doç. Dr. Ümit ATİLA

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

VERİ YAPILARI DATA STRUCTURE GİRİŞ

O NOTASYONU. Abdullah Gazi Emre DAĞLI

Selection Sort Insertion Sort

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

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);

Algoritma Analizi ve Büyük O Notasyonu. Şadi Evren ŞEKER YouTube: Bilgisayar Kavramları

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

YZM 2116 Veri Yapıları

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

Algoritma Analizi Big O

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

ALGORİTMA VE PROGRAMLAMA I

BMT207 VERİ YAPILARI DATA STRUCTURE

Algoritmalar. Sıralama Problemi ve Analizi. Bahar 2017 Doç. Dr. Suat Özdemir 1

Algoritma Nedir? Algoritma

BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI. Kafkas Üniversitesi Mühendislik Fakültesi

VERİ YAPILARI VE PROGRAMLAMA

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

ALGORİTMA VE PROGRAMLAMA I

Olimpiyat Soruları. sonuçları tekrar fonksiyonda yerine koyup çıkan tüm sonuçları toplayan program (iterasyon sayısı girilecek)

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#6: AZALT VE FETHET YÖNTEMİ

Problem Set 1 Çözümler

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

BIP116-H14-1 BTP104-H014-1

Dr. Fatih AY Tel: fatihay@fatihay.net

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

YMT316 Algoritma Analizi

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

BMB204. Veri Yapıları Ders 12. Dizgi Eşleme (String Matching) Algoritmaları İleri Veri Yapıları

Gezgin Satıcı Probleminin İkili Kodlanmış Genetik Algoritmalarla Çözümünde Yeni Bir Yaklaşım. Mehmet Ali Aytekin Tahir Emre Kalaycı

Fonksiyonlar (Altprogram)

YMT219 VERİ YAPILARI ÖDEV-1

Arasınav Örnek Soruları Bahar 2018

Önsöz. İçindekiler Algoritma Algoritma Nasıl Hazırlanır? Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular

for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) { ifadeler; }

Ayrık Fourier Dönüşümü

YZM 2116 Veri Yapıları

AKIŞ ŞEMASI AKIŞ ŞEMASI AKIŞ ŞEMASI ŞEKİLLERİ GİRİŞ

YZM 2116 Veri Yapıları

Arama Algoritmaları. Doğrusal Arama ve Binary Arama

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Algoritma ve Akış Diyagramları

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

Koşullu Önermeler (if else)

Bilgisayar programlamanın üç temel mantık yapısından biridir. Diğer ikisi ise Seçilim(Selection) ve Döngü(Loop, Iteration)dür.

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

Pratik Ara Sınav 1 Çözümleri

Algoritma ve Akış Şemaları

Google Search API ile ajax arama

JAVADA DİZİ İŞLEMLERİ

Linux Sistemlerde Süreç Zamanlama Algoritmaları (Scheduler Algorithms) ÜMİT İŞGÜDER

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

İleri Diferansiyel Denklemler

Veri Yapıları. for(i=1;i<n;i++) { ekle=d[i]; for (k=i 1; k>=0 && ekle<=d[k] ;k ) D[k+1]=D[k]; /* Geriye kaydırılıyor*/

Standard Template Library

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

MIT OpenCourseWare Ekonomide İstatistiksel Yöntemlere Giriş Bahar 2009

6.046J/18.401J DERS 7 Kıyım Fonksiyonu (Hashing I) Prof. Charles E. Leiserson

BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Akademik Rapor Hazırlama ve Yazışma Teknikleri

Azalt ve Fethet Algoritmaları

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

Yrd. Doç. Dr. Caner ÖZCAN

PROGRAMINIZI ANĠ SONLANDIRMAK ĠSTEDĠĞĠNĠZ YER BĠR DÖNGÜNÜN ĠÇĠ ĠSE NE OLUR?????????

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

BÖLÜM 6. ÇEŞİTLİ KONULARDA ALGORİTMA VE AKIŞ ŞEMALARI

Bilgisayar Mühendisliği Doktora Yeterlilik Yazılı Sınavı İçeriği

DOSYA ORGANİZASYONU. Sıralı erişimli dosya organizasyonu yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Merge Sort Bireşen Sıralama

Şekil 7.1 Bir tankta sıvı birikimi

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

ÜNİTE 9 ÜNİTE 9 MICROSOFT EXCEL - II TEMEL BİLGİ TEKNOLOJİLERİ İÇİNDEKİLER HEDEFLER

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

How to ASP Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013

Bil 105 Laboratuvar (1. Hafta Problemleri)

2.Hafta Algoritmaların Analizi. Araya Yerleştirme Sırlaması (Insert Sort) Birleştirme Sıralaması (Merge Sort ) Yinelemeler

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

YZM 2116 Veri Yapıları

BÖLÜM 1 1. ALGORİTMALAR Algoritmanın Tanımı, Matematikteki Yeri ve Önemi

Transkript:

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN 0904.01036 atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİŞKEK 2012 Ahmet Atakan 0904.01036 Bil-341 Algoritmalar Sayfa 1

Algoritma Karmaşıklığı ve Büyük O Gösterimi Yazdığımız bir algoritmanın doğru çalıştığından emin olmakla birlikte bu algoritmayı, daha önce yazılmış ve aynı sonucu veren başka algoritmalarla karşılaştırmak isteyebiliriz. Burada teknik olarak değerlendirilecek başlıca iki başlık söz konusudur. Birincisi algoritmaların bellek kullanım miktarı, ikincisi ise algoritmaların hesaplama yapmak için harcadığı süredir. Mesela yazdığımız bir algoritma aynı işi yapan diğer bir algoritmadan daha hızlı çalışmasına rağmen çoğu bilgisayar için bellek aşımı gerçekleştiriyorsa bu pek uygun olmayacaktır. Diğer algoritmalarla karşılaştırma yapmak yerine, yazdığınız bir algoritmanın tek başına analizini yapmak isteyebiliriz. Bunun için yazdığımız algoritmaları ve varsa karşılaştıracağınız algoritmaları tek tek çalıştırıp hız ve bellek testi yapabiliriz. Ama bu hem zaman açısından sıkıntı yaratır hem de elde edeceğimiz veriler donanımsal ve sistemsel değişikliklerden dolayı bilimsel olmaz. Bu durumda matematiksel olarak ifade edebileceğimiz, donanımsal ve sistemsel bağımlılığı olmayan bir yönteme ihtiyacımız olacaktır. Bu yöntemle algoritmamıza girdi olarak verilen verilerin miktarına bağlı olarak sonuçlar üretiriz. İşte elde edilen bu sonuçlar ilgili algoritmanın karmaşıklığı olarak tanımlanır. Bir algoritmanın karmaşıklığı performansını etkiler ama karmaşıklık ile performans farklı kavramlardır. Karmaşıklık hesabı yapacağımız asimptotik notasyonlardan en çok kullanılanını açıklamaya çalışayım. Big O Notation : Tüm n n_0 değerleri için sabitler c > 0, n_0 > 0 ise 0 f(n) cg(n) durumunda f(n) = O(g(n)) yazabiliriz. Yani : f(n) ve g(n) reel sayılarda tanımlı 2 fonksiyon olmak üzere n > n_0 olacak şekilde bir n vardır öyle ki; f(n) < C*g(n) dir ve sabit sayılardır n den bağımsızdırlar. şeklinde gösterilir. Burada c ve n_0 Ahmet Atakan 0904.01036 Bil-341 Algoritmalar Sayfa 2

Örnekler : Bir döngü ifadesinin içindeki bir ifade, döngünün dönme sayısı kadar çalışacağı için, eğer döngü N kez dönüyorsa ve döngü içindeki ifadenin çalışma zamanı C ise, toplam çalışma zamanı N*C dır. //aşağıdaki for döngüsü O(C.N)'dir. for (int i = 0; i < N; i++) //buradaki ifade C zamanda çalışsın } İç içe döngülerde içteki döngü N kez, dıştaki döngü ise K kez dönüyorsa ve iç döngünün içindeki ifadenin çalışma zamanı C ise, toplam çalışma zamanı N*K*C dir. //aşağıdaki for döngüsü O(C.N.K)'dir. for (int i = 0; i < N; i++) for (int j = 0; j < K; j++) //buradaki ifade C zamanda çalışsın O fonksiyonu ile karmaşıklık hesaplamadaki bazı ana konular : Sabit zamanlı ifadeler O(1) ile gösterilirler. Örnek, atama işlemleri. if - else ifadelerinde, ifadenin if veya else bloğundaki hangi ifade karmaşıklık olarak daha büyükse O fonksiyonu o değeri döndürür. (Çünkü O fonksiyonu her zaman en kötü durumu analiz eder) Ahmet Atakan 0904.01036 Bil-341 Algoritmalar Sayfa 3

Örnek : Algoritmaların En Kötü Durum Analizi Bir algoritmanın sadece EN KÖTÜ durumdaki çalışma zamanına bakılır. Neden? 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. 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. Ahmet Atakan 0904.01036 Bil-341 Algoritmalar Sayfa 4

Notasyon İsim Açıklama O(1) Sabit Algoritmadaki icra sayısı belliyse sabit bir değerle gösterlir. Örneğin, bir sayının tek mi çift mi olduğunun bulunması. O(logn) Logaritmik n değerinin büyüyen değerlerine karşın algoritmanız çok daha az yavaşlıyorsa logaritmik bir durum söz konusudur. Örneğin, binary search ile sıralı bir dizide değer aramak. O(n) Lineer n değerinin büyümesine karşılık algoritmanın lineer bir şekilde yavaşlaması söz konusudur. Örnek, sırasız bir listeden bir değeri bulmak. O(n logn) Loglineer Bir problemi alt problemlere bölüp bağımsız olarak çözen, daha sonra bu sonuçları birleştiren algoritmalarda görülür. Örnek, birliştirmeli sıralama (merge sort) algoritması. O(n^2) Karesel İç-içe döngüler ile verileri ikişerli şekilde inceleyen algoritmalarda görülür. Örnek, seçmeli sıralama (selection sort) O(2^n) Üstel Girilen veriye göre iki kat yavaşlama görülen bu algoritmalar hiç pratik değildir. Örnek, seyyar satıcı problemi. Kaynaklar : www.asafvarol.com/dnotlar/veri_y/2.ppt www.algoritma.org/2011/05/algoritma-karmasklg-ve-buyuk-o.html http://www.acikders.org.tr/file.php/132/videolectures/lecturenotes/ders02notlari.pdf Ahmet Atakan 0904.01036 Bil-341 Algoritmalar Sayfa 5