- •Иркутский государственный технический университет
- •1. Определения графов
- •7.4.5. Массив дуг
- •8.4.2. Трансверсаль
- •8.5.4. Алгоритм нахождения максимального потока
- •8.6.3. Выделение компонент сильной связности
- •8.7.1. Длина дуг
- •8.7.2. Алгоритм Флойда
- •8.7.3. Алгоритм Дейкстры
- •Глава 9 Деревья
- •9.1. Свободные деревья
- •9.1.1. Определения
- •9.1 .2. Основные свойства деревьев
- •9.2. Ориентированные, упорядоченные и бинарные деревья
- •9.2.1. Ориентированные деревья
- •9.2.2. Эквивалентное определение ордерева
- •9.2.3. Упорядоченные деревья
- •9.2.4. Бинарные деревья
- •9.3. Представление деревьев в эвм
- •9.3.1. Представление свободных, ориентированных и упорядоченных деревьев
- •9.3.2. Представление бинарных деревьев
- •9.3.3. Обходы бинарных деревьев
- •9.3.4. Алгоритм симметричного обхода бинарного дерева
- •9.4. Деревья сортировки
- •9.4.1. Ассоциативная память
- •9.4.2. Способы реализации ассоциативной памяти
- •9.4.3. Алгоритм бинарного (двоичного) поиска
- •9.4.4. Алгоритм поиска в дереве сортировки
- •9.4.5. Алгоритм вставки в дерево сортировки
- •9.4.6. Алгоритм удаления из дерева сортировки
- •9.4.7. Вспомогательные алгоритмы для дерева сортировки
- •9.4.8. Сравнение представлений ассоциативной памяти
- •9.4.9. Выровненные деревья
- •9.4.10. Сбалансированные деревья
- •9.5. Кратчайший остов
- •9.5.1. Определения
- •9.5.2. Схема алгоритма построения кратчайшего остова
- •9.5.3. Алгоритм Краскала
- •Глава 10 Циклы
- •10.1. Фундаментальные циклы и разрезы
- •10.1.1. Циклы и коциклы
- •10.1.2. Независимые множества циклов и коциклов
- •10.1.3. Циклический и коциклический ранг
- •10.2. Эйлеровы циклы
- •10.2.1. Эйлеровы графы
- •10.2.2. Алгоритм построения эйлерова цикла в эйлеровом графе
- •10.2.3. Оценка числа эйлеровых графов
- •10.3. Гамильтоновы циклы
- •10.3.1. Гамильтоновы графы
- •10.3.2. Задача коммивояжера
- •Глава 11 Независимость и покрытия
- •11.1. Независимые и покрывающие множества
- •11.1.1. Покрывающие множества вершин и ребер
- •11.1.2. Независимые множества вершин и ребер
- •11.1.3. Связь чисел независимости и покрытий
- •11.2. Построение независимых множеств вершин
- •11.2.1. Постановка задачи отыскания наибольшего независимого множества вершин
- •11.2.2. Поиск с возвратами
- •11.2.3. Улучшенный перебор
- •11.2.4. Алгоритм построения максимальных независимых множеств вершин
- •11.3. Доминирующие множества
- •11.3.1. Определения
- •11.3.2. Доминирование и независимость
- •11.3.3. Задача о наименьшем покрытии
- •11.3.4. Эквивалентные формулировки знп
- •11.3.5. Связь знп с другими задачами
- •Глава 12 Раскраска графов
- •12.1. Хроматическое число
- •Ух, . . . ,Vn одноцветные классы,доказательство
- •12.2. Планарность
- •12.2.2. Эйлерова характеристика
- •12.2.3. Теорема о пяти красках
- •12.3. Алгоритмы раскрашивания
- •12.3.1. Точный алгоритм раскрашивания
- •12.3.2. Приближенный алгоритм последовательного раскрашивания
- •12.3.3. Улучшенный алгоритм последовательного раскрашивания
9.4.8. Сравнение представлений ассоциативной памяти
Пусть n — количество элементов в ассоциативной памяти. Тогда сложность операций для различных представлений ограничена сверху следующим образом.
|
Неупорядоченный массив |
Упорядоченный массив |
Дерево сортировки |
Добавить Найти Удалить |
O(1) O(n) O(1) |
O(n) O(log2(n)) 0(n) |
O(log2(n))..O(n) O(log2(n))..O(n) O(log2(n))..O(n) |
Эффективность операций с деревом сортировки ограничена сверху высотой дерева.
ЗАМЕЧАНИЕ
Дерево сортировки может расти неравномерно. Например, если при загрузке дерева исходные данные уже упорядочены, то полученное дерево будет право - или леволинейным и будет даже менее эффективным, чем неупорядоченный массив.
9.4.9. Выровненные деревья
Ордерево называется выровненным, если все узлы, степень которых меньше 2, располагаются на одном или двух последних уровнях. Выровненное дерево имеет наименьшую возможную для данного р высоту h.
Пример
На рис. 9.12 приведены диаграммы выровненного (слева) и невыровненного (справа) деревьев.
Рис. 9.12. Выровненное (слева) и невыровненное деревья
ЛЕММА .
доказательство
Индукция по k. База: k = 0 20 = 1, 21 - 1 = 1, 1 = 1. Пусть, тогда
ТЕОРЕМА Для выровненного бинарного дерева log2(p + 1) - 1 h < log2(p + 1).
доказательство
На i-м уровне может быть самое большее 2i вершин, следовательно,
По лемме имеем: 2h—1 < р 2h+1 - 1и 2h <p+l 2h+1. Логарифмируя, имеем: h< log2(p +1) & h +1log2(p +1). Следовательно log2(p +1) – 1 h < log2(p +1).
ЗАМЕЧАНИЕ
Выровненные деревья дают наибольший возможный эффект при поиске. Однако известно, что вставка/удаление может потребовать полной перестройки всего дерева и, таким образом, трудоемкость операции в худшем случае составит О(р).
9.4.10. Сбалансированные деревья
(Бинарное) дерево называется подровненным деревом, или АВЛ-деревом (Адель-сон-Вельский и Ландис, 1962), или сбалансированным деревом, если для любого узла высота левого и правого поддеревьев отличается не более чем на 1.
Пример
На рис. 9.13 приведена диаграмма максимально несимметричного сбалансированного дерева, в котором для всех узлов высота левого поддерева ровно на 1 больше высоты правого поддерева.
ТЕОРЕМА Для подровненного бинарного дерева h < 2 log2 p.
доказательство
Рассмотрим наиболее несимметричные сбалансированные деревья, скажем, такие, у которых всякое левое поддерево на 1 выше правого. Такие сбалансированные деревья имеют максимальную возможную высоту среди всех сбалансированных деревьев с заданным числом вершин. Пусть Ph — число вершин в наиболее несимметричном сбалансированном дереве высоты h. По построению имеем: р = Ph = Ph-1 + Ph-2 + 1. Непосредственно проверяется, что Р0 = 1, Р1 = 2, Р2= 4. Покажем по индукции, что Ph База: Р0 = 1, = 1, 1 l;P1 = 2 =, 2 .
Рис.9.13. Сбалансированное дерево
Пусть Ph Тогда Ph+l =Ph + Ph-1 + 1 +1=.
Имеем: Ph = р, следовательно, log2p и h 21og2p.
ЗАМЕЧАНИЕ
Известна более точная оценка высоты сбалансированного -дерева: h < 21og2p.
Сбалансированные деревья уступают выровненным деревьям по скорости поиска (менее чем в два раза), однако их преимущество состоит в том, что известны алгоритмы вставки и удаления узлов в сбалансированное дерево, которые сохраняют сбалансированность и в то же время при перестройке дерева затрагивают только конечное число узлов (см., например, [13]). Поэтому в подавляющем большинстве случаев сбалансированное дерево оказывается наилучшим вариантом представления дерева сортировки.