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

Benzer belgeler
ALGORİTMA İ VE PROGRAMLAMA

YZM 2116 Veri Yapıları

Algoritma Analizi Big O

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#2: ALGORİTMA ANALİZİ

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

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İ

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

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

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

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

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

Algoritmalar ve Karmaşıklık

O NOTASYONU. Abdullah Gazi Emre DAĞLI

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Alıştırma 1: Yineleme

Problem Set 1 Çözümler

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

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

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

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

VERİ YAPILARI VE PROGRAMLAMA

YMT316 Algoritma Analizi

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

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

YMT219 VERİ YAPILARI ÖDEV-1

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

BIL222 Veri Yapıları ve Algoritmalar

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

VERİ YAPILARI DATA STRUCTURE GİRİŞ

YZM 2116 Veri Yapıları

Bir algoritma aşağıdaki ğ dki özelliklere sahip komutların sonlu bir kümesidir.

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

Ağaç (Tree) Veri Modeli

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

Yrd. Doç. Dr. Caner ÖZCAN

İÇİNDEKİLER ÖNSÖZ Bölüm 1 SAYILAR 11 Bölüm 2 KÜMELER 31 Bölüm 3 FONKSİYONLAR

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

Algoritma ve Akış Diyagramları

Temel Kavramlar 1 Doğal sayılar: N = {0, 1, 2, 3,.,n, n+1,..} kümesinin her bir elamanına doğal sayı denir ve N ile gösterilir.

Yrd. Doç. Dr. Caner ÖZCAN

BÖLÜM III: Şebeke Modelleri. Şebeke Kavramları. Şebeke Kavramları. Şebeke Kavramları. Yönlü Şebeke (Directed Network) Dal / ok

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir?

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

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

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

BIP116-H14-1 BTP104-H014-1

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Ü

Selection Sort Insertion Sort

ÖDEV (Vize Dönemi) CEVAPLAR. 1. Ekrana Merhaba Dünya! yazdıran algoritmanın akış diyagramını çiziniz ve sözde kod olarak yazınız.

Nesne Yönelimli Programlama

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir? Örnek...4 : Genel terimi w n. Örnek...1 : Örnek...5 : Genel terimi r n

Özyineleme (Recursion)

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

Algoritma Nedir? Algoritma

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

Algoritmalara Giriş 6.046J/18.401J DERS 2

ÖĞRENME ALANI TEMEL MATEMATİK BÖLÜM TÜREV. ALT ÖĞRENME ALANLARI 1) Türev 2) Türev Uygulamaları TÜREV

BLM-431 YAPAY ZEKA. Ders-5 Bilgili Arama Yöntemleri. Yrd. Doç. Dr. Ümit ATİLA

Week 9: Trees 1. TREE KAVRAMI 3. İKİLİ AĞAÇ DİZİLİMİ 4. İKİLİ ARAMA AĞACI 2. İKİLİ AĞAÇ VE SUNUMU > =

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

Makine Öğrenmesi 2. hafta

Algoritma ve Programlama II Recursive Fonksiyonlar Dosyalama

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

YZM 2116 Veri Yapıları

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Veri Yapıları ve Algoritmalar

Yarışma Sınavı A ) -5 B ) -3 C ) -1 D ) -8 E ) Ölçüsü olan bir açının esas ölçüsü kaç derecedir?

5.Hafta Alt Sınırları Sıralama Doğrusal-Zaman (linear time) Sıralaması (devam)

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

Algoritmalar. DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama Sayı üstelleri Fibonacci sayıları Matriks çarpımı Strassen in algoritması

8. AB ve BA iki basamaklı sayılarının 17 ile bölümünden kalanların toplamı 17 dir. Buna göre A B kaçtır? işleminin sonucu kaçtır?

Genel olarak test istatistikleri. Merkezi Eğilim (Yığılma) Ölçüleri Merkezi Dağılım (Yayılma) Ölçüleri. olmak üzere 2 grupta incelenebilir.

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

Akış Kontrol Mekanizmaları

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

Nicel / Nitel Verilerde Konum ve Değişim Ölçüleri. BBY606 Araştırma Yöntemleri Bahar Dönemi 13 Mart 2014

Tanımlayıcı İstatistikler. Yrd. Doç. Dr. Emre ATILGAN

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

