Примеры заданий для подготовки к предварительному экзамену

advertisement
Примеры заданий для подготовки к предварительному экзамену
Задание №1
(a) Пусть имеется следующее В+ дерево с n=3 (3 ключа, 4 указателя. Нарисуйте В+
дерево, после добавления ключа 99.
[20, ,
, ]
[15, , , ]
[10, 11, ]
[15, 16, ]
[55, 70, 80, ]
[20, 35, ] [55, 61, ] [70, 77, ] [80, 90, 95]
(b) Нарисуйте нижеприведенное B+ дерево с n=2, после удаления из него ключа 5.
[5]
(c)
[3]
[1, 2] [3, 4]
[7]
[5, ]
[7, ]
(c) Предположим, мы хотели построить B+ tree такое, что если бы оно имело 3 уровня
и было полным, то оно имело бы 49 узлов листьв из общего числа 57 узлов. Каков
был бы порядок n этого дерева?
Задание №2.
Ниже приведен некоторый алгоритм для выполнения соединения-слияния
R
S, причем R и S предварительно не отсортированы:
1) R читается и записывается в виде набора отсортированных порций. Файл с
полностью отсортированным R не формируется.
2) S читается и записывается в виде набора отсортированных порций. Файл с
полностью отсортированным S не формируется.
3) Отсортированные порции R и S соединяются (каждая порция читается только 1
раз). Результат – это кортежи отношения R S.
Предполагается, что кортежи R занимают r блоков дискового пространства, а кортежи
S – s блоков. Имеется k+1 буфер памяти (в буфере может храниться 1 блок), причем
предполагается, что только k буферов можно использовать при сортировке.
(a) Каково должно быть значение k, чтобы алгоритм выполнил соединение?
(b) Рассмотрим случай, когда отношение S предварительно (т.е. до начала работы
алгоритма) отсортировано. (Файл с полностью отсортированным R не
формируется.) Каково должно быть значение k в этом случае?
(c) Рассмотрите предположения вопроса (b). Сколько операций чтения/записи (IO)
будет выполнено для полного соединения? (В подсчет не включается операция
записи окончательного результата).
Задание №3.
Обсуждается использование 8 битового хэш-значения, в котором расширяемая хэшсхема использует младшие биты, в то время как линейеая схема использует сташие
биты. Кроме этого, предполагается, что каждый блок содержит по 2 ключа и линейная
хэширование имеет пороговое значение заполненности - 0.75. (Напомним, что
заполненность – это количество записей, которое хранится в файле деленное на
количество записей, которое может храниться в основных блоках, без блоков
переполнения). Предполагается, что хэш-таблица первоначально пуста и используется
только для вставки (добавления). Пустые блоки (создаваемые алгоритмом) должны
учитываться при выполнении вычислений.
Для каждого утверждения, определите истинно оно или ложно и объясните почему.
(a) Для расширяемой хэш-таблицы T с 5 блоками (исключая оглавление) минимальное
количество ключей в T – 5.
(b) Для линейной хэш-таблицы T с 5 блоками (которые могут быть или не быть
блоками переполнения) минимальное количество ключей в T – 5.
(c) Максимальное количество ключей в линейной хэш-таблице с 5 блоками (которые
могут быть или не быть блоками переполнения) – 10.
(d) Максимальное количество ключей в расширяемой хэш-таблице с 5 блоками
(исключая оглавление) – 10.
Задание №4.
Приведенные ниже законы выполняются для множеств и могут выполняться, а могут и
не выполняться для наборов (множеств с повторениями). Для каждого из приведенных
законов, определите, выполняется ли он для наборов. Если закон не выполняется,
приведите небольшой контр пример.
(a) RR=R
(b) RR=R
(c) R-R=R
(d) R(ST)=(RS)  (RT)
Задание №5.
Пусть имеется индексно-последовательный файл с разреженным индексом. Файл
состоит из 100 непрерывных «основных» блоков и дополнительных 50 блоков
переполнения. Каждый из блоков (основной или переполнения) может хранить по 10
записей. Индекс полностью умещается в памяти.
Если сформирована цепочка переполнения, то предполагается, что все блоки в цепочке
заполнены (содержат по 10 записей), кроме последнего блока, который содержит 5
записей. Если для какого-либо основного блока нет цепочки переполнения, то такой
блок содержит только 5 записей.
Рассматриваются 2 случая:
1) 50 основных блоков имеют цепочку переполнения с единственных блоком
переполнения. Остальные основные блоки не имеют переполнения.
2) Единственный основной блок имеет цепочку переполнения, содержащую все 50
блоков переполнения. Все остальные основные блоки не имеют переполнения.
Ответьте на следующие вопросы. Ответ может содержать сумму дробей (например,
(1/2)+(2/3) или 0.86). Объясните, как вы получили ответ.
(a) Определите заполненность для случая 1. (Напомним, что заполненность – это
количество записей, которое хранится в файле деленное на количество записей,
которое может храниться в основных блоках файла).
(b) Определите заполненность для случая 2.
(c) Сколько операций чтения/записи (IO) выполнится для «неудачного» запроса в
случае 1? «Неудачный» запрос – это запрос, который не находит ключ при поиске
по файлу.
(d) Сколько операций чтения/записи (IO) выполнится для «неудачного» запроса в
случае 2?
(e) Сколько операций чтения/записи (IO) выполнится для «удачного» запроса в случае
1?
(f) Сколько операций чтения/записи (IO) выполнится для «удачного» запроса в случае
2? (В этом случае ответ может быть приблизительным)
(g) Сколько операций чтения/записи (IO) выполнится при реорганизации файла?
(Например, если реорганизованный файл должен содержать 150 блоков, но без
переполнения).
Download