Algoritma Nedir? Algoritma

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

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

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

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

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

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

YZM 2116 Veri Yapıları

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

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

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İ

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

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

Algoritmalar ve Karmaşıklık

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#6: AZALT VE FETHET YÖNTEMİ

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

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

Algoritma Analizi Big O

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Algoritmalara Giriş 6.046J/18.401J DERS 2

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

Problem Set 1 Çözümler

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

TAMSAYILAR. 9www.unkapani.com.tr. Z = {.., -3, -2, -1, 0, 1, 2, 3, } kümesinin her bir elemanına. a, b, c birer tamsayı olmak üzere, Burada,

Selection Sort Insertion Sort

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

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

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

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

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

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1

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

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

Ö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.

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

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

1. BÖLÜM Polinomlar BÖLÜM II. Dereceden Denklemler BÖLÜM II. Dereceden Eşitsizlikler BÖLÜM Parabol

Algoritma ve Akış Diyagramları

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

SAYILAR DOĞAL VE TAM SAYILAR

VERİ YAPILARI DATA STRUCTURE GİRİŞ

Alıştırma 1: Yineleme

Java, Python ve Ruby Dillerinin Performans Karşılaştırması

Sayılar Kuramına Giriş Özet

Fonksiyon Optimizasyonunda Genetik Algoritmalar

PERGEL YAYINLARI LYS 1 DENEME-6 KONU ANALİZİ SORU NO LYS 1 MATEMATİK TESTİ KAZANIM NO KAZANIMLAR

1. ÜNİTE:SAYILAR VE İŞLEMLER

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

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

Mühendislik Mekaniği Statik. Yrd.Doç.Dr. Akın Ataş

b) Algoritmanızın en kötü durumda işlem zamanını asimptotik olarak bulunuz

10.Konu Tam sayıların inşası

Lineer Cebir. Doç. Dr. Niyazi ŞAHİN TOBB. İçerik: 1.1. Lineer Denklemlerin Tanımı 1.2. Lineer Denklem Sistemleri 1.3. Matrisler

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

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

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

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

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

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

Tek Değişkenli Optimizasyon OPTİMİZASYON. Gradient Tabanlı Yöntemler. Bisection (İkiye Bölme) Yöntemi

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

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

EŞİTLİK KISITLI TÜREVLİ YÖNTEMLER

Azalt ve Fethet Algoritmaları

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

İÇİNDEKİLER. Bölüm 2 CEBİR 43

O NOTASYONU. Abdullah Gazi Emre DAĞLI

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

YZM 2116 Veri Yapıları

A GRUBU Noktaları adlandırılmış K 6 tam çizgesinin tam olarak 3 noktalı kaç tane alt çizgesi vardır? A) 9 B) 20 C) 24 D) 60 E) 160

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

1. BÖLÜM. Sayılarda Temel Kavramlar. Bölme - Bölünebilme - Faktöriyel EBOB - EKOK. Kontrol Noktası 1

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

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

3. Bölüm Algoritmalar

28/04/2014 tarihli LYS-1 Matematik-Geometri Testi konu analizi SORU NO LYS 1 MATEMATİK TESTİ KAZANIM NO KAZANIMLAR 1 / 31

13.Konu Reel sayılar

YGS - LYS SAYILAR KONU ÖZETLİ ÇÖZÜMLÜ SORU BANKASI

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

2. (x 1 + x 2 + x 3 + x 4 + x 5 ) 10 ifadesinin açılımında kaç terim vardır?

İSTANBUL III. BİLİM OLİMPİYATI

SORULAR. 2. Noktaları adlandırılmamış 6 noktalı kaç ağaç vardır? Çizerek cevaplayınız.

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

Lineer Denklem Sistemleri Kısa Bilgiler ve Alıştırmalar

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

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

4- ALGORİTMA (ALGORITHM)

YAPI STATİĞİ II (Hiperstatik Sistemler) Yrd. Doç. Dr. Selçuk KAÇIN

Algoritma ve Akış Diyagramları

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

Algoritmalar. Doğrusal Zamanda Sıralama. Bahar 2017 Doç. Dr. Suat Özdemir 1

Okut. Yüksel YURTAY. İletişim : (264) Sayısal Analiz. Giriş.

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

Atatürk Anadolu. Temel Kavramlar Üzerine Kısa Çalışmalar

İleri Diferansiyel Denklemler

ISBN NUMARASI: ISBN NUMARASI: ISBN NUMARASI: ISBN NUMARASI:

Transkript:

Algoritma Nedir? Algoritma Bir problemin çözümü için geliştirilmiş özel metot Girdileri çıktılara dönüştüren sıralı hesaplama adımları Tanımlanmış bir problemin çözümü için kullanılan araç «Bir problemin çözümü için izlenilen sıralı ve anlaşılır buyruklar»

Algoritma Hedefi Algoritma ile hedeflenen Sonlu bir zaman içinde Belirli girdiler ile İstenilen çıktıyı elde etmek