ÖZYİNELEME RECURSION. Yrd. Doç. Dr. Aybars UĞUR

Bu tanım aralığı pozitif tam sayılar olan f(n) fonksiyonunun değişim aralığı n= 1, 2, 3,, n,

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

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

ALGORİTMA VE PROGRAMLAMA I

Fonksiyonlar (Altprogram)

Algoritma ve Akış Diyagramları

ÖZYİNELEME RECURSION. Doç. Dr. Aybars UĞUR

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir:

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

Özyineleme (recursion)

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

Web Madenciliği (Web Mining)

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

Temel Kavramlar. (r) Sıfırdan farklı kompleks sayılar kümesi: C. (i) Rasyonel sayılar kümesi: Q = { a b

ALGORİTMA VE PROGRAMLAMA I

p sayısının pozitif bölenlerinin sayısı 14 olacak şekilde kaç p asal sayısı bulunur?

A (B C) = {4, 5, 6} {2, 3, 4, 6, 7} = {4, 6} ; ve (A B) (A C) = {4, 6} {6} = {4, 6}. 6. Dağıtıcı yasayı Venn şeması yoluyla doğrulayınız.

BLM-431 YAPAY ZEKA. Ders-4 Bilgisiz Arama Yöntemleri. Yrd. Doç. Dr. Ümit ATİLA

Transkript:

Karmaşıklık Giriş 1

Algoritma Analizi Neden algoritmayı analiz ederiz? Algoritmanın performansını ölçmek için Farklı algoritmalarla karşılaştırmak için Daha iyisi mümkün mü? Olabileceklerin en iyisi mi? Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan 2

Karmaşıklık: Algoritma performansı ölçme yöntemi Bir algoritmanın performansı iç ve dış faktörlere bağlıdır. İç Algoritma verimliliği: Çalıştırmak için gereken zaman Çalıştırmak için gereken yer (bellek alanı) Dış Girdi verisinin büyüklüğü Bilgisayarın hızı Derleyicinin kalitesi Karmaşıklık iç faktörlerle ve daha çok da zamanla ilgilidir. 3

Çalışma Zamanı Analizi Algoritma 1 T 1 (N)=1000N Algoritma 2 T 2 (N)=N 2 N giriş verisi Çalışma zamanı T 1 (n) Algoritma 1 N giriş verisi 100010101010001111100011000111010101 01010101010010001010101000100000000 000011110101000111010 Çalışma zamanıt 2 (n) Algoritma 2 4

Çalışma Zamanı Analizi Çalışma zamanı T(N) Algoritma 2 Algoritma 1 1000 Giriş verisi N 5

Çalışma Zamanları Özeti N T1 T2 10 10-2 sec 10-4 sec 100 10-1 sec 10-2 sec 1000 1 sec 1 sec 10000 10 sec 100 sec 100000 100 sec 10000 sec N değerinin 1000 den küçük olduğu durumlarda iki algoritma arasındaki çalışma zamanı ihmal edilebilir büyüklüktedir. 6

Büyüme Hızı ve Büyük-O(big-O)notasyonu Büyüme hız bir algoritmanın performansını yansıtan en iyi göstergedir. Büyük-O notasyonu büyüme hızını gösterir. Bir algoritmanın performansını en iyi tanımlayan matematiksel bir formüldür ve algoritmanın iç detaylarına bakılarak elde edilir. Büyük-O girdi verisinin büyüklüğünü gösteren bir N parametresine dayanan bir fonksiyondur. Örneğin n değerine bağlı olarak performansı (sabit a, b, c değerleri için) an 2 + bn + c olan bir algoritmanın performansı O(N 2 ) dir N değeri arttıkça N 2 terimi baskın olacağı için büyük-o notasyonunda sadece baskın olan terim kullanılır 7

O Notasyonu- Asimtotik Üst Limit Bir algoritmanın çalışma süresi T(N)=O(f(n)) O bir fonksiyon değil, sadece gösterimdir. T(N) c f(n) ve N n 0 koşullarını sağlayan c ve n 0 değerleri varsa T(N) c f(n) ifadesi doğrudur. f(n), T(N) in asimtotik üst limiti olarak adlandırılır. T(N)=O(f(n)) 8

O notasyonu O notasyonunda yazarken en basit şekilde yazarız. Örneğin 3n 2 +2n+5 = O(n 2 ) Aşağıdaki gösterimlerde doğrudur fakat kullanılmaz. 3n 2 +2n+5 = O(3n 2 +2n+5) 3n 2 +2n+5 = O(n 2 +n) 3n 2 +2n+5 = O(3n 2 ) 9

Sık Kullanılan Büyüme hızları Zaman karmaşıklığı Örnek O(1) sabit Bağlı listeye ilk eleman olarak ekleme yapma O(log N) log Sıralı bir dizide bir eleman arama O(N) lineer Sıralı olmayan bir dizide bir eleman arama O(N log N) n-log-n N elemanı böl-parçala-yut yöntemiyle sıralama O(N 2 ) ikinci dereceden O(N 3 ) üçüncü dereceden Bir grafikte iki düğüm arasındaki en kısa yolu bulma Ardarda gerçekleştirilen lineer denklemler O(2 N ) üssel Hanoi nin Kuleleri problemi 10

Büyüme Hızları O(N 2 ) Zaman O(Nlog N) Kısa bir süre için N 2 NlogN den daha iyi N 11

Bir programın asıl çalışma zamanını hesaplama (örnek) Bir işlem için harcanan zaman 10ms olsun(bir veri üzerinde yapılan tek bir işlem) 1000 veriyi işlemek için programın ne kadar çalışması gerekir? Programın çalışma zamanı aşağıdaki gibi verilmişse bu değer nasıl hesaplanır? log 10 N N N log 10 N N 2 N 3 (1 veri için zaman) x (N veri için verilen büyük-o( ) zaman karmaşıklığı) 12

büyük-o nasıl hesaplanır? Bir program kodunun zaman karmaşıklığını hesaplamak için 5 kural 1 Döngüler 2 İç içe Döngüler 3 Ardışık deyimler 4 If-then-else deyimleri 5 Logaritmik karmaşıklık 13

Kural 1: Döngüler 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. n defa çalışır for (i=1; i<=n; i++) { m = m + 2; } Sabit zaman Toplam zaman = sabit c * n = cn = O(N) 14

Kural 2:İç içe Döngüler İçteki analiz yapılır. Toplam zaman bütün döngülerin çalışma sayılarının çarpımına eşittir Dış döngü n defa çalışır for (i=1; i<=n; i++) { for (j=1; j<=n; j++) { k = k+1; } } Sabit zaman iç döngü n defa çalışır Toplam zaman = c * n * n * = cn 2 = O(N 2 ) 15

Kural 3: Ardışık deyimler Her deyimin zamanı birbirine eklenir. Sabit zaman Sabit zaman Dış döngü n defa çalışır 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; } } Sabit zaman n defa çalışır iç döngü n defa çalışır toplam zaman = c 0 + c 1 n + c 2 n 2 = O(N 2 ) 16

