Скачать презентацию Сибирский государственный университет телекоммуникаций и информатики Курсовой проект Скачать презентацию Сибирский государственный университет телекоммуникаций и информатики Курсовой проект

DSA Matsukov.pptx

  • Количество слайдов: 12

Сибирский государственный университет телекоммуникаций и информатики Курсовой проект по дисциплине “Структуры и алгоритмы обработки Сибирский государственный университет телекоммуникаций и информатики Курсовой проект по дисциплине “Структуры и алгоритмы обработки данных” B-Trees Мацуков Дмитрий Сергеевич студент группы ИВ-15 Новосибирск – 2012

B-ДЕРЕВЬЯ • B-дерево это сбалансированное сильно ветвистое дерево. Каждому узлу как правило ставится в B-ДЕРЕВЬЯ • B-дерево это сбалансированное сильно ветвистое дерево. Каждому узлу как правило ставится в соответствие блок внешней памяти. B-дерево состоит из страниц, каждая страница содержит ключи, упорядоченные по возрастанию. Каждый ключ имеет двух потомков -- левого и правого. Правый потомок ключа является левым потомком следующего ключа. 2

B-ДЕРЕВЬЯ • Пример B-дерева: 3 B-ДЕРЕВЬЯ • Пример B-дерева: 3

B-ДЕРЕВЬЯ Степенью B-дерева называют максимальное количество детей для каждого узла. B-деревья должны удовлетворять следующим B-ДЕРЕВЬЯ Степенью B-дерева называют максимальное количество детей для каждого узла. B-деревья должны удовлетворять следующим требованиям: • • Каждый узел имеет не больше m детей, где m -- степень дерева Каждый узел, кроме корня и листьев имеет не меньше m/2 детей Корень имеет не меньше двух детей (кроме тривиального случая) Все листья находятся на одном уровне; в них хранится информация Внутренние узлы с k детьми содержат k-1 ключ 4

B-ДЕРЕВЬЯ Поиск осуществляется так: – Начиная с корня на каждом уровне ищется нужный указатель B-ДЕРЕВЬЯ Поиск осуществляется так: – Начиная с корня на каждом уровне ищется нужный указатель наследующего ребёнка – Переход по ссылке на следующего ребёнка – Повторять до тех пор, пока не достигнем листа – Поиск внутри узла осуществляется любым алгоритмом (чаще всего бинарным поиском) 5

B-ДЕРЕВЬЯ Все операции вставки начинаются с листьев, таким образом алгоритм таков: • • • B-ДЕРЕВЬЯ Все операции вставки начинаются с листьев, таким образом алгоритм таков: • • • 1. Найти с помощью указанного выше алгоритма положение, где должен быть добавлен элемент. 2. Если найденный узел содержит меньше максимума допустимых элементов, то вставить элемент туда 3. Если узел полон, то его нужно разделить на два узла: – Находится средний элемент в листе, в который будет происходить добавление – Значения, которые меньше среднего значения перемещаются в новую левую ветвь – Значения, которые больше среднего значения перемещаются в новую правую ветвь – Среднее значение перемещается в родительский узел изначального листа – Если родительский узел переполнен, он делится таким же образом – Если узел не имеет родителей, создаётся новый корень 6

B-ДЕРЕВЬЯ Вставка элементов 7 B-ДЕРЕВЬЯ Вставка элементов 7

B-ДЕРЕВЬЯ • Split 8 B-ДЕРЕВЬЯ • Split 8

B-ДЕРЕВЬЯ Удаление из листового узла • • • Найти значение для удаления Если значение B-ДЕРЕВЬЯ Удаление из листового узла • • • Найти значение для удаления Если значение находится в листе, оно может быть просто удалено Если значений становится слишком мало, нужно проверить, можно ли слить воедино братьев. Если нет, произойдёт обмен между братьями Если удаление произошло из правой ветви, необходимо получить максимальное значение левой ветви В обратной ситуации, соответственно, перекинуть минимальное значение из правой ветви Удаление из внутреннего узла • • • 1. Выбрать новый разделитель (наибольший элемент в левом поддереве или наименьший элемент в правом) 2. Удалить его из листа, в котором он находится, и заменить им элемент, который необходимо удалить 3. Теперь задача равносильна предыдущей 9

B-ДЕРЕВЬЯ • B+ дерево -- это B-дерево, значения ключей которого хранятся только в листьях. B-ДЕРЕВЬЯ • B+ дерево -- это B-дерево, значения ключей которого хранятся только в листьях. В узлах хранятся ключи-разделители. Так же, как и Bдеревья, имеют ограничения (и сверху, и снизу) на количество хранимых значений в узле. Для более быстрого полного обхода добавляют ссылки между братьями. 10

B-ДЕРЕВЬЯ • Абсолютно идентичны B-деревьям за исключением ровно одной детали: граница загруженности страницы увеличена B-ДЕРЕВЬЯ • Абсолютно идентичны B-деревьям за исключением ровно одной детали: граница загруженности страницы увеличена с половины до 67%. 11

B-ДЕРЕВЬЯ • • Вставка - О(t*Logtn ) Удаление – O(t*Logtn) Поиск – O(t*Logtn) Создание B-ДЕРЕВЬЯ • • Вставка - О(t*Logtn ) Удаление – O(t*Logtn) Поиск – O(t*Logtn) Создание пустого дерева – O(1) 12