Nasıl bir algoritma? Bir algoritma Birden fazla biçimde sunulabilmeli Net ve anlaşılır olmalıdır Etkin ve faydalı olmalıdır Sonlu veya sonlandırılabilir olmalıdır Geliştirildiği problem için doğru olmalıdır

Algoritmanın Tarihçesi El Harezmi 9. yyda yaşamış bir matematikçi Algoritma ve cebir kavramlarının «babası» olarak bilinir 0 sayısını ve x bilinmeyenini ilk kullanan kişi Euclid En büyük ortak böleni bulma problemi için geliştirdiği çözüm ilk algoritmalardan biri olarak kabul ediliyor

En Büyük Ortak Böleni Bulma Problemi EBOB (Greater Common Divisor - gcd) bulma problemi İki negatif olmayan tam sayıyı kalansız bölen en büyük sayının bulunması gcd(m, n) =? Euclid Çözümü (m mod n) işleminin sonucu 0 olana kadar gcd(m, n) = gcd(n, m mod n) işlemini tekrar et gcd(60, 24) = gcd(24, 12) = gcd(12, 0) = 12.

EBOB Problemi Euclid Çözümü (m mod n) işleminin sonucu 0 olana kadar gcd(m, n) = gcd(n, m mod n) işlemini tekrar et gcd(60, 24) = gcd(24, 12) = gcd(12, 0) = 12. Adım 1 : Eğer n = 0 ise m değerini sonuç olarak döndür ve dur Değil ise 2. adıma git Adım2 : (m / n) işlemini yap, kalanı r ye ata. Adım 3 : n değerini m ye ata, r değerini n ye ata (m = n, n = r). Adım 1 dön. Sözde Kod

EBOB Problemi Euclid in algoritmasının sonu var mı? N değeri her iterasyonda küçülüyor. 0 dan daha küçük, negatif, olamayacağı biliniyor. İki pozitif sayının bölme işleminden negatif sayı veya kalan çıkamaz. Er yada geç sıfıra ulaşarak algoritma duracaktır.

EBOB Problemi Ardışık Tamsayı Kontrol Algoritması ile Çözüm (Consecutive integer checking algorithm) EBOB (m,n) ikilisinin küçük olanından daha büyük olamaz Min(m,n) değerinin EBOB olup olmadığı kontrol edilir Min(m,n) EBOB ise işlem sonlanır,» Değil ise bir azaltılarak tekrar kontrol edilir (min(m,n)--) Algoritma Adım1: min{m, n} değerini t ye ata. Adım 2: (m / t) işlemini yap, Eğer kalan = 0 ise Adım 3 e git; Değil ise adım 4 e git Adım 3 : (n/t) işlemini yap. Eğer kalan = 0 ise t değerini sonuç olarak döndür Değil ise adım 4 e git Adım 4: t değerini 1 azalt, Adım 2 ye git

EBOB Problemi Euclid in algoritmasından farklı olarak bu algoritma Değerlerden biri 0 ise doğru çalışmaz (Neden?) Algoritma girdilerinin kesin ve dikkatli bir şekilde belirlenmesi gerekliliği ve önemi

EBOB Problemi Asal Çarpanlara Ayırma EBOB u bulunacak sayılar asal çarpanlarına ayrılır Ortak asal çarpanların çarpımı EBOB u verir Adım 1 : m nin asal çarpanlarını bul Adım 2: n nin asal çarpanlarını bul Adım 3: Adım1 ve Adım2 de hesaplanan asal çarpanlardan ortak olanları belirle Adım 4: Ortak asal çarpanları çarp

EBOB Problemi Asal çarpanlara ayırma algoritmanın işlem karmaşıklığı Euclid in algoritmasından daha fazla Asal çarpanlara ayırma işleminin algoritması açık değil Eratosthenes in Eleme Algoritması?

Asal Sayıları Bulma Eratosthenes in Eleme Algoritması? 2 ile n arasındaki asal sayıları bulmak için kullanılır 1. iterasyonda 2 nin katları 2. iterasyonda 3 ün katları 3. iterasyonda 5 in katları elenir (?)

Asal Sayıları Bulma

Algoritma Tasarım ve Analiz Süreci

Algoritma Tasarım ve Analiz Süreci Problemin Anlaşılması Problem net bir şekilde ifade edilmeli Anlaşılmayan hususlar için sorular Gerekliyse elle işletme İstisnai durumlar? Kullanılacak Donanımın Yetenekleri RAM model Birçok temel algoritmanın denendiği sistem

Algoritma Tasarım ve Analiz Süreci Kesin Sonuç Yaklaşık Sonuç Seçimi Tam sonuca ulaşılabilir mi? (Exact Algorithm) Yaklaşık sonuç mu bulunacak? (Approximation Algorithm) Lineer olmayan denklemler Karekök Bazı durumlarda kesin sonuca ulaşmak için Uzun işlem süresi Karmaşık işlemler gerekiyorsa yaklaşık sonuç kabul edilebilir