Kural 4: If-then-else deyimleri 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. test: sabit Diğer if : sabit+sabit (else yok) 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 Toplam zaman = c 0 + c 1 + (c 2 + c 3 ) * n = O(N) 17

Kural 5: Logaritmik karmaşıklık Problemin büyüklüğünü belli oranda(genelde ½) azaltmak için sabit bir zaman harcanıyorsa bu algoritma O(log N) dir. Örnek algoritma (binary search): N sayfalı bir sözlükten bir sözcük arama Sözlüğün orta kısmına bakılır Sözcük ortaya göre sağda mı solda mı kaldığı bulunur? Bu işlem sağ veya solda sözcük bulunana kadar tekrarlanır 18

O notasyonu- Örnek 1 3n 2 +2n+5 = O(n 2 ) ifadesinin doğru olup olmadığını ispatlayınız. 10 n 2 = 3n 2 + 2n 2 + 5n 2 3n 2 + 2n + 5 for n 1 c = 10, n 0 = 1 Çözüm kümesini sağlayan kaç tane n0 ve c cifti olduğu önemli değildir. Tek bir çift olması notasyonun doğruluğu için yeterlidir. 19

O notasyonu- Örnek 2 T(N)=O(7n 2 +5n+4) olarak ifade edilebiliyorsa, T(N) fonksiyonu aşağıdakilerden herhangi biri olabilir. T(N)=n 2 T(N)=1000n 2 +2n+300 T(N)= O(7n 2 +5n+4) =O(n 2 ) 20

