Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

Глава 14. Управление памятью и b-деревья

C-14.2 Покажите, как осуществить карту во внешней памяти, используя незаказанный se-

айва так, чтобы вставки потребовали только O (1) передачи и поиски, требует O (n/B) передачи в худшем случае, где n - ряд элементов, и B - число узлов списка, которые могут вписаться в дисковый блок.

C-14.3 Измените правила, которые определяют красно-черные деревья так, чтобы каждое красно-черное дерево T

имеет передачу (4, 8) дерево и наоборот.

C-14.4 Опишите измененную версию алгоритма вставки B-дерева так, чтобы каждый

время мы создаем overflow из-за разделения узла v, мы перераспределяем ключи среди всех родных братьев v, так, чтобы каждый родной брат держал примерно то же самое число ключей (возможно льющийся каскадом разделение до родителя v). Какова минимальная часть каждого блока, который будет всегда заполняться, используя эту схему?

C-14.5 Другое возможное внедрение карты внешней памяти должно использовать пропуск

список, но собрать последовательные группы O (B) узлы, в отдельных блоках, на любом уровне в списке пропуска. В частности мы определяем заказ-d список B-пропуска, чтобы быть таким представлением структуры списка пропуска, где каждый блок

содержит, по крайней мере, d/2 ⌉ узлы списка и в большинстве узлов списка d. Позвольте нам также

выберите d в этом случае, чтобы быть максимальным количеством узлов списка от уровня

из списка пропуска, который может вписаться в один блок. Опишите, как мы должны изменить вставку списка пропуска и алгоритмы удаления для списка B-пропуска так, чтобы ожидаемая высота структуры была O (зарегистрируйте регистрацию n/B).

C-14.6 Опишите структуру данных внешней памяти, чтобы осуществить очередь ADT

так, чтобы общее количество дисковых передач должно было обработать последовательность n, ставят в очередь, и dequeue операции O (n/B).

C-14.7 Решите предыдущую проблему для deque ADT. C-14.8 Опишите, как использовать B-дерево, чтобы осуществить разделение (находят союз) ADT

(от Раздела 11.4.3) так, чтобы союз и счел операции каждым использованием в большей части O (регистрируют регистрацию n/B), дисковые передачи.

C-14.9 предположим нам дают, последовательность S n элементов с целым числом включает такой

то, что некоторые элементы в S окрашены в «синий», и некоторые элементы в S окрашены в «красный». Кроме того, скажите, что красный элемент e пары с синим элементом f, если у них есть то же самое значение ключа. Опишите эффективное внешнее - алгоритм памяти для нахождения всех красно-синих пар в S. Сколько дисковых передач Ваш алгоритм выступает?

C-14.10 Рассмотрите проблему кэширования страницы, где кэш-память может держать m

страницы, и нам дают последовательность P запросов n, взятых из бассейна m + 1 возможная страница. Опишите оптимальную стратегию offline алгоритма и покажите, что это вызывает в большей части m + n/m страница промахи всего, начинающийся с пустого тайника.

Примечания к главе 687

C-14.11 Считайте стратегию кэширования страницы основанной на наименее часто используемый

Правило (LFU), где страница в тайнике, к которому получали доступ наименее часто, является той, которая выселена, когда новую страницу требуют. Если есть связи, LFU выселяет наименее часто используемую страницу, которая была в тайнике самым длинным. Покажите, что есть последовательность P запросов n, что причины LFU ìèññ Â (n) времена для тайника m страниц, тогда как оптимальный алгоритм будет отсутствовать только O (m) времена.

C-14.12 предположим, что вместо того, чтобы иметь поиск узла функционируют f (d) = 1 в

закажите-d B-дерево T, у нас есть f (d) =, регистрируют d. Чем асимптотическое управляет - ning, время выполнения поиска в T теперь становятся?

C-14.13 Опишите эффективный алгоритм внешней памяти, который определяет ли

множество n целых чисел содержит стоимость, происходящую больше, чем n/2 времена.

Проекты

P-14.1 Напишите C ++ класс, который моделирует лучшую подгонку, худшую подгонку, первую подгонку, и затем -

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

P-14.2 Напишите C ++ класс, который осуществляет все функции заказанной карты

ADT посредством (a, b) дерево, где a и b - константы целого числа, прошел как параметры конструктору.

P-14.3 Осуществите структуру данных B-дерева, приняв размер блока 1, 024 и

ключи целого числа. Проверьте число «дисковых передач», должен был обработать последовательность операций по карте.

P-14.4 Осуществите алгоритм сортировки внешней памяти и сравните его experi-

мысленно к любому алгоритму сортировки внутренней памяти.

Примечания к главе

Метод сборки мусора зачистки отметки, который мы описываем, является одним из многих различных algo-rithms для выполнения сборки мусора. Мы поощряем читателя, заинтересованного дальнейшим исследованием сборки мусора исследовать книгу Джонса [51].

У Knuth [57] есть очень хорошие дискуссии о сортировке внешней памяти и поиске, и Ульман [97] обсуждает внешние структуры памяти для систем базы данных. Читатель, заинтересованный исследованием архитектуры иерархических систем памяти, отнесен в книжную главу Гамбургером и др. [18] или книга Хеннесси и Паттерсона [44]. Рука - заказывает Gonnet, и Баэса-Yates [37] сравнивает исполнение многих различных алгоритмов сортировки, многие из которых являются алгоритмами внешней памяти.

B-деревья были изобретены Байером и Маккритом [10], и Камер [23] предоставляет очень хороший обзор этой структуры данных. У книг Mehlhorn [73] и Samet [87] также есть хорошие дискуссии о B-деревьях и их вариантах. Aggarwal и Vitter [2] изучают ввод/вывод

688