Algoritma Tasarım ve Analiz Süreci Algoritma Tasarım Tekniğinin Belirlenmesi Algoritma Tasarım Tekniği Çözüm için kullanılabilecek algoritmik bir yaklaşım Çeşitli hesaplama problemlerinde uygulanabilir olmalı Algoritma Tasarımı ve Veri Yapıları Bellek kullanımı Veri türü Donanım?

Algoritma Tasarım ve Analiz Süreci Algoritma Açıklama Yöntemleri Akış diyagramı Sözde kod Kelimeler ile anlatım Algoritmanın doğruluğunun kanıtlanması Denemeler İstisnalar İspatlar

Algoritma Tasarım ve Analiz Süreci Algoritmanın Analizi Algoritmanın doğruluğu en önemli unsur Etkinlik Zaman Etkinliği Basitlik Algoritmanın kodlanması Belirlenen özelliklerin, veri yapılarının uygulanabileceği bir dil seçilmesi

Önemli Problem Türleri Sıralama Arama String İşlemleri Graph problemleri Kombinasyonel Problemler Geometrik problemler Nümerik problemler

Önemli Problem Türleri Sıralama Bir listedeki öğeleri artan sırada düzenlemek Girdi : n adet sayıdan oluşan dizi <a 1, a 2,, a n > Çıktı : Girdinin a 1 a 2 a n. Şeklinde yeniden düzenlenmesi Neden Sıralama? Arama işlemini kolaylaştırmak Birçok algoritmanın altyordamı Sıralama Anahtarı Veri bütününün sıralamayı yönlendirmek için seçilmiş özel parçası Bir başarı listesinin sıralanması (İsme, numaraya, nota göre)

Önemli Problem Türleri Örnek sıralama algoritmaları Selection Bubble sort Insertion sort Merge sort Heap sort Sıralama algoritması karmaşıklığını değerlendirmek Yapılan Karşılaştırma sayısı Sıralama algoritmaları için iki önemli özellik Stabilite: İki eşit elemanın birbirlerine göre sıralanmadan önceki pozisyonlarında kalması Bir dizide birbirine eşit iki eleman var. Sıralamadan önceki konumları i ve j, i<j Sıralamadan sonraki konumları i ve j ve i <j ise algoritma stabil bir sıralama algoritmasıdır Yerinde (In place) : Fazladan bellek alanı gerektirmeyen sıralama algortimaları İstisna olarak küçük bellek birimleri kullanabilir Dizinin tamamı kadar değil, bir değişken kadar

Önemli Problem Türleri Arama Bir değeri verilen veri seti içinde bulma Sıralama algoritması örnekleri Sıralı arama İkili arama Her durum için ideal arama algoritması yok Hızlı fakat fazla bellek alanı Sadece sıralı verilerde arama

Önemli Problem Türleri

Önemli Problem Türleri Sıralı dizi içerisinde 19 değeri aranıyor 1,2,3,5,6,7,8,10,12,13,15,16,18,19,20,22 1,2,3,5,6,7,8,10 12,13,15,16,18,19,20,22 12,13,15,16 18,19,20,22 18,19 20,22

Önemli Problem Türleri String İşleme String Bir alfabede yer alan karakterlerden oluşmuş dizi Alfabetik, nümerik, özel karakterlerden oluşabilir Örnek Bir metin içerisinde www ifadesini aramak @ karakterini aramak Derleyiciler

Önemli Problem Türleri Graph Problemleri Graph Birbirine sınır adı verilen hatlarla bağlı noktalar grubu Gerçek hayat problemleri WWW modellemesi Haberleşme ağları Proje planlaması Graph örnekleri En kısa yol Topolojik sıralama

Önemli Problem Türleri Kombinasyonel problemler Çeşitli kısıtlılıkları sağlayan kombinasyonel çözümlerin bulunması Maksimum değer, minimum maliyet Sorunlar Probleme göre kombinasyonel çözümler çok büyüyebilir Bu tip problemleri, kabul edilebilir bir sürede çözebilecek bilinen bir algoritma yok

Önemli Problem Türleri Geometrik problemler Nokta, doğru, çokgen gibi geometrik nesneler ile ilgilenen formülleri Uygulama Alanları Robotik Bilgisayar Grafikleri Tomografi En bilinen problemler En yakın çift (Closest Pair) Dışbükey gövde (Convex Hull)

Önemli Problem Türleri Nümerik Problemler Yaklaşık çözüme ulaşılmış problemlerin kesin sonuca ulaştırılmaya çalışılması Denklem, denklem sistemi çözümleri Kısıtlı integraller

En Yakın Çift Problemi Verilen nokta kümesi içerisinde birbirine en yakın noktaları bulmak NOKTA X KOORDİNATI Y KOORDİNATI A 3 2 B 2 5 C 5-3 D -2 0 E 4 6 F 0-4 İki Nokta Arası Mesafe : (X1 X2 )^2 + (Y1 Y2 )^2

