Algoritma Analizi Hafta 1

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 34

Algoritma Analizi

Hafta-1
Ders Materyalleri
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

– Geliştirildiği problem için doğru olmalıdır *

– Birden fazla biçimde sunulabilmeli

– Net ve anlaşılır olmalıdır

– Sonlu veya sonlandırılabilir olmalıdır

– Algortimanın hangi girişler için olduğu tanımlanmalı


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ü
• Adım 1 : gcd(m,n) Eğer m<n ise m ile n değerlerini değiştir.
• Adım 2 : Eğer n = 0 ise m değerini sonuç olarak döndür ve dur. Değil ise 3. adıma
git
• Adım 3 : (m / n) işlemini yap, kalanı r’ye ata.
• Adım 4 : n değerini m’ye ata, r değerini n’ye ata (m = n, n = r). Adım 2’ dön.
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.
• n er yada geç sıfıra ulaşarak algoritma duracaktır.
r <—12
m n m <— n
n <— r
r<—0
gcd(60,24)—> m n m <— n
n <— r
gcd(24,12)—>
m n
gcd(12,0) n<—0, return m
Ardışık Tamsayı Kontrol Algoritması
Consecutive Integer Checking Algorithm
Algoritma
• Adım 1: 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 e git
Euclid ve Ardışık Tamsayı Kontolü
• 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
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
Asal Çarpanlara Ayırma
• Adım 1 ve Adım 2 açık bir şekilde tanımlanmamış

• Aynı şekilde Adım 3’ te açık olarak tanımlanmamış

• Asal çarpanlara ayırma algoritmanın işlem karmaşıklığı Euclid’in


algoritmasından daha fazla

Eratosthenes’in Eleme Algoritması?


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.
n=25
Eratosthenes’in Eleme Algoritması Sözde kodu
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 (Random Access Machine) model
– Birçok temel algoritmanın denendiği system
– Neuman Makinası
– Aynı anda tek bir işlem yapılır
– İşlemler sırayla yapılır. Bir işlem bittikten sonra diğerine geçilir.
– Parallel algorithms
– Sequential algorithms (Sıralı Algoritmalar)
– Hala birçok algoritma bu yapıya göre geliştirilir.
Kesin Sonuç – Yaklaşık Sonuç Seçimi
• Tam sonuca ulaşılabilir mi? (Exact Algorithm)
• Yaklaşık sonuç mu bulunacak? (Approximation Algorithm)

• Lineer olmayan denklemler


• Belirli integrallerin değerlendirilmesi
• 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 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ü (Eratosthenes eleme algoritması )
– Donanım?
Algoritma Açıklama Yöntemleri

• Doğal dil kullanmak (Kelimeler ile)


• Sözde kod (Pseudo Code)
• Akış Diyagramları
Algoritmanın Doğruluğunun Kanıtlanması
• Denemeler

– Her girdi için bir sonuç ?


– Sonucu sonlu bir sürede mi ?

• İspatlar

– Matematik – Tümevarım
– Algoritmanın yanlış olduğunu göstermek
Algoritmanın Analizi
• Algoritmanın en önemli unsuru DOĞRULUK
• Verimlilik
– Zaman Verimliliği*
– Alan Verimliliği
• Basitlik
• Hangi algoritma daha kolay Euclid ? Ardışık Tamsayı kontrol ?
• Modülerlik
• Sürdürülebilirlik
• Güvenlik
• User Friendly (Kullanıcı Dostu / Kullanım Kolaylığı)
• Teorik yaklaşım
• Empirik yaklaşım
Algoritmanın Kodlanması
• Belirlenen özelliklerin, veri yapılarının uygulanabileceği bir dil
seçilmesi
• Modern diller- Derleyiciler – kod optimizasyonu
• Optimallik
• Verimlilik ?
• Problemin çözdüğü zorluk
• Problem için harcanan çaba
Önemli Problem Türleri
• Sıralama
• Arama
• String İşlemleri
• Graph problemleri
• Kombinasyonel Problemler
• Geometrik problemler
• Nümerik problemler
Sıralama
• Bir listedeki öğeleri artan sırada düzenlemek
• Girdi : n adet sayıdan oluşan dizi <a1, a2, …, an>
• Çıktı : Girdinin a´1≤ a´2 ≤ … ≤ a´n. Şeklinde yeniden düzenlenmesi
• Sıralamaya uygun alanlar (Key) içermelidir.
• KEY:Veri bütününün sıralamayı yönlendirmek için seçilmiş özel parçası
• Neden Sıralama?
• Arama işlemini kolaylaştırmak
• Bazı algoritmalar sıralanmış veriler üzerinde çalışabilir. (Greedy)
Sıralama
• Kararlı

• Bir sıralama algoritması, girişindeki herhangi iki eşit öğenin göreli


sırasını koruyorsa (mi=mj ise ve i>j)

• In Place (Yerinde)
• Fazladan bellek gerektiriyor mu?
Arama
• Bir değeri verilen veri seti içinde bulma
• Sıralama algoritması örnekleri
– Basit Sıralı Arama
– İkili Sıralama
• Her durum için ideal arama algoritması yok
– Hızlı fakat fazla bellek alanı
– Büyük veriler ve geniş ölçekli veritabanları üzerinde
Arama

• İkili arama
Arama
l
– Binary Search
m
r
K=23
1 2 3 4 5 6 7 8 9

1 3 8 11 23 60 74 90 101 113
0

m=4 K=A[m] return m

K=101 m=4, K>A[m] l=m+1 m r


l

0 1 2 3 4 5 6 7 8 9

1 3 8 11 23 60 74 90 101 113

m
l r
m=7, K>A[m] l=m+1
1 3 8 11 23 60 74 90 101 113
0 1 2 3 4 5 6 7 8 9
Arama – Binary Search m

m=8 K=A[m] return m

1 3 8 11 23 60 74 90 101 113
0 1 2 3 4 5 6 7 8 9
String İşleme
• String
– Bir alfabede yer alan karakterlerden oluşmuş dizi
• Alfabetik, nümerik, özel karakterlerden oluşabilir
• String eşleştirme
• Metin içinde arama
• Gen dizilimleri
Graph Problemleri
• Graph
• Düğümler ve bu düğümleri birleştiren çizgiler
• Gerçek Hayat Problemleri
• Ağ modellenmesi, Ulaşım, İletişim, Ekonomi, oyun programlama, Rota
planlama, Devre kartı ve çip üretimi, Genetik mühendisliği
• Graph Örnekleri
• Gezgin Satıcı Problemi
• Graph Boyama
Kombinasyonel problemler
• Kombinasyonel Problemler
– Çeşitli kısıtlılıkları sağlayan kombinasyonel çözümlerin bulunması
– Optimallik

• Sorunlar

• Nesnelerin sayısında en küçük artışın problemi çözülemez kadar


büyütmesi ( Gezgin Satıcı Örneği )
• Bu tip problemleri, kabul edilebilir bir sürede çözebilecek bilinen bir
algoritma yok
Geometrik Problemler
• Geometrik Problemler
– Nokta, doğru, çokgen gibi geometrik nesneler ile ilgilenen formülleri
• Uygulamaları
– Bilgisayar grafikleri
– Robotik
• En Bilinen Problemler
– En yakın çift (Closest Pair)
– Dışbükey gövde (Convex Hull)
Nümerik Problemler
• Matematiksel nesneleri içeren problemlerdir
• Denklem, denklem sistemleri çözümleri
• Belirli İntegral hesabı

Bu problemlerin çözümleri yaklaşık çözülebilir.

Sorun
• Yuvarlama hataları yüzünden sonucun bozulması

You might also like