Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
150
Добавлен:
10.05.2014
Размер:
3.61 Mб
Скачать
        1. Сцепление вершин

Если в соседних слева и справа вершинах находится только минимально допустимое количество элементов, перераспределение использовано быть не может. В этом случае используется сцепление: вместо двух вершин, целевой и какой-либо соседней, создается одна, в которую помещаются элементы из двух вершин и их общего корня. В результате в новой вершине окажется 2nэлементов – максимально возможное количество ключей в вершине В-дерева. Элемент из родительской вершины удаляется, а два указателя (левый и правый) для этого элемента объединяются в один, указывающий на вновь созданную вершину В-дерева.

Рассмотрим пример. Пусть дан следующий фрагмент В-дерева порядка 2 (рис. II-66).

Рис. II-66.

Удаляется элемент 15. В результате сцепления получим один лист и один указатель на него (рис. II-67).

Рис. II-67.

В результате такой операции сцепления количество элементов в родительской вершине уменьшается на единицу, и в ней также может возникнуть антипереполнение, которое разрешается одним из двух рассмотренных способов. В результате распространения антипереполнения высота В-дерева может уменьшиться на 1.

Рассмотрим пример. Пусть дано В-дерево порядка 1 (рис. II-68).

Рис. II-68.

Удаляется элемент 150. В соседней вершине только один элемент, поэтому выполняется сцепление. В результате возникло антипереполнение в родительской вершине (рис. II-69).

Рис. II-69.

Для данной вершины также выполняется сцепление, в результате которого в корне В-дерева не осталось ни одного элемента (рис. II-70). В такой ситуации пустая вершина – корень В-дерева удаляется, и высота дерева уменьшается на 1.

Рис. II-70.

Таким образом, можно указать следующие основные свойства В-дерева:

1. Ключи и ассоциированные с ними данные хранятся во всех вершинах В-дерева.

2. Поиск данных выполняется эффективно; максимальная длина пути равна высоте дерева, но может быть получена и меньшая длина пути, если искомый элемент расположен в какой-либо промежуточной вершине В-дерева.

3. Если требуется получить упорядоченный список всех значений, включенных в дерево (или, другими словами, выполнить последовательную выборку данных), должен использоваться алгоритм обхода дерева, который потребует многократное перемещение в одну и ту же вершину дерева.

      1. В+ дерево

Чтобы устранить недостатки, свойственные В-дереву при выполнении последовательной выборки данных, было введено В+ дерево.

В+ дерево во многом аналогично В-дереву. Как и В-дерево, В+ дерево является сбалансированным. Для В+ дерева устанавливаются те же ограничения на количество ключей в каждой вершине дерева, зависящие от порядка дерева.

Различие между В+ деревом от В-деревом заключается в следующем.

В В-дереве все вершины дерева равноправны и содержат ключи и ассоциированные с ними данные.

В В+ дереве выделяются два типа вершин: промежуточные вершины индексов и листья. Ключи и ассоциированные с ними данные размещаются только в листьях. Листья объединяются в связанное последовательное упорядоченное множество. Это позволяет эффективно выполнять последовательные запросы. Доступ к листьям осуществляется через промежуточные вершины В+ дерева, организованные в виде обычного В-дерева индексов (рис. II-71).

Рис. II-71.

Исходя из этого, В+ дерево можно определить (используя введенное ранее определение В-дерева) следующим образом.

1. Для любой вершины В+ дерева, включая листья, выполняются те же ограничения на количество ключей и указателей (в зависимости от порядка дерева), что и в В-дереве.

2. Все ключи в В+ дереве хранятся в листьях. Для обеспечения правильного доступа отдельные ключи могут дублироваться и в промежуточных вершинах индексов.

3. Доступ к информации в В+ дереве выполняется всегда за hшагов, гдеh– высота В+ дерева.

4. Выполнение операций включения и удаления в В+ дереве несколько отличается от выполнения соответствующих операций в В-дереве.

Соседние файлы в папке docs