Metin Arama Bir metin içerisinde aranan ifadeyi bulmak Büyük / Küçük Harf duyarlılığı? Tam uyum / Ek almış?

Algoritma Analizi Çerçevesi Algoritma Analizinde Göz Önünde Bulundurulması Gerekenler Neler? Algoritmanın Doğruluğu (Correctness) Zaman Verimliliği (Time Efficiency) Bellek Alanı Verimliliği (Space Efficiency) Gelişen donanım teknolojisi ile artık çok önemli değil Uygunluk, en iyilik (Optimality)

Algoritma Analizi Çerçevesi Girdi Büyüklüğünün Ölçülmesi Çalışma Zamanı Ölçü Biriminin Belirlenmesi Büyüme Derecesi (Order of Growth) En kötü durum, en iyi durum, ortalama durum değerlendirmeleri

Girdi Büyüklüğünün Ölçülmesi Girdi Büyüklüğünün Ölçülmesi Tüm algoritmalar için büyük girdiler üzerinde çalışma süresi daha uzundur Büyük dizi içinde arama Büyük boyutlu matrisleri çarpma Algoritmaya girilen veriyi belirten n değerinin belirlenmesi önemli Bazı algoritmalar için kolay Arama, sıralama, eleman sayısı bulma Bazı algoritmalar için değil İki matrisin çarpımı» Matrislerin derecesi mi? Eleman Sayıları mı? Yazım hatası programı» Karakter Sayısı mı? Kelime Sayısı mı?

Çalışma Zamanı Ölçü Biriminin Belirlenmesi Bir Algoritmanın Çalışma Zamanı Çalıştığı bilgisayar sisteminin hızı Algoritmanın kullanıldığı programın kalitesine Makine kodunu üreten derleyici gibi etkenlere bağımlıdır Bu yüzden dış etkenlere bağımlı olmayan bir ölçüm yolu bulunmalıdır Bir yaklaşım: Algoritma içerisindeki tüm işlemlerin kaç kere gerçekleştiğinin sayılması Zor ve Gereksiz Bir diğer yaklaşım: Algoritma içerisindeki temel işlemin belirlenip, kaç kere gerçekleştiğinin sayılması

Çalışma Zamanı Ölçü Biriminin Belirlenmesi Zaman verimliliğinin teorik incelenmesi Zaman verimliliği girdi üzerindeki temel işlemin tekrar sayısı üzerinden değerlendirilir Temel işlem Algoritmanın çalışma süresince en çok gerçekleştirilen işlem

Çalışma Zamanı Ölçü Biriminin Belirlenmesi Temel işlemin belirlenmesi Genellikle en çok gerçekleşen işlem Genellikle en iç döngüde yapılan işlem Sıralama algoritmaları için karşılaştırma Matematiksel işlemler için genellikle 4 işlem / en uzun işlem, sonra *, + ve

Çalışma Zamanı Ölçü Biriminin Belirlenmesi c op : Bir algoritmanın temel işleminin bir bilgisayardaki çalışma süresi C(n) : Temel işlemin gerçekleşme sayısı T(n) : Algoritmanın uygulandığı programın çalışma süresi T(n) c op C(n) Bu formülün yaklaşık ve tahmini bir değer verdiği unutulmamalı

Çalışma Zamanı Ölçü Biriminin Belirlenmesi T(n) c op C(n) Bu programı 10 kat hızlı bir bilgisayarda çalıştırsak ne kadar hızlı sonuç alırız? Cevap : 10 kez ise girdiyi iki kat büyütürsek çalışma zamanı ne kadar artar?

Büyüme Derecesi Büyüme derecesi Küçük girdi boyutları ile bir algoritmanın etkinliğinin değerlendirilmesi sağlıklı değil

En İyi, En Kötü, Ortalama Durum En kötü durum n boyutunda girdi üzerinden en yüksek değer En iyi durum n boyutunda girdi üzerinden en düşük değer Ortalama durum n boyutunda girdi için «ortalama» değer Tipik bir girdi için temel işlemin kaç kere olduğu En kötü ile en iyinin ortalaması değil Temel işlem sayısı olarak bir olasılık dağılımı içerisinden rastgele bir değişken değeri beklenir

En Kötü Durum Sıralı arama için En kötü durum: Aranan değerin dizide bulunmaması N boyutunda girdi için maksimum sayıda karşılaştırma C worst (n) = n En kötü durum incelemesi bir algoritmanın çalışma zamanı açısından üst sınırını belirler

En İyi Durum İncelemesi Sıralı arama için En iyi durum: Aranan değerin ilk karşılaştırmada bulunması N boyutunda girdi için maksimum sayıda karşılaştırma C best (n) = 1 En iyi durum incelemesi en kötü durum kadar önemli bir veri sağlamaz.

Ortalama Durum İncelemesi En iyi durum incelemesi de en kötü durum incelemesi de bir algoritmayı değerlendirmek için yeterli veri sağlamaz Algoritmanın tipik veya rastgele bir girdi karşısındaki davranışı?

