Professional Documents
Culture Documents
Algoritma Analizi Hafta 1
Algoritma Analizi Hafta 1
Algoritma Analizi Hafta 1
Hafta-1
Ders Materyalleri
Algoritma Nedir?
• Algoritma
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
– Bellek kullanımı
– Veri türü (Eratosthenes eleme algoritması )
– Donanım?
Algoritma Açıklama Yöntemleri
• İ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ı
• 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
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
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
Sorun
• Yuvarlama hataları yüzünden sonucun bozulması