O notasyonu- Örnek 3 Fonksiyonların harcadıkları zamanları O notasyonuna göre yazınız. f1(n) = 10 n + 25 n 2 f2(n) = 20 n log n + 5 n f3(n) = 12 n log n + 0.05 n 2 f4(n) = n 1/2 + 3 n log n O(n 2 ) O(n log n) O(n 2 ) O(n log n) 21

Analiz Strateji:Alt ve üst limitlerin bulunması Üst limit Algoritmanın gerçek fonksiyonu Alt limit 22

Analiz Çalışma zamanının kesin olarak belirlenmesi zordur Giriş verilerine bağlı olan en iyi durum (best case) Ortalama durum (Average case), hesaplanması zordur En kötü durum analizi, hesaplanması diğerlerine göre kolaydır 23

En iyi, ortalama, en kötü durum karmaşıklığı Bazı durumlarda en iyi, ortalama, en kötü durum karmaşıklığı gözönüne almak gerekir En kötü, O(N) veya o(n): veya > asıl fonksiyon * Genel, Θ(N): asıl fonksiyon * En iyi, Ω(N): asıl fonksiyon * Örnek: Liste sıralarken eğer liste zaten sıralıya yakınsa yapılacak iş azdır. En kötü durum muhtemel bütün girdiler için bir sınır çizer ve genelde ortalamadan daha kolay bulunur 24

Ω Notasyonu- Asimtotik Alt Limit O notasyonun tam tersidir. Her durumda T(N) c f(n) ve N n0 koşullarını sağlayan pozitif, sabit c ve n0 değerleri bulunabiliyorsa T(N)=Ω(f(n)) ifadesi doğrudur. f(n) f(n), T(N) in asimtotik alt limiti olarak adlandırılır. c g(n) n 0 25

Ω notasyonu- Örnek 1 7n 2 +3n+5 = O(n 4 ) 7n 2 +3n+5 = O(n 3 ) 7n 2 +3n+5 = O(n 2 ) 7n 2 +3n+5 = Ω(n 2 ) 7n 2 +3n+5 = Ω(n) 7n 2 +3n+5 = Ω(1) 26

Algoritma 1 int Sum (int N) { int i, PartialSum; PartialSum=0; for(i=1 ;i<=n ; i++) PartialSum+=i*i*i; return PartialSum; } 1 1+(N+1)+N N+N+2N 1 Çalışma zamanı 6N+4=O(N) 27

Algoritma 2 for(i=0; i<n; i++) for(j=1; j<=n; i++) k++; Çalışma zamanı O(N 2 ) for(i=0; i<n; i++) A[i]=0; for(i=0; i<n; i++) for(j=1; j<=n; i++) A[i]+=A[j]+i+j; Çalışma zamanı O(N 2 ) 28

Algoritma 3 If( condition ) S1 Else S2 Çalışma zamanı max_calışma_zamanı(s1,s2) 29

Algoritma 4 int binary search(a,key,n) low=0, high=n-1 while(low high) mid=(low+high)/2 if(a[mid]<key) low=mid+1 if(a[mid]>key) high=mid-1; if(a[mid]=key) return mid Return not found Her bir iterasyondan sonra, arama yapılacak eleman sayısı logaritmik olarak azalmaktadır. Çalışma süresi O(logN) dir. 30

Algoritma 5 int binarysearch(a,key,low,high) if (low>high) Return not found else mid=(low+high)/2 if(a[mid]<key) Return binarysearch(a,key,mid+1,high) if(a[mid]>key) Return binary search(a,key,low,mid-1) if (A[mid]=key) Return mid T(N)=T(N/2)+O(1) 31

Algoritma 6 MaxSubsequenceSum(const int A[], int n) ThisSum=MaxSum=0; for(j=0;j<n;j++) ThisSum+=A[j]; if (ThisSum<MaxSum) MaxSum=ThisSum; else if(thissum<0) ThisSum=0; Return MaxSum; Çalışma zamanı O(N) 32

Performans her şey demek değildir! Bazen aşağıdaki iki durum birbiriyle çelişebilir: Anlama, yazma ve hata ayıklama kolaylığı Zaman ve yerin verimli kullanılmasıefficient use of time and space Bu nedenle maksimum performans her zaman tercih edilmeyebilir Ancak yine de en uygun algoritmayı kullanmak mümkün olmasa da farklı yöntemleri karşılaştırmak yararlıdır. 33