Ortalama Durum İncelemesi Sıralı arama için Standart kabule göre başarılı bir aramanın olasılığı p (0<=p<=1) İlk karşılaştırmada bulma olasılığı her hangi bir i değeri için aynı. (p/n) Bulunamama olasılığı n.(1-p)

Ortalama Durum p=1 ise (Başarılı arama) C avg (n) = (n+1) / 2 olur. Bu durum başarılı bir aramda algoritmanın ortalama olarak dizinin yarısına kadar aranan elemanı bulacağı kabul edilir.

1. n elemanın toplamı 2. n! değerinin hesaplanması 3. n elemanlı dizinin en büyük elemanının bulunması 4. Öklid in EBOB algoritması 5. n*n boyutlu iki matrisin toplanması 6. n*n boyutlu iki matrisin çarpımı Yukarıdaki algoritmaların temel işlemlerini ve gerçekleşme sayılarını bulunuz. C(n) Sıralı aramayı aranan verinin yer aldığı indis listesi veren versiyonunu tasarlayıp(birden fazla kez yer alma durumu), verimliliğini klasik sıralı aramayla karşılaştırın. (C(n), T(n), En kötü, en iyi durumlar)

Büyüme Derecesinin Asimptotik İncelemesi Algoritma verimliliğinin değerlendirilmesinde büyüme derecesi temel işlemin gerçekleşme sayısı ile ilgilidir Büyüme derecesi değerlendirilirken 3 farklı notasyon kullanılır O (Big Oh) Ω (Big Omega) Θ (Big Theta)

