B-деревья без явного задания параметров кэша

Материал из WEGA

Ключевые слова и синонимы

Деревья поиска без явного задания параметров кэша; словарь без явного задания параметров кэша

Постановка задачи

Память в компьютерах устроена иерархическим образом, причем время доступа к каждому уровню значительно различается. Таким образом, скорость доступа зависит исключительно от того, на каком самом внутреннем уровне находятся данные, к которым осуществляется доступ. При анализе работы алгоритмов стандартная RAM-модель (или модель фон Неймана) не способна воспроизвести этот эффект; поэтому для более точного моделирования ситуации были введены модели с внешней памятью. Чаще всего в качестве такой модели используется модель ввода-вывода [1], также называемая моделью внешней памяти или моделью обращений к диску. Модель ввода-вывода аппроксимирует иерархию памяти при помощи моделирования двух уровней, из которых внутренний уровень имеет размер M, внешний имеет неограниченный размер, а перенос данных между уровнями осуществляется блоками по B последовательных элементов. Стоимость алгоритма равна количеству выполняемых им переносов содержимого памяти.


Модель памяти без явного задания параметров кэша, предложенная Фриго и др. [18], изящно обобщает модель ввода-вывода на многоуровневую модель, обладающую следующим свойством: алгоритм не может знать значения B и M. Более точно, алгоритм без явного задания параметров кэша представляет собой алгоритм, формулируемый в рамках RAM-модели, но анализируемый в рамках модели ввода-вывода, причем анализ будет действительным при любых значениях B и M. Предполагается, что замещение содержимого кэша выполняется автоматически при помощи оптимальной автономной стратегии замещения. Поскольку анализ является допустимым при любых значениях B и M, он выполняется для всех уровней одновременно.


Мы будем рассматривать эффективные структуры данных без явного задания параметров кэша для задачи упорядоченного словаря, т.е. задачи хранения элементов с ключами из упорядоченной совокупности с поддержкой поиска, вставки, удаления и поиска в нужном диапазоне. В самом общем случае поиск представляет собой поиск предшественника, возвращающий элемент с максимальным ключом, меньшим или равным искомому ключу.

Основные результаты

Первый словарь без явного задания параметров кэша предложил Прокоп [21], который показал, как расположить статическое бинарное дерево в памяти таким образом, чтобы поиск занимал O(logB n) переносов содержимого памяти. Это расположение, часто называемое расположением ван Эмде Боаса из-за того, что оно напоминает классическую структуру данных ван Эмде Боаса, также гарантирует, что поиск в диапазоне занимает O(logB n + k/ B) переносов содержимого памяти [2], где k – размер выходного значения. Обе границы являются оптимальными для поиска на основе сравнения.


Первый динамический словарь без явного задания параметров кэша был предложен Бендером и др. [10]. Используя вариант расположения ван Эмде Боаса, алгоритм управления плотностью Итая и др. [10] и сбалансированные по весам B-деревья [5], авторы пришли к следующим результатам:


Теорема 1 ([10]). Существует структура словаря словарь без явного задания параметров кэша, поддерживающая поиск за O(logB n) переносов содержимого памяти, а вставку и удаление – за O(logB n) амортизированных переносов содержимого памяти.