Что мы называем динамической программной конструкцией, которая позволяет нам вычислять суммы любого диапазона в логарифмическом времени?

Я обычно называл это "частичными суммами", но я не знаю, как это "официально" называется, и у меня сложилось впечатление, что это не "частичные суммы".

Во всяком случае, концепция довольно проста. Скажем, у вас есть массив 8 элементы, [3, 7, 2, 1, 5, 6, 9, 4], Вы вычисляете суммы следующим образом:

Конечно, это приведет к массиву массивов этой формы:

Теперь, если нас спросят, например, какова сумма элементов индексов из 0 до 4 мы не будем линейно вычислять эту сумму, но вместо этого мы будем знать, что она равна сумме элементов из 0 до 3 (который 13), а затем логарифмически идти вниз до элемента 5, Итак, ответ: 18,

Как мне назвать такую ​​конструкцию, чтобы другие люди знали, о чем я говорю, без рисования таких таблиц?

2 ответа

Кажется, что некоторые разделы.

Хранение накопленных сумм позволяет вычислять сумму последовательных элементов за постоянное время и занимает тот же объем памяти (n). Пусть i-й элемент C будет суммой всех элементов с индексом <= i. Чем сумма элементов из индекса a до индекса b является C[b] - C[a],

Оно называется деревом сегментов и обычно используется для более быстрой обработки запросов.

Другие вопросы по тегам