01ამოცანის დასმა
მოცემულია n რიცხვისგან შედგენილი მიმდევრობა და პერიოდულად ორი სახის მოთხოვნა შემოდის (მე-2 სლაიდი):
- შევცვალოთ i-ური წევრის მნიშვნელობა;
- დავადგინოთ ელემენტთა ჯამი [x, y] ინტერვალში.
სტატიკური მონაცემების შემთხვევაში, როცა მასივის ელემენტები არ იცვლება, ამოცანა მარტივად იხსნება პრეფიქს-ჯამებით: prefix[i] = a[1] + … + a[i], ჯამი [x, y] ინტერვალზე კი არის prefix[y] − prefix[x − 1]. ლექციის 16 რიცხვიან მასივში ჯამი [6, 13] ინტერვალზე არის 3+1+4+2+5+2+2+3 = 22, ან ერთი გამოკლებით 33 − 11 = 22.
დინამიური მონაცემების შემთხვევაში კი a[i]-ის ყოველი ცვლილების შემდეგ i-დან n-მდე ყველა პრეფიქს-ჯამის ხელახლა დათვლა მოგვიწევს, ანუ O(n) ოპერაცია ყოველ ცვლილებაზე. ფენვიკის ხე (ბინარული ინდექს-ხე, BIT) ორივე მოთხოვნას უარეს შემთხვევაში O(log n) დროში ასრულებს, მისი კოდი კი ძალიან მოკლეა.