Встречное дерево Фенвика — различия между версиями
Proshev (обсуждение | вклад) |
Proshev (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| + | [[Файл:Originalbit.png|thumb|Прямое дерево Фенвика]] | ||
| + | [[Файл:Vstbit.png|thumb|Встречное дерево Фенвика]] | ||
| + | |||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
| Строка 7: | Строка 10: | ||
== Свойства == | == Свойства == | ||
| − | |||
| − | |||
| − | |||
Встречное дерево Фенвика - это структура данных, дерево на массиве, обладающее следующими свойствами: | Встречное дерево Фенвика - это структура данных, дерево на массиве, обладающее следующими свойствами: | ||
Версия 04:03, 17 мая 2011
| Определение: |
| Встречное дерево Фенвика — дерево Фенвика, в котором над каждым столбцом идет столбец такой же высоты, вычисляемый по формуле . |
Вспомним, что возвращает количество единиц в двоичной записи числа , а каждый столбец прямого дерево Фенвика вычисляется по формуле
Свойства
Встречное дерево Фенвика - это структура данных, дерево на массиве, обладающее следующими свойствами:
1) позволяет вычислять значение некоторой обратимой операции на любом отрезке за время ;
2) позволяет изменять значение любого элемента за ;
3) требует памяти, а точнее, ровно столько же, сколько и массив из элементов;
4) легко обобщается на случай многомерных массивов.
5) позволяет представить любой отрезок в виде дизъюнктивных объединений отрезков, взятых из прямого и встречного дерева Фенвика.
Применение
Дерево Фенвика позволяло вычислять значение операции на отрезке с помощью формулы включений-исключений и запросов вида и . Встречное дерево Фенвика позволяет нам сразу обрабатывать запрос вида