Учебное пособие Самара 2015 + 004. 43 Ббк 32. 973 Н 19


Download 1.98 Mb.
bet40/53
Sana15.08.2023
Hajmi1.98 Mb.
#1667321
TuriУчебное пособие
1   ...   36   37   38   39   40   41   42   43   ...   53
Bog'liq
Lekcii AiSD 2015

Б-деревья



Б-деревья (Ъайера—МакКрейта) являются сdалансирован- нышп деревьями, у которых число ветвей, исходящих из узлов, может быть два и doлee. Узел, корневой для двух ветвей, содер- жит единственный ключ, а узел, корневой для нескольких ветвей, содержит составной ключ несколько ключей, число которых на 1 меньше числа ветвей. Упрощенная архитектура Б—дерева пока— зана на рисунке 10.18:

Рис. 10.18 — Б-дерево


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


Существуют способы преобразования двоичного дерева в Б- дерево и наоборот.
141
Модификацией Б-дерева является Б+дерево Б-дерево, у которого терминальные узлы соединены в связный список (см. рисунок 10.19). Именно по такому принципу хранятся данные в базах данных по технологии Microsoft SQL Server.
Возможны и другие модификации Б-дерева, например Б++ дерево — Б+ дерево, у которого связный список формируется не только на самом нижнем уровне, но и на уровень выше.
В тех случаях, когда максимальное число ветвей, исходящих из узла, ограничено, получаются, например, 2-3-деревья и 2-3-4- деревья.

Рис. 10.19 — Б+ дерево


Кроме рассмотренных сбалансированных деревьев сущест- вует также расширяемое дерево Тарьяна (splay-tree), являющее двоичным деревом поиска и обеспечивающее балансировку без каких-либо дополнительных признаков. Балансировка выполня- ется в том числе с использованием операций поворотов, анало- гичных показанной на рисунке 10.15.


При необходимости обычное двоичное дерево поиска мож- но принудительно балансировать, например, алгоритмом, анало- гичным нисходящему обходу дерева. Но при этом не только не гарантируется эффективность алгоритма, но и существует воз- можность получить алгоритм с худшим временем работы, на- пример, P(N ). Подобные алгоритмы относятся к категории «на- пвпых», т.е. наиболее очевидных, но не всегда эффективных. То же самое справедливо для операции поиска ближайшего общего предка.
142

    1. Многоключевые деревья

Б-деревья могут считаться частным случаем многоключевых деревьев (с переменным числом ключей). Ещё один такой част- ный случай — Декартово дерево. Это древовидная структура данных, в каждом узле которой содержится два ключа, по одному ключу она является двоичной пирамидой, а по второму ключу двоичным деревом поиска.


Более простая ситуация двухключевое дерево, которое яв- ляется двоичным деревом поиска либо только по одному из клю- чей, либо по сумме ключей (именно в этом случае возможно по- вторение сумм ключей). Такое дерево может использоваться для описания рёбер графа. При этом также возможно повторение ключей в дереве, в зависимости от структуры графа.
Операции с такими двухключевыми деревьями ничем не от- личаются от операций с обычными двоичными деревьями.


Вопросы н задания для самоконтроля



ных?


    1. Что представляют собой древовидные структуры дан-




    1. Какие существуют виды деревьев?

    2. Что представляет собой двоичное дерево?

    3. В чем заключается особенность дерева как структуры

данных?

    1. Опишите организацию связей в дереве.

    2. Перечислите основные области применения деревьев.

    3. Какие операции осуществляются над деревьями?

    4. В чем преимущества использования деревьев?

    5. Чем отличаются двоичные деревья от списков?

    6. Изобразите структуру элемента двоичного дерева.

    7. Процедуры какого характера наиболее эффективны

при работе с деревьями?

    1. Чем отличаются: сбалансированное, несбалансиро- ванное и вырожденное двоичные деревья. Проиллюстрируйте ри- сунками.

    2. Что означают термины «сбалансированное дерево» и

«идеально сбалансированное дерево»?

143


    1. Чем вырожденное дерево отличается от односвязного списка?

    2. Перечислите основные способы прохождения двоич- ного дерева.

    3. Предложите процедуру обхода дерева в ширину с ис- пользованием стека вместо очереди.

    4. Почему рекурсивные функции наиболее эффективны при работе с деревьями?

    5. В чем заключается вставка узла в дерево?

    6. Предложите нерекурсивную процедуру добавления узла в дерево без использования поиска.

    7. В чем заключается удаление узла из дерева?

    8. Проиллюстрируйте процесс удаления узла. Как дей- ствует алгоритм в каждом из трех возможных случаев?

    9. Что такое высота дерева?

    10. Как сохранить сбалансированность дерева при встав- ке и удалении узлов?

    11. Чем отличается красно-чёрное дерево от АВЛ-дерева?

    12. Каковы основные особенности красно-чёрного и АВЛ-дерева?

    13. На каких структурах данных могут строится деревья?

    14. Используя приведённые в этом разделе функции, на- пишите программу построения и просмотра двоичного дерева поиска. Используя правильный порядок ввода данных, постройте с помощью этой программы 1-2-братское дерево.

    15. В каком порядке должны вводиться данные, чтобы получилось сбалансированное дерево?

144
11. Элементы теории графов




    1. Download 1.98 Mb.

      Do'stlaringiz bilan baham:
1   ...   36   37   38   39   40   41   42   43   ...   53




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling