Изменения

Перейти к: навигация, поиск

Сжатое многомерное дерево отрезков

17 байт добавлено, 10:43, 8 июня 2011
Структура
==Структура==
Для уменьшения количества занимаемой памяти можно провести оптимизацию <tex>p</tex>-мерного дерева отрезков. Для начала, будем использовать дерево отрезков с сохранением всего подотрезка в каждой вершине. Другими словами, в каждой вершине дерева отрезков мы будем хранить не только какую-то сжатую информацию об этом подотрезке, но и все элементы массивамножества <tex>A</tex>, лежащие в этом подотрезке. Казалось бы, это только увеличит объем структуры, но не все так просто. При построении будем действовать следующим образом — каждый раз дерево отрезков внутри вершины будем строить не по всем элементам множества <tex>A</tex>, а только по сохраненному в этой вершине подотрезку. Действительно, незачем строить дерево по всем элементам, когда элементы вне подотрезка уже были "исключены" и заведомо лежат вне желаемого <tex>p</tex>-мерного прямоугольника. Легко понять, что такое сжатое <tex>p</tex>-мерное дерево отрезков будет занимать <tex>O(n\,log^{p-1}\,n)</tex> памяти: превращение обычного дерева в дерево с сохранением всего подотрезка в каждой вершине будет увеличивать его размер в <tex>O(log\,n)</tex> раз, а сделать это нужно будет <tex>p-1</tex> раз.
==Построение дерева и запрос операции==
77
правок

Навигация