İleri Algoritma Analizi Ders1 Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Giriş Algoritma nedir? Algoritmanın doğruluğu nedir? Algoritmalar teorisinin araştırma konuları Algoritma tasarlama yöntemleri Problem çözüm aşamaları Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Algoritma nedir? Bilgisayar algoritması bir problemin bilgisayarın yardımıyla sonlu bir zaman süresinde çözülebilmesini sağlayan detaylı ve adım adım ne yapılacağını anlatan talimatlar dizisidir Algoritma problemin verilenlerini (bu verilenlere giriş denir) elde edilmesi istenen sonuçlara (bu sonuçlara da çıkış denir) dönüştürebilmelidir. Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Algoritmanın doğruluğu nedir? Algoritma problemin koşulunu sağlayan her girişi istenen çıkışa dönüştürebiliyorsa bu algoritma doğrudur denir. Bir algoritma problemin koşularını sağlayan en az bir girişi yanlış bir çıkışa dönüştürüyorsa veya herhangi bir çıkışa dönüştüremiyorsa bu algoritma yanlıştır denir. Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Algoritmalar teorisinin araştırma konuları Algoritma tasarlama yöntemleri Algoritmanın analizi: -Doğruluğunun ispatı -İşlem zamanı analizi -Hafıza analizi -Optimal (en iyi) algoritma olma analizi Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Algoritma tasarlama yöntemleri Bir problemin çözümü için bir algoritma yazmadan önce bu algoritmanın hangi yöntemle tasarlanabileceğine karar verilmelidir. Aşağıdaki algoritma tasarlama yöntemleri vardır: -Kaba kuvvet yöntemi -Böl ve yönet yöntemi -Azalt ve yönet yöntemi -Dönüştür ve yönet yöntemi -Hafıza ve zaman takası yöntemi -Dinamik programlama yöntemi -Açgözlü yaklaşım yöntemi -İteratif iyileştirme yöntemi Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Kaba Kuvvet yöntemi Akla gelen ilk yöntemdir Genelde verimli bir algoritma üretmez ama iyi algoritma üretilebilen problemler de vardır. Örneğin, 2 matrisin çarpım algoritması Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Böl ve yönet Problemi daha küçük alt problemlere bölerek çözebilen algoritma tasarlama yöntemidir. Sıralama algoritmaları olan Birleştirmeli sıralama (Merge Sort) ve Hızlı Sıralama (Quicksort) algoritmaları böl ve yönet yöntemi ile tasarlanmışlardır. Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Azalt ve yönet yöntemi Problemde verilen boyutu azaltarak yapılan algoritma tasarlama yöntemidir. Azaltma sabit sayı kadar(genelde bir) veya sabit çarpan kadar (genelde iki) olabilir. Bir sıralama algoritması olan Eklemeli Sıralama (Insertion sort) algoritması azalt ve yönet (bir azaltma ile) yöntemi ile tasarlanmıştır. Sıralı dizide bir arama algoritması olan İkili Arama (Binary Search) algoritması azalt ve yönet (yarıya kadar azaltma) yöntemi ile tasarlanmışlardır. Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Dönüştür ve yönet yöntemi Problemi daha kolay çözülebilen başka bir probleme dönüştürerek yapabilen algoritma tasarlama yöntemidir. Örneğin, bir sıralama algoritması olan Yığın Sıralama (Heapsort) algoritması dönüştür ve yönet yöntemi ile tasarlanmıştır. Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Hafıza Zaman takası yöntemi Bir problemin daha hızlı çözülebilmesi için hafızayı daha fazla kullanarak tasarlanan algoritmalar hafıza zaman takası yöntemi ile tasarlanan algoritmalardır. Bu yöntemle tasarlanmış algoritmalardan biri bir sıralama algoritması olan Sayarak Sıralama (Counting Sort) algoritmasıdır. Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Dinamik Programlama (DP) yöntemi Bu yöntem optimizasyon (en iyiyi bulma) problemlerinde kullanılır. Böl ve yönet yönteminde olduğu gibi problemi daha küçük alt problemlere bölerek algoritma tasarlanır ama bu yöntemde alt problemler böl ve yönet yönteminde olduğu gibi bağımsız olmazlar. DP yöntemi ayrıca problemi çok daha hızlı çözebilmek için hafıza zaman takası yöntemini de kullanmaktadır. DP yöntemi ile tasarlanmış algoritmalara örnek olarak En Uzun Ortak Alt dizi (EUOA)(İngilizcesi LCS) bulma algoritması gösterilebilir. Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Açgözlü yaklaşım Bu yöntem de optimizasyon problemlerini çözmek için kullanılır. Yöntemin ana fikri çok basittir: Her adımda o adım için en iyi olan seçim yapılır ve bu seçimin ana problem için en iyi çözüme ulaştıracağı umut edilir. Genelde yöntem başarılı sonuç vermez ama doğru sonuca ulaştırdığı örnekler de vardır, örneğin kesirli çanta problemi bu yöntemle çözülebilir. Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
İteratif iyileştirme yöntemi Bu yöntem de genelde optimizasyon problemleri için kullanılır. Yöntemin ana fikri: Her adımda en iyi değeri (maksimumu veya minimumu) aranan fonksiyonun bir önceki adıma göre daha iyi değerine ulaşmak Örnek olarak, Doğrusal Programlama problemi için var olan Simpleks algoritma gösterilebilir Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
Problem çözüm aşamaları Problemi anlama Çözüm için strateji belirleme, yani algoritma tasarlama yöntemi için karar verme Algoritma tasarlama (Sözde kod yazma) -Giriş -Çıkış -Adımlar Algoritma analizi -Doğruluğunun ispatı -İşlem süresi ve hafıza analizi -Algoritmanın optimal (en iyi) olma analizi Algoritmayı bir programlama dilinde yazma (Kod yazma) Test ve gerçekleştirme Prof. Dr. Şahin EMRAH İleri Algoritma Analizi
2. Derse kadar dersi alan öğrencilerin yapması gerekenler Aşağıdaki algoritmaların sözde kodlarının incelenmesi ve nasıl çalıştıklarının örnekler üzerinde öğrenilmesi: -Selection Sort -Insertion Sort -Quick Sort -Binary Search Aşağıdaki problemlerin ne olduklarını okumak ve problemi anlamak -Hırsız çantası problemi (0-1 ve kesirli problem) -En uzun ortak altdizi bulma problemi