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

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

14.4.1 Многоканальное слияние

Мы выполняем d-путь слияние, проводя «турнир». Мы позволяем T быть полным

двоичное дерево с d внешними узлами, и мы держим T полностью во внутренней памяти. Мы связываем каждый внешний узел i из T с различным сортированным списком Сай. Мы инициализируем T, читая в каждый внешний узел i, первый объект в Сайе. Это имеет эффект чтения во внутреннюю память первый блок каждого сортированного списка Сай. Для каждого родителя внутреннего узла v двух внешних узлов, мы тогда сравниваем объекты, хранившие в детях v, и мы связываем меньшие из двух с v. Мы повторяем, что этот тест сравнения в следующем выравнивает в T и следующем, и так далее. Когда мы достигаем корня r T, мы связываем самый маленький объект из числа всех списков с r. Это заканчивает инициализацию для d-пути слияние. (См. рисунок 14.7.)

Рисунок 14.7: d-путем слияние. Мы показываем слияние с пятью путями с B = 4.

В общем шаге d-пути слияние мы перемещаем объект o связанный с корнем r T во множество, которое мы строим для слитого списка S. Мы тогда прослеживаем вниз T, после пути к внешнему узлу i, что o прибыл из. Мы тогда читаем в меня следующий объект в списке Сай. Если o не был последним элементом в своем блоке, то этот следующий объект уже находится во внутренней памяти. Иначе, мы читаем в следующем блоке Сайа, чтобы получить доступ к этому новому объекту (если Сай теперь пуст, свяжите узел i с псевдообъектом

с ключом + ¥). Мы тогда повторяем минимальные вычисления для каждого из внутренних

узлы от меня до корня T. Это снова дает нам полное дерево T. Мы тогда

повторите этот процесс перемещения объекта от корня T к слитому списку S, и восстановление T, пока T не будет пуст от объектов. Каждый шаг в слиянии берет O (зарегистрируйте d), время; следовательно, внутреннее время для d-способа, которым слияние - O (n регистрируют d). Число передач, выполненных в слиянии, является O (n/B), так как мы просматриваем каждый список Сай в заказе однажды, и мы выписываем слитый список S однажды. Таким образом мы имеем: Суждение 14.3: Учитывая основанную на множестве последовательность S n элементов, сохраненных в экс-ternal память, мы можем сортировать S, использующий O ((n/B) регистрация (n/B) / регистрация (M/B)) передачи и O (n регистрируют n), внутреннее время центрального процессора, где M - размер внутренней памяти, и B - размер блока.

14.5. Упражнения

14.5 Упражнения

Для помощи с упражнениями, пожалуйста, посетите веб-сайт, www.wiley.com/college/goodrich. <www.wiley.com/college/goodrich>

Укрепление

685

R-14.1 Джулия просто купила новый компьютер, который использует 64-битные целые числа, чтобы обратиться к мадам -

клетки ory. Обсудите, почему Джулия никогда не будет в ее жизни быть в состоянии модернизировать главную память о ее компьютере так, чтобы это был максимальный возможный размер, предположив, что у Вас должны быть отличные атомы, чтобы представлять различные биты.

R-14.2 Опишите, подробно, добавьте и удалите алгоритмы для (a, b) дерево. R-14.3 предположим T - многоканальное дерево, в котором у каждого внутреннего узла есть по крайней мере пять

и самое большее восемь детей. Поскольку, какие ценности a и b - T действительное (a, b) дерево?

R-14.4 Поскольку, какие ценности d - дерево T предыдущего осуществления заказ-d

B-дерево?

R-14.5 Покажите каждый уровень рекурсии в выполнении с четырьмя путями, внешней памяти

вид слияния последовательности, данной в предыдущем осуществлении.

R-14.6 Рассмотрите первоначально пустую кэш-память, состоящую из четырех страниц. Как

много страниц промахи делают алгоритм LRU, подвергаются на следующей последовательности запроса страницы: (2, 3, 4, 1, 2, 5, 1, 3, 5, 4, 1, 2, 3)?

R-14.7 Рассмотрите первоначально пустую кэш-память, состоящую из четырех страниц. Как

много страниц промахи делают алгоритм FIFO, подвергаются на следующей последовательности запроса страницы: (2, 3, 4, 1, 2, 5, 1, 3, 5, 4, 1, 2, 3)?

R-14.8 Рассмотрите первоначально пустую кэш-память, состоящую из четырех страниц. Как

много страниц промахи могут случайный алгоритм подвергаться на следующей последовательности запроса страницы: (2, 3, 4, 1, 2, 5, 1, 3, 5, 4, 1, 2, 3)? Покажите все управление - dom выбор Ваш алгоритм, сделанный в этом случае.

R-14.9 Потяните результат вставки, в первоначально пустой приказ 7 B-дерево,

ключи (4, 40, 23, 50, 11, 34, 62, 78, 66, 22, 90, 59, 25, 72, 64, 77, 39, 12).

R-14.10 Покажите каждый уровень рекурсии в выполнении вида слияния с четырьмя путями

последовательность, данная в предыдущем осуществлении.

Креативность

C-14.1 Опишите эффективный алгоритм внешней памяти для удаления всего du -

plicate записи в векторе размера n.

686