- •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. Перемножение последовательности матриц.
37 2 – 3 – 4 Деревья. Основные свойства. Высота 2 – 3 – 4 дерева.
Узел может быть двух-, трех- и четырехместным.
1 TL < S; TR > S
2 TL < S; S < TM < L; TR > L
3 TL < S; S < TML < M; M < TMR < L; TR > L
Свойства четырехместного узла:
1 может быть корнем
2 может иметь три сына и два элемента данных
3 может иметь четыре сына и три элемента данных
Максимальная высота 2-3-4 - дерева h=(log2n+1), и вставка нового элемента, как правило, не изменяет ее за исключением случая, когда разделяется корень дерева.
38 Добавление элемента в 2 – 3 – 4 дерево.
Разделение четырех местного узла (остальное как в 2-3 дереве)
1 Корень
2 Родитель двухместный
3 Родитель трехместный
39. Стратегии внутренней сортировки.
Вспомним задачу сортировки в общем виде. Даны элементы . Сортировка означает перестановку этих элементов в порядке, так что при заданной функции упорядочениясправедливо отношение.
Сортировка называется внутренней, если она происходит в оперативной памяти.
1)Выборка – выбирают наименьший элемент и помещают в текущую позицию в выходном потоке.
2)Включение – элементы обрабатываются по одному в произвольном порядке, вставка нового Эл-та в соответствии с отношением его к уже имеющимся элементам.
3)Обмен – элементы сравниваются и при необходимости меняются местами, пока не будут упорядочены.
4)Распределение – элементы распределяются по подмножествам (младшие – в одно, старшие – в другое, промежуточные – в промеж)
5)Слияние – сортированные подмножества объединяются в более крупные, используются методы слияния.
40. Турнирная сортировка.
Этот метод сортировки получил свое название из-за сходства с кубковой системой проведения спортивных соревнований: участники соревнований разбиваются на пары, в которых разыгрывается первый тур; из победителей первого тура составляются пары для розыгрыша второго тура и т.д. Алгоритм сортировки состоит из двух этапов. На первом этапе строится дерево: аналогичное схеме розыгрыша кубка.
Например, для последовательности чисел a:
16 21 8 14 26 94 30 1
такое дерево будет иметь вид пирамиды, показанной на рисунке:
В примере приведена программная иллюстрация алгоритма турнирной сортировки.
Алгоритм:
Строится двоичное дерево (глубина 2к≥n) сортируемых ключей:
1.все ключи листья
2.из пар выбирается мин и становится узлом порядка k-1, процесс продолжается пока корнем дерева не станет мин эл-т
3.переправляем этот эл-т в исходную последовательность
4.спускаемся по дереву и заменяем значения мин элемента на +
5.все промежуточные узлы заменяем минимальными из оставшихся.
6.процесс продолжается до тех пор пока все листья не будут заменены фиктивными ключами
Число сравнений (n-1)log2n: время работы O(log2n)
41. Пирамидальная сортировка.
Пирамида – бинарное дерево, в узлах ключи сортируем по значениям данных.
- Неубывающая;
-Невозрастающая;
Метод простого выбора. N(n-1) сравнений, n-1 перестановок.
Пирамидальная сортировка (сложность nlogn, неустойчивый алгоритм)
Дерево называется пирамидально упорядоченным, если ключ в каждом его узле ≥ ключам всех его потомков. Сортирующее дерево – совокупность ключей, образующих полное пирамидально упорядоченное дерево. Для реализации дерева используется массив([i/2]-родитель, 2i, 2i+1- потомки). При такой организации прохождение по дереву проходит более быстро с большой экономией памяти. Поддержание основного свойства пирамид дерева.
Heapify(A[1..n],i)
L←2*i
R←2*i+1
If (L<=Head_size) and (A[L]>A[i])
Then largest←L
Else largest←i
If (R<=Head_size) and (A[k]>A[largest])
Then largest←R
If largest≠I then A[i]A[largest]
Hepify(A,largest)
Построение пирамиды
BiuldHeap(A[1..n])
Heap_size←n
For i=└n/2┘ downto 1 do
Heapify(a,i)
End for
Сортировка
HeapSort(A[1..n])
BuildHeap(a)
For I = n downto 2 do
A[i]↔A[1]
Heapsize←Heapsize-1
Heapity(A,1)
End for