Algoritma Analizi Örnekleri
Algoritma analizi, bir algoritmanın performansını ölçmek ve değerlendirmek için kullanılan bir dizi tekniktir. Algoritma analizi, algoritmanın zaman karmaşıklığı, bellek karmaşıklığı ve diğer performans ölçütlerini belirlemek için kullanılır.
Zaman Karmaşıklığı
Zaman karmaşıklığı, bir algoritmanın girdi boyutuna göre çalışma süresinin nasıl değiştiğini ölçer. Zaman karmaşıklığı genellikle O-notasyonu kullanılarak ifade edilir. O-notasyonu, bir algoritmanın çalışma süresinin girdi boyutuna göre nasıl değiştiğini asimptotik olarak ifade eder.
Örneğin, bir algoritmanın zaman karmaşıklığı O(n) ise, bu algoritmanın çalışma süresi girdi boyutuna doğrusal olarak bağlıdır. Yani, girdi boyutu iki katına çıktığında, algoritmanın çalışma süresi de iki katına çıkar.
Aşağıdaki tabloda, bazı yaygın zaman karmaşıklıkları ve bunların anlamları verilmiştir:
| Zaman Karmaşıklığı | Anlam |
|—|—|
| O(1) | Sabit zaman |
| O(log n) | Logaritmik zaman |
| O(n) | Doğrusal zaman |
| O(n log n) | Doğrusal logaritmik zaman |
| O(n^2) | Karesel zaman |
| O(n^3) | Kübik zaman |
| O(2^n) | Üstel zaman |
Bellek Karmaşıklığı
Bellek karmaşıklığı, bir algoritmanın girdi boyutuna göre kullandığı bellek miktarını ölçer. Bellek karmaşıklığı genellikle O-notasyonu kullanılarak ifade edilir. O-notasyonu, bir algoritmanın kullandığı bellek miktarının girdi boyutuna göre nasıl değiştiğini asimptotik olarak ifade eder.
Örneğin, bir algoritmanın bellek karmaşıklığı O(n) ise, bu algoritmanın kullandığı bellek miktarı girdi boyutuna doğrusal olarak bağlıdır. Yani, girdi boyutu iki katına çıktığında, algoritmanın kullandığı bellek miktarı da iki katına çıkar.
Aşağıdaki tabloda, bazı yaygın bellek karmaşıklıkları ve bunların anlamları verilmiştir:
| Bellek Karmaşıklığı | Anlam |
|—|—|
| O(1) | Sabit bellek |
| O(log n) | Logaritmik bellek |
| O(n) | Doğrusal bellek |
| O(n log n) | Doğrusal logaritmik bellek |
| O(n^2) | Karesel bellek |
| O(n^3) | Kübik bellek |
| O(2^n) | Üstel bellek |
Diğer Performans Ölçütleri
Zaman karmaşıklığı ve bellek karmaşıklığına ek olarak, algoritma analizi için kullanılan diğer performans ölçütleri şunlardır:
- İşlemci karmaşıklığı: İşlemci karmaşıklığı, bir algoritmanın girdi boyutuna göre gerçekleştirdiği işlem sayısını ölçer.
- Giriş/çıkış karmaşıklığı: Giriş/çıkış karmaşıklığı, bir algoritmanın girdi ve çıktı işlemleri için harcadığı zamanı ölçer.
- Paralellik: Paralellik, bir algoritmanın aynı anda birden fazla işlemci üzerinde çalıştırılabilme özelliğini ölçer.
- Ölçeklenebilirlik: Ölçeklenebilirlik, bir algoritmanın girdi boyutu arttığında performansının nasıl değiştiğini ölçer.
Algoritma Analizi Örnekleri
Aşağıda, bazı yaygın algoritmaların zaman karmaşıklığı ve bellek karmaşıklığı örnekleri verilmiştir:
-
Sıralama algoritmaları:
- Kabarcık sıralaması: O(n^2) zaman karmaşıklığı, O(1) bellek karmaşıklığı
- Seçim sıralaması: O(n^2) zaman karmaşıklığı, O(1) bellek karmaşıklığı
- Eklemeli sıralama: O(n^2) zaman karmaşıklığı, O(1) bellek karmaşıklığı
- Hızlı sıralama: O(n log n) zaman karmaşıklığı, O(log n) bellek karmaşıklığı
- Birleştirmeli sıralama: O(n log n) zaman karmaşıklığı, O(n) bellek karmaşıklığı
-
Arama algoritmaları:
- Doğrusal arama: O(n) zaman karmaşıklığı, O(1) bellek karmaşıklığı
- İkili arama: O(log n) zaman karmaşıklığı, O(1) bellek karmaşıklığı
- Hash tablosu: O(1) zaman karmaşıklığı, O(n) bellek karmaşıklığı
-
Grafik algoritmaları:
- Genişlik öncelikli arama: O(V + E) zaman karmaşıklığı, O(V + E) bellek karmaşıklığı
- Derinlik öncelikli arama: O(V + E) zaman karmaşıklığı, O(V + E) bellek karmaşıklığı
- Dijkstra algoritması: O((V + E) log V) zaman karmaşıklığı, O(V + E) bellek karmaşıklığı
- Floyd-Warshall algoritması: O(V^3) zaman karmaşıklığı, O(V^2) bellek karmaşıklığı
Faydalı Siteler ve Dosyalar
- Algoritma Analizi
- Zaman Karmaşıklığı
- Bellek Karmaşıklığı
- Algoritma Analizi Örnekleri
- Algoritma Analizi Dosyaları