Problem, matematik ve analiz · 03 / 53
Toplamlar, recurrence ve Master teoremi
Anla → iz sür → uygula → gerekçelendir
1 dk okuma · uygulama için ayrıca zaman ayırÖzyinelemeli kodu analiz ederken çağrı sayısını, alt problem boyutunu ve çağrı dışındaki işi ayır. Merge sort için T(n)=2T(n/2)+Θ(n): iki yarı çözülür, birleştirme doğrusal iştir. Çağrı ağacının her seviyesinde toplam Θ(n), yaklaşık log₂n seviye vardır; sonuç Θ(n log n).
Master teoremi T(n)=aT(n/b)+f(n) biçimindeki dengeli bölmelere uygulanır. f(n)'yi n^(log_b a) ile karşılaştır; yalnız uygun koşullarda üç klasik durumu kullan. Eşitsiz alt problemler, n−1 küçülmesi veya salınımlı maliyetler için teoremi zorlamak yerine açılım, yerine koyma ve indüksiyon kullan.
T(n)=T(n−1)+n açıldığında n+(n−1)+…+1 olur. T(n)=T(n/2)+1 ise her seviyede sabit iş yapar. Recurrence'ın sınır koşulunu belirt: T(1)=Θ(1). Kesirli boyutlar floor/ceil ile ele alınır; çoğu büyüme sonucunda bunlar sabit fark oluşturur fakat doğruluk kodunda ihmal edilmez.
Adım adım iz sürme
T(8)=2T(4)+8: seviyelerin iş toplamları 8,8,8; 8 yaprakta sabit iş. Bölmek hızlı görünse de birleştirme hesaba katılmalıdır.
Maliyet ve varsayımlar
2T(n/2)+n: Θ(n log n); T(n−1)+1: Θ(n); T(n/2)+n: Θ(n).
Çalıştırılabilir örnek
Python 3 ile çalıştır. Assert küçük bir örneği denetler; genel doğruluk ispatı değildir. Bazı ileri örnekler özellikle küçük model veya referans oracle'dır; tam üretim uygulaması değildir.
def halving_depth(n):
if n < 1:
raise ValueError("n must be positive")
depth = 0
while n > 1:
n //= 2
depth += 1
return depth
assert halving_depth(8) == 3KAVRADIĞINI KONTROL ET
Sıra sende
T(n)=3T(n/2)+n için hangi terim baskın?
Çözümün mantığını göster
n^(log₂3) yaklaşık n^1,585; doğrusal birleştirme bundan polinom derecede küçüktür. Klasik Master ilk durum: Θ(n^log₂3).
Bir adım ileri
- Örneği değiştirmeden önce girdi sözleşmesini ve invariantı yaz.
- Uygun olan boş, sınır, tekrar ve adversarial girdileri ekle. Basit bir oracle ile karşılaştır.
- Belirtilen modelde maliyeti çıkar; farklı girdi büyüklüklerini ölç ve farkları gerekçelendir.
Temel kaynaklar ve ders notları
Bu eğitimde özgün anlatım kullanıldı; aşağıdaki kaynaklar ispatlar ve ileri okumalar sunar. Bağlantılar daha geniş ders modülünü kapsayabilir.
MIT 6.046J · Design and Analysis ↗Jeff Erickson · Algorithms ↗