Fenwick ağacı (Binary Indexed Tree)
Kısaca: Fenwick ağacı, bir sayı dizisini öyle saklar ki hem bir değeri güncellemek hem de önek toplamları O(log n)‘de mümkün olur.
Biraz daha ayrıntılı: Yalnızca toplamlar (veya benzer tersinir işlemler) gerektiğinde segment ağacına özellikle kompakt bir alternatiftir. Ağaç düz bir dizide yaşar ve indeks hesabı en düşük kurulu biti kullanır.
Ayrıntılı
- Fikir:
ikonumu, uzunluğui’yi bölen en büyük ikinin kuvvetine eşit olan bir kesitin toplamını saklar. - Sorgu:
i’ye kadar önek toplamı: değeri ekle, sonrai0 olana deki -= i & -i. - Güncelleme: Bir değeri
dkadar değiştir:i’de ekle, sonraiboyutu aşana deki += i & -i. - Aralık toplamı:
toplam(r) - toplam(l-1). - Kuruluş: O(n)‘de mümkün, bellek yalnızca n sayı.
- Sınırlar: Her işlem tersinir değildir. Aralık minimumu bu yüzden genellikle segment ağacı gerektirir.
Ayrıca bak: Büyük-O gösterimi