- •16. Обход n-арного дерева. Алгоритмы обхода n-арного дерева.
- •17.Бинарные деревья – основные определения, свойства и теоремы.
- •18,19.Не рекурсивные алгоритмы обхода бинарного дерева.
- •20.Поиск в упорядоченных таблицах. Последовательный поиск в массиве.
- •21.Поиск в упорядоченных таблицах. Двоичный поиск в массиве. Фибоначчиев поиск. Интерполяционный поиск.
- •22. Поиск в линейном списке.
- •23.Двоичное дерево поиска. Свойства. Основные операции.
- •Iterative_Tree_Search(t,k).
- •24. Добавление элемента в двоичном дереве поиска.
- •25. Удаление элемента в двоичном дереве поиска.
- •26. Абстрактная таблица. Основные операции. Способ реализации.
- •27. Авл – деревья. Свойства. Вращение. Высота авл-дерева (теорема) Определение и свойства авл-дерева
- •Авл - дерево
- •Повороты при балансировке
- •Алгоритм на псевдокоде
- •Алгоритм на псевдокоде
- •29. Удаление вершины в авл – дереве.
- •Алгоритм на псевдокоде
- •30. Красно – черные деревья. Свойства. Вращение. Высота красно – черного дерева.
- •Повороты
- •Операции поворота в бинарном дереве поиска
- •31. Добавление вершины в красно – черном дереве.
- •32. Удаление вершины в красно – черном дереве.
- •33. 2-3 Деревья. Основные свойства. Высота 2-3 дерева.
- •34 Обход 2-3 дерева.
- •35 Добавление элемента в 2 – 3 дерево.
- •36 Удаление элемента в 2 – 3 дереве.
- •37 2 – 3 – 4 Деревья. Основные свойства. Высота 2 – 3 – 4 дерева.
- •38 Добавление элемента в 2 – 3 – 4 дерево.
- •39. Стратегии внутренней сортировки.
- •40. Турнирная сортировка.
- •41. Пирамидальная сортировка.
- •42. Вставка с убывающим шагом.
- •43. Быстрая сортировка.
- •44. Быстрая двоичная сортировка.
- •45. Цифровая сортировка.
- •46. Карманная (блочная) сортировка.
- •47. Сортировка подсчетом
- •48. Сортировка слиянием. Рекурсивный алгоритм
- •49. Нижняя граница вычислительной сложности алгоритмов сортировки.
- •50. Поиск в глубину в графе. Рекурсивный алгоритм.
- •51. Поиск в ширину в графе. Не рекурсивный алгоритм.
- •52. Топологическая сортировка. Алгоритм топологической сортировки.
- •58. Стягивающие деревья. Нахождение стягивающего дерева методом поиска в ширину
- •59. Стягивающие деревья. Нахождение стягивающего дерева методом поиска в глубину.
- •60.Минимальные покрывающие деревья. Алгоритм Прима
- •61.Минимальные покрывающие деревья. Алгоритм Крускала.
- •62. Нахождение кратчайших путей в графе. Алгоритм Форда – Беллмана
- •63 Поиск кратчайших путей в графе. Алгоритм Дэйкстры.
- •64 Пути в бесконтурном графе.
- •65 Алгоритм Флойда поиска кратчайших путей между всеми парами вершин
- •66. Открытое хеширование.
- •67. Хеш-функции (ключи как натуральные числа, деление с остатком, умножение).
- •68. Закрытое хеширование. (Линейная последовательность проб. Квадратичная последовательность проб. Двойное хеширование).
- •69 Алгоритм Кнута-Морриса-Пратта.
- •70 Поиск подстрок. Алгоритм Бойера-Мура.
- •71. Поиск подстрок. Алгоритм Рабина-Карпа
- •72 Равномерный и неравномерный код. Префиксное кодирование.
- •73. Алгоритм Шеннона – Фано
- •74. Сжатие информации. Метод Хаффмана.
- •75. Исчерпывающий перебор. Задачи коммивояжера. Задача о назначениях.
- •77. Метод ветвей и границ. Задача о назначениях. Задача о рюкзаке. Задача коммивояжера.
- •Постановка задачи коммивояжера
- •Алгоритм решения задачи коммивояжера Жадный алгоритм
- •Полный перебор
- •78. Динамическое программирование. Восходящее и нисходящее динамическое программирование
- •79.Задача определения наиболее длинной общей подпоследовательности.
- •80. Перемножение последовательности матриц.
27. Авл – деревья. Свойства. Вращение. Высота авл-дерева (теорема) Определение и свойства авл-дерева
Дерево поиска называется АВЛ – деревом, если для каждой его вершины высоты левого и правого поддеревьев отличаются не более чем на 1.
Авл - дерево
Высота AVL-деревьев оценивается сверху логарифмически в зависимости от числа вершин: h <= C log2 n . Высота лежит в диапазоне от log2(n + 1) до 1.44 log2(n + 2)
Повороты при балансировке
Пусть r – корень АВЛ-дерева, у которого имеется левое поддерево (ТL) и правое поддерево (TR). Если добавление новой вершины в левое поддерево приведет к увеличению его высоты на 1, то возможны три случая:
если hL = hR, то ТL и TR станут разной высоты, но баланс не будет нарушен;
если hL < hR, то ТL и TR станут равной высоты, т. е. баланс даже улучшится;
если hL > hR, то баланс нарушиться и дерево необходимо перестраивать.
Введём в каждую вершину дополнительный параметр Balance (показатель баланса), принимающий следующие значения: -1, если левое поддерево на единицу выше правого;0, если высоты обоих поддеревьев одинаковы;1, если правое поддерево на единицу выше левого.
Если в какой-либо вершине баланс высот нарушается, то необходимо так перестроить имеющееся дерево, чтобы восстановить баланс в каждой вершине. Для восстановления баланса будем использовать процедуры поворотов АВЛ-дерева.
Алгоритм на псевдокоде
LL - поворот
q := p→Left
q→Balance := 0
p→Balance := 0
p→Left := q→Right
q→Right := p
p := q
LR – поворот
Алгоритм на псевдокоде
LR - поворот
q := p→Left, r := q→Right
IF (r→Balance<0) p→Balance := +1 ELSE p→Balance := 0 FI
IF (r→Balance>0) q→Balance := –1 ELSE q→Balance := 0 FI
r→Balance := 0
p→Left := r→Right, q→Right := r→Left
r→Left := q, r→Right := p, p := r
RR
– поворот
p
RR – поворот
Алгоритм на псевдокоде
RR - поворот
q := p→Right
q→Balance := 0
p→Balance := 0
p→ Right:= q→ Left
q→ Left := p
p
RL
– поворот
RL – поворот
Алгоритм на псевдокоде
RL - поворот
q := p→ Right, r := q→ Left
IF (r→Balance>0) p→Balance := -1 ELSE p→Balance := 0 FI
IF (r→Balance<0) q→Balance := 1 ELSE q→Balance := 0 FI
r→Balance := 0
p→ Right:= r→ Left, q→ Left:= r→ Right
r→ Left := p, r→Right := q, p := r
28. Добавление вершины в АВЛ – дерево.
Добавление новой вершины в АВЛ-дерево происходит следующим образом. Вначале добавим новую вершину в дерево так же как в случайное дерево поиска (проход по пути поиска до нужного места). Затем, двигаясь назад по пути поиска от новой вершины к корню дерева, будем искать вершину, в которой нарушился баланс (т. е. высоты левого и правого поддеревьев стали отличаться более чем на 1). Если такая вершина найдена, то изменим структуру дерева для восстановления баланса с помощью процедур поворотов.