📊 Rekürsif Analiz - Kısa Notlar
🔄 Yerine Koyma Metodu (Substitution)
Ne Zaman Kullanılır?
T(n) = T(n-1) + f(n) tipindeki rekürsiyonlar için
Örnek: T(n) = T(n-1) + n
Adımlar:
T(n) = T(n-1) + n
= T(n-2) + (n-1) + n
= T(n-3) + (n-2) + (n-1) + n
= ...
= T(0) + [1 + 2 + 3 + ... + n]
k adım sonra:
T(n) = T(n-k) + [(n-k+1) + ... + n]
Taban duruma ulaş: n-k = 0 → k = n
T(n) = T(0) + [1 + 2 + ... + n]
= 1 + n(n+1)/2
= O(n²)
Görselleştirme
foo(4) → 4 printf + foo(3)
foo(3) → 3 printf + foo(2)
foo(2) → 2 printf + foo(1)
foo(1) → 1 printf + foo(0)
Toplam: 4+3+2+1 = 10 işlem = O(n²)
🎓 Master Teoremi
Format
T(n) = a·T(n/b) + f(n)
- a = alt problem sayısı
- b = problem küçültme faktörü
- f(n) = bölme/birleştirme maliyeti
Kritik Değer
c_kritik = log_b(a)
3 Durum
| Durum | Koşul | Sonuç |
|---|---|---|
| 1 | f(n) = O(n^(c_kritik - ε)) |
T(n) = Θ(n^c_kritik) |
| 2 | f(n) = Θ(n^c_kritik) |
T(n) = Θ(n^c_kritik · log n) |
| 3 | f(n) = Ω(n^(c_kritik + ε))+ Düzenlilik şartı |
T(n) = Θ(f(n)) |
Düzenlilik şartı: a·f(n/b) ≤ c·f(n) (0 < c < 1)
Hızlı Karar
f(n) ile n^c_kritik'i karşılaştır:
f(n) DAHA KÜÇÜK → Durum 1 → Rekürsif çağrılar kazanır
f(n) EŞİT → Durum 2 → İkisi de eşit önemli
f(n) DAHA BÜYÜK → Durum 3 → f(n) kazanır
💡 Hızlı Örnekler
Merge Sort
T(n) = 2T(n/2) + n
a=2, b=2, f(n)=n
c_kritik = log₂(2) = 1
f(n) = n = Θ(n¹) → DURUM 2
→ T(n) = Θ(n log n)
Binary Search
T(n) = T(n/2) + 1
a=1, b=2, f(n)=1
c_kritik = log₂(1) = 0
f(n) = 1 = Θ(n⁰) → DURUM 2
→ T(n) = Θ(log n)
T(n) = 8T(n/2) + 1000n²
a=8, b=2, f(n)=1000n²
c_kritik = log₂(8) = 3
f(n) = 1000n² < n³ → DURUM 1
→ T(n) = Θ(n³)
Strassen
T(n) = 7T(n/2) + n²
a=7, b=2, f(n)=n²
c_kritik = log₂(7) ≈ 2.807
f(n) = n² < n^2.807 → DURUM 1
→ T(n) = Θ(n^2.807)
📋 Karşılaştırma Tablosu
| Metod | Ne Zaman | Örnek |
|---|---|---|
| Yerine Koyma | T(n) = T(n-1) + ... |
Faktöriyel |
| Master Teoremi | T(n) = aT(n/b) + ... |
Merge Sort |
🎯 Faydalı Formüller
Toplam formülleri:
1 + 2 + ... + n = n(n+1)/2 = O(n²)
1 + 2 + 4 + ... + 2ⁿ = 2^(n+1) - 1 = O(2ⁿ)
Logaritma kuralları:
log_b(a) = log(a) / log(b)
log(ab) = log(a) + log(b)
log(aᵇ) = b·log(a)
💪 Çözüm Stratejisi
Yerine Koyma için:
- İlk 3-4 adımı yaz
- Kalıbı gör
- Genel formu yaz
- k = n yap
- Toplam formülünü uygula
Master Teoremi için:
- a, b, f(n) belirle
- c_kritik hesapla
- f(n) ile n^c_kritik karşılaştır
- Durumu bul
- Sonucu yaz
⚠️ Dikkat Edilecekler
❌ Yapma:
- log tabanını unutma
- Epsilon (ε) şartını atla
- Düzenlilik şartını kontrol etme (Durum 3)
✅ Yap:
- Dominant terimi bul
- Big-O, Ω, Θ farkını bil
- Formülleri ezberle
🚀 Hızlı Referans
Notasyonlar:
O(f)→ En fazla fΩ(f)→ En az fΘ(f)→ Tam olarak f
Yaygın Karmaşıklıklar:
O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(n³) < O(2ⁿ) < O(n!)
Merge Sort Ağacı:
n iş
/ \
n/2 n/2 → Her seviye n iş
/ \ / \
... ... ... → log(n) seviye
Toplam: n · log(n)