Büyük problemleri küçük alt problemlere bölerek çözen paradigma.

Üç Temel Adım

  1. Böl (Divide): Problemi daha küçük alt problemlere ayır
  2. Yönet (Conquer): Alt problemleri özyinelemeli olarak çöz
  3. Birleştir (Combine): Alt çözümleri birleştirerek ana çözümü elde et

Örnek: Birleştirmeli Sıralama

FONKSİYON MergeSort(dizi)
  EĞER (dizi.boyut <= 1) DÖNDÜR dizi
  
  orta = dizi.boyut / 2
  sol = MergeSort(dizi[0...orta-1])    // Böl
  sag = MergeSort(dizi[orta...son])    // Böl
  
  DÖNDÜR Merge(sol, sag)               // Birleştir
SON
                    

Diğer Örnekler

  • Hızlı Sıralama: Pivot etrafında böl
  • İkili Arama: Arama aralığını yarıya böl
  • Strassen Matris Çarpımı: Matrisleri alt matrislere böl
  • En Yakın Nokta Çifti: Düzlemi böl

Avantajları

  • Paralelleştirilebilir
  • Önbellek dostu
  • Karmaşık problemleri basitleştirir
  • Genellikle verimli algoritmalar üretir

Dezavantajları

  • Özyineleme ek yükü
  • Yığın taşması riski
  • Her problem için uygun değil

Zaman Karmaşıklığı Analizi

Master Theorem kullanılarak analiz edilir:

T(n) = aT(n/b) + f(n)

  • a: Alt problem sayısı
  • b: Problem boyutu azalma faktörü
  • f(n): Bölme ve birleştirme maliyeti