Fusion tree
Версия от 02:05, 9 июня 2013; Lena (обсуждение | вклад) (Новая страница: «'''Fusion tree''' {{---}} дерево поиска, позволяющее хранить <tex>n</tex> <tex>w</tex>-битных положительных чи...»)
Fusion tree — дерево поиска, позволяющее хранить
-битных положительных чисел, используя памяти, и выполнять операции поиска за время .Структура
Fusion tree — это B-дерево, такое что:
- у всех вершин, кроме листьев, детей;
- время, за которое определяется в каком поддереве находится вершина, равно .
Такое время работы достигается за счет хранения дополнительной информации в вершинах. Рассмотрим цифровой бор из ключей узла дерева. Всего
ветвящихся вершин. Биты, соответствующие уровням дерева, в которых происходит ветвление, назовем существенными и обозначим их номера . Количество существенных битов не больше чем .В Fusion tree вместо ключа
хранится - последовательность битов . сохраняет порядок, то есть , если .Обозначим
, , - множество ключей вершины.Поиск вершины
Пусть
- множество ключей узла, - ключ искомой вершины, - количество бит в . Определим как число, составленное из едениц и , то есть . Вычтем из число . Применим к получившемуся побитовое AND c , чтобы убрать лишние биты.AND
Если
, то , в противном случае .