Big Oh Notasyonu O(g(n) : Bir g(n) fonksiyonu ile aynı veya daha düşük büyüme derecesine sahip fonksiyonların tümü Bir sabit katsayı ve n değeri sonsuza giderken

Big Oh Notasyonu

Big Oh Notasyonu Bir t(n) fonksiyonu için O(g(n)) içerisindedir diyebilmek için (- t (n) O(g(n)) -) T(n), Daha büyük n değerleri için üstten, sabit çarpanlı bir g(n) fonksiyonu ile sınırlandırılmış olmalıdır. Pozitif sabit katsayı c, n 0 negatif olmayan bir tamsayı ise t (n) cg(n), n n 0 ise 100n + 5 O(n 2 ) için ispat 100n + 5 100n + n, n 5 ise 100n + 5 101n 101n 101n 2 c = 101, n 0 = 5 alınabilir

Big Omega Notasyonu Ω(g(n)) Bir g(n) fonksiyonu ile aynı veya daha büyük büyüme derecesine sahip fonksiyonların tümü Bir sabit katsayı ve n değeri sonsuza giderken

Big Omega Notasyonu

Big Omega Notasyonu Bir t(n) fonksiyonu için Ω(g(n)) içerisindedir diyebilmek için (- t (n) Ω (g(n)) -) T(n), Daha büyük n değerleri için alttan, sabit çarpanlı bir g(n) fonksiyonu ile sınırlandırılmış olmalıdır. Pozitif sabit katsayı c, n 0 negatif olmayan bir tamsayı ise t (n) cg(n), n n 0 ise n 3 Ω(n 2 ) ispatı için n 3 n 2, n 0 ise c = 1, n 0 = 0 alınabilir

Big Theta Notasyonu Θ(g(n)) Bir g(n) fonksiyonu ile aynı büyüme derecesine sahip fonksiyonların tümü Bir sabit katsayı ve n değeri sonsuza giderken an 2 + bn + c, a > 0 ise Θ(n 2 ) içerisindedir

Big Theta Notasyonu

Big Theta Notasyonu Bir t(n) fonksiyonu için Θ (g(n)) içerisindedir diyebilmek için (- t (n) Θ (g(n)) -) t(n), Daha büyük n değerleri için alttan ve üstten, sabit çarpanlı bir g(n) fonksiyonu ile sınırlandırılmış olmalıdır. Pozitif sabit katsayı c 1 ve c 2, n 0 negatif olmayan bir tamsayı ise c 2 g(n) t (n) c 1 g(n), n n 0 ise

Asimptotik Büyüme Derecesi İçin Bazı Özellikler f(n) O(f(n)) f(n) O(g(n)), eğer g(n) (f(n)) Eğer f (n) O(g (n)) ve g(n) O(h(n)), ise f(n) O(h(n)) If f 1 (n) O(g 1 (n)) ve f 2 (n) O(g 2 (n)), ise f 1 (n) + f 2 (n) O(max{g 1 (n), g 2 (n)})

Büyüme Derecelerinin Karşılaştırılması O, Ω, ve Θ yaklaşımları tanımlarının birbirinden bağımsız olması sebebiyle iki fonksiyonun büyüme derecelerinin karşılaştırılmasında pek kullanılmaz Bu işlem için iki fonksiyonlarının oranının sonsuza giderken limit yaklaşımı daha uygundur

Limit Yöntemi İle Karşılaştırma 0 t(n) büyüme derecesi < g(n) büyüme derecesi c > 0 t(n) büyüme derecesi = g(n) büyüme derecesi t(n) büyüme derecesi > g(n) büyüme derecesi İlk iki durum : t (n) O(g(n)), İkinci durum : t (n) Θ(g(n)) Son iki durum : t (n) Ω(g(n)),

Limit Yöntemi İle Karşılaştırma L Hôpital Kuralı: Eğer lim n f(n) = lim n g(n) = ve f, g türevleri varsa Çok büyük n değerleri için Stirling Formülü

Örnek 1 n n 1 ile 2 n2 fonksiyonlarının büyüme derecelerini karşılaştırınız Sonuç sabit olduğu için eşit büyüme derecelerine sahipler

Örnek Log 2 n ve n fonksiyonlarının büyüme derecelerini karşılaştırınız. Log 2 n büyüme derecesi daha küçüktür

Örnek n! ve 2 n fonksiyonlarının büyüme derecelerini karşılaştırınız n! Daha hızlı büyümektedir. n! Ω(2 n )

Örnek 1 constant log n n n log n n 2 n 3 logarithmic linear linearithmic quadratic cubic 2 n exponential n! factorial

Özyineli Olmayan (Nonrecursive) Algoritmaların Matematiksel Analizi En büyük elemanı bulma problemi

En Büyük Elemanı Bulma Problemi Girdi büyüklüğü : n elemanlı dizi En çok gerçekleştirilen işlem: Döngünün içerisindeki işlemler Karşılaştırma Atama En iyi, en kötü, ortalama durum Tüm elemanlar için karşılaştırma yapılacağından söz konusu değil Karşılaştırma işlemi kaç kere yapılıyor? Döngünün her turunda 1 kez Bu toplamın sonucu

Özyineli Olmayan Algoritmaların Zaman Etkinliğinin Analizinin Genel Planı 1. Girdi büyüklüğünü gösteren parametrelerin belirlenmesi 2. Algoritmanın temel işleminin belirlenmesi 3. Girdi büyüklüğüne bağımlı olarak temel işlemin kaz kez gerçekleştiğinin bulunması Başka parametrelere bağlı ise en kötü, en iyi, ortalama durum incelemeleri 4. Temel işlemin kaç kez gerçekleştiğinin bir toplam formülüyle gösterilmesi 5. Toplam formülünün büyüme derecesini gösterecek forma dönüştürülmesi

Dizi Elemanlarının Eşsizliği Bir dizinin tüm elemanlarının birbirinden farklı olması Girdi büyüklüğü : n En çok gerçekleştirilen işlem: Döngünün içerisindeki işlemler Karşılaştırma Karşılaştırma işleminin gerçekleşme sayısı Sadece n e bağlı değil Eşit eleman olmasına da bağlı İnceleme en kötü duruma göre yapılmalı En kötü durum Dizide eşit eleman olmaması Dizinin son iki elemanının eşit olması Karşılaştırma işleminin gerçekleşme sayısının hesabı limitleri i+1 den n-1 e kadar olan içteki j döngüsünün her tekrarında 1 karşılaştırma yapılıyor İç döngü dıştaki i döngüsünün her değeri için tekrarlanıyor

Dizi Elemanlarının Eşsizliği

n*n Matris Çarpımı n*n boyutlarındaki iki matrisin çarpımı

n*n Matris Çarpımı Girdi büyüklüğü : n. Dereceden matris En çok gerçekleştirilen işlem: En iç döngünün içerisindeki işlemler Toplama ve Çarpma Döngünün her turunda 1 kez gerçekleşiyorlar Birini seçmek yeterli (Çarpma) En iyi, en kötü, ortalama durum incelemesi Matrisin tüm elemanları için işlem yapılacağından gerek yok Temel işlem çarpma (M(n)) En içteki k döngüsünün her tekrarında 1 kez gerçekleşiyor Alt sınır 0, üst sınır n-1 Toplam çarpma sayısı

Onluk Sayının İkili Sayı Sisteminde Basamak Sayısının Bulunması Bir pozitif onluk sayının ikili sayı sisteminde kaç basamaklı olduğunun bulunması Temel işlem : Karşılaştırma Döngünü içinde değil Döngü içeriğinin icra edilip edilmeyeceğini belirliyor Karşılaştırma döngü içindeki işlemlerden 1 kez fazla yapılıyor Gerçekleşme Sayısı Döngü değişkeni alt ve üst sınırları arasında çok az değer alıyor Her tekrarda yarılanmasından dolayı Bu durumda n girdi boyutu için log 2 n olmalıdır Temel işlem (n>1) log 2 n + 1 kez gerçekleşir Bu tür durumların incelenmesi özyineli algoritmalar ile daha sağlıklı olur

Özyineli Algoritmaların Matematiksel Analizi F(n) = n! Değerinin hesaplanması F(n) = F(n-1).n Temel işlem: Çarpma M(n)

Faktöriyel Alma M(n) n e bağlı bir fonksiyon Dolaylı olarak aynı zamanda n-1 e bağlı bir fonksiyondur Bu duruma özyineleme denir Yapılması gereken çözülmesidir serisinin

Faktöriyel Alma if n = 0 return 1. satırı n =0 olduğunda özyineleme çağırımının duracağını ve çarpma işlemi yapılmayacağını belirtir Bu durum özyineleme ilişkisini ve çarpma sayısı algoritması için başlangıç koşulunu verir

Faktöriyel Alma Özyineleme ilişkisinin çözümü için kullanılan yöntemlerden biri Backward Substitution (Geriye doğru değiştirme) Seri incelendiğinde şu örüntü görülebilir. n = 0 dan i = n e kadar gidildiğinde

Özyineli Algoritmaların Zaman Etkinliğinin Analizinin Genel Planı 1. Girdi büyüklüğünü gösteren parametrelerin belirlenmesi 2. Algoritmanın temel işleminin belirlenmesi 3. Girdi büyüklüğüne bağımlı olarak temel işlemin kaz kez gerçekleştiğinin bulunması Aynı büyüklükteki girdiler için farklı sayıda gerçekleşiyorsa en kötü, en iyi, ortalama durum incelemeleri 4. Temel işlemin kaç kez gerçekleştiğinin bir özyineleme ilişkisiyle gösterilmesi 5. Özyinelemenin çözülmesi ve büyüme derecesinin araştırılması

Hanoi Kuleleri Bulmacası Hanoi Kuleleri Bulmacası Farklı büyüklüklerde diskler 1. Çubuktan 3. çubuğa aynı sırayla taşınacak Her defasında bir disk hareket ettirilecek Büyük disk küçük diskin üzerine gelmeyecek

Hanoi Kuleleri Bulmacası n>1 adet disk Ç1 den Ç3 e özyineli olarak taşınması Önce n-1 disk Ç1 den Ç2 ye özyineli olarak taşınır n. Disk Ç1 den Ç3 e taşınır Son olarak n-1 disk Ç2 den Ç3 e özyineli olarak taşınır n=1 ise 1 hareketle işlem gerçekleşir.

Önce n-1 disk Ç1 den Ç2 ye özyineli olarak taşınır n. Disk Ç1 den Ç3 e taşınır Son olarak n-1 disk Ç2 den Ç3 e özyineli olarak taşınır Girdi büyüklüğü: Disk sayısı Hamle Sayısı (M(n)) n e bağımlı Başlangıç koşulu M(1)=1 olduğuna göre özyineleme ilişkisi Backward Substitution (Geriye doğru değiştirme) Örüntü

Hanoi Kuleleri Bulmacası Örüntü Başlangıç koşulu n=1, i=n-1 tekrar sayısı formülde yerine konursa: Algoritmanın büyüme derecesi üssel bir fonksiyondur. Büyük n değerleri için çözüm çok uzun sürecektir. Bu durum algoritmanın etkin olmadığını göstermez

Fibonacci Sayıları Fibonacci Sayıları: 0, 1, 1, 2, 3, 5, 8, 13, 21, Fibonacci Özyinelemesi: F(n) = F(n-1) + F(n-2) F(0) = 0 F(1) = 1

Kaba Kuvvet Algoritmaları Kaba Kuvvet Bir problemi çözmek için en basit yaklaşım Genellikle problemin tanımına ve konseptine bağımlıdır Genellikle uygulaması en basit çözümdür En temel örnekler a n hesaplanması n! Hesaplanması İki matrisin çarpımı Bir dizide bir elemanın aranması

Seçimli Sıralama Seçimli Sıralama (Selection Sort) Dizinin içerisindeki en küçük eleman bulunur. 1. sıradaki elemanla yer değiştirilir. En küçük bulma işlemi dizinin ikinci elemanından başlanılarak tekrar edilir. Bulunan en küçük değer 2.sıradaki elemanla yer değiştirir. Bu işlem dizinin son elemanına kadar devam eder.

Seçimli Sıralama

Seçimli Sıralama Temel işlemin gerçekleşme sayısı formülü:

Kabarcık Sıralama

Kabarcık Sıralama

Kabarcık Sıralama Temel İşlem :? Gerçekleşme Sayısı :?

Kaba Kuvvet Arama Algoritmaları Sıralı Arama (Sequential Search) Kaba Kuvvet String Eşleme (Bruteforce String Matching)

Sıralı Arama Aranan elemanı dizi elemanları ile tek tek karşılaştırarak arama yapar Aranan elemanın dizi içerisinde (varsa) bulunduğu ilk indisi verir

Kaba Kuvvet String Eşleme n uzunluğundaki T metni içerisinde m uzunluğundaki P örüntüsünü arama

Kaba Kuvvet String Eşleme Kötü durum Aranan örüntünün bulunamaması Kaydırmanın örüntünün son karakteri karşılaştırıldıktan sonra yapılabilmesi Her seferinde (n-m+1 kez) 3. karakter karşılaştırmasında uyumsuzluk çıkması Bu durumda sınıfı : O(nm) Ortalama durum: Bir doğal dil için birkaç karşılaştırmada uyumsuzluk yakalanır

Etraflı Arama Etraflı Arama (Exhaustive Search) Kombinasyonel çözümler içerisinden belli bir özelliğe sahip olanı arama için kullanılan bir kaba kuvvet çözümü Her ihtimal denenerek arama yapılır Gezgin Satıcı Problemi (Traveling Salesman) Sırt Çantası Problemi (Knapsack Problem) İşe Alma Problemi (Assignment Problem)

Gezgin Satıcı Problemi Bir satıcının Aralarındaki mesafeler bilinen şehirleri Her şehirden bir kez geçerek başladığı şehre en kısa yoldan dönmesi Hamiltonian Circuit (n-1)!/2

Sırt Çantası Problemi Bir hırsızın çalacağı nesnelere karar verme problemi Çantasına sığmalı Değeri mümkün olduğunca yüksek olmalı

İşe Alma Problemi n aday n pozisyon için işe başvuruyor Her aday her farklı pozisyon için farklı maaş talep ediyor Her pozisyona 1 kişi alınacak Her aday işe alınacak Toplam maaş maliyeti minimum olacak

İşe Alma Problemi

Böl ve Fethet Algoritmaları Böl ve fethet En sık kullanılan algoritma tasarım tekniklerinden biri 1. Problem alt problemlere bölünür Genellikle eşit büyüklükte 2. Alt problemler çözülür 3. Gerekliyse alt problem çözümleri birleştirilir

Master Teoremi Bir özyineleme ilişkisi için T(n) = at(n/b) + f (n), f(n) (n d ), d 0 Örnek : T(n) = 4T(n/2) + n T(n)? T(n) = 4T(n/2) + n 2 T(n)? T(n) = 4T(n/2) + n 3 T(n)?

Birleştirmeli Sıralama Birleştirmeli Sıralama (Merge Sort) Bir sırasız diziyi sıralı hale getirme Diziyi özyinelemeli olarak ikiye ayırır En küçük hale getirdikten sonra karşılaştırarak birleştirir

Birleştirmeli Sıralama

Birleştirmeli Sıralama

Birleştirmeli Sıralama Özyineleme ilişkisi C merge (n) incelenirse: Her adımda bir karşılaştırma Eğer dizi indisleri bir azaltılmaya devam ediyorsa Yani dizilerden biri boşalmadıysa En kötü durum: Bir dizide tek eleman kaldığında diğerinin boşalmamış olması C merge (n) = (n 1) Master Teoremine göre a=2, b=2, d=1

QuickSort Böl ve Fethet sıralama algoritması Merge sort tan farkı Diziyi alt dizilere konumlarına göre değil Değerlerine göre böler

QuickSort

QuickSort Bir eleman pivot seçilir Dizi biri pivot olmak üzere 3 alt diziye ayrılır Diğer iki dizi arasında pivottan küçük elemanlar ile pivottan büyük elemanlar değiştirilir Pivotun solunda pivottan büyük elemanlar olacak şekilde yer değişimi yapılır

QuickSort

QuickSort

QuickSort En iyi durum: Master Teoremine göre: En kötü Durum: Ortalama Durum:

Çok Basamaklı Sayıların Çarpılması Çok basamaklı iki sayının çarpımı A = 12345678901357986429 B = 87654321284820912836 Normal Çarpma Algoritması: a 1 a 2 a n b 1 b 2 b n (d 10 ) d 11 d 12 d 1n (d 20 ) d 21 d 22 d 2n (d n0 ) d n1 d n2 d nn Etkinliği: n 2

Böl ve Fethet ile Çarpım Örnek: A B =? A = 2135 and B = 4014 A = (21 10 2 + 35), B = (40 10 2 + 14), A B = (21 10 2 + 35) (40 10 2 + 14) = 21 40 10 4 + (21 14 + 35 40) 10 2 + 35 14 Algoritma: A = A 1 A 2 ve B = B 1 B 2 ise ( A ve B n-basamaklı, A 1, A 2, B 1, B 2 ise n/2-basamaklı sayılar), A B = A 1 B 1 10 n + (A 1 B 2 + A 2 B 1 ) 10 n/2 + A 2 B 2 Özyineleme ilişkisi: M(n): M(n) = 3M(n/2), n>1, M(1) = 1

Strassen in Matris Çarpım Algoritması Strassen in matris çarpımı için geliştirdiği algoritma

Strassen in Matris Çarpım Algoritması Matrisler ikinin katı değilse sıfır ile tamamlanır Çarpım Sayısı: M(n) = 7M(n/2), M(1) = 1 Çözüm: M(n) = 7 log 2n = n log 27 n 2.807 vs. n 3 (Kaba kuvvet)