Вопросы к экзамену / Структуры данных и алгоритмы 2018
.pdfСтруктуры данных и алгоритмы
1.Асимптотические обозначения, сортировка вставкой.
○Асимптотические обозначения (O, Ω,Θ).
○Теорема о связи O, Ω и Θ.
○Свойства O с доказательствами (правило сумм, правило произведений и умножения и добавления константы).
○Сортировка вставкой (Inserion Sort).
○Оценка времени работы сортировки вставкой.
○Доказательство корректности сортировки вставками (с помощью инварианта цикла).
2.Сортировки методом декомпозиции. Линейные сортировки.
○Сортировка слиянием (Merge Sort).
○Доказательство корректности операции Merge с помощью инварианта цикла.
○Точная оценка времени работы сортировки слиянием с помощью рекуррентных соотношений (по индукции).
○Точная оценка времени работы сортировки слиянием (интуитивная, стр. 80).
○Быстрая сортировка (Quick Sort).
○Оценка времени работы быстрой сортировки в лучшем и худшем (интуитивные, стр. 203-204).
○Рандомизированный вариант алгоритма быстрой сортировки и его преимущества.
○Сортировка подсчетом (Counting Sort) + оценка времени работы.
○Устойчивость алгоритмов на примере сортировки подсчетом.
○Поразрядная сортировка (Radix Sort) + оценка времени работы.
3.Элементарные структуры данных. Сортировка кучей.
○Стеки, очереди, списки (односвязные, двусвязные, циклические) и операции с ними.
○Двоичное дерево: терминология (определение, родитель, потомок, предок, глубина, высота и полное дерево).
○Определение двоичной кучи и реализация на массиве.
○Восстановление свойства невозрастания кучи (Heapify) + оценка времени работы.
○Алгоритм создания кучи (Build_Max_Heap) + грубая оценки времени работы.
○Точная оценка времени работы Build_Max_Heap (стр. 186-187).
○Сортировка кучей (Heap Sort) + оценка времени работы
4.Очередь с приоритетом. Двоичное дерево поиска. Бинарный поиск.
○Очередь с приоритетами на основе кучи. Операции в очереди с приоритетами.
○Бинарный поиск (Binary Search) + оценка времени работы.
○Двоичное дерево поиска.
○Центрированный, прямой и обратный обходы двоичного дерева поиска.
○Оценка времени работы центрированного обхода двоичного дерева поиска.
○Операции, выполняемые с бинарными деревьями поиска (с пояснением корректности и оценкой времени работы):
i.поиск элемента по ключу;
ii.поиск минимума и максимума;
iii.поиск предшествующего и последующего элементов;
iv.вставка элемента в дерево;
v.удаление элемента из дерева.
○Зачем нужны сбалансированные деревья поиска. Привести пример какого-либо сбалансированного дерева поиска и описать работу вставки
иудаления.
5.Хеш-таблицы.
○Таблицы с прямой адресацией.
○Хеш-таблицы. Разрешение коллизий с помощью цепочек.
○Хеш-таблицы с закрытой адресацией: метод деления и метод умножения.
○Хеш-таблицы с открытой адресацией: вставка, поиск и удаление.
○Линейное исследование, квадратичное исследование, двойное хеширование.
○Сравнительный анализ качества хеширования в этих подходах на основе числа исследуемых последовательностей.
6.Графы: основные определения. Поиск в ширину. Поиск в глубину. Топологическая сортировка.
○Определения: ориентированный и неориентированный граф, входящая и исходящая степень вершины, полный граф, сильно связный граф, компоненты связности.
○Списки смежности (структура, объем памяти, время доступа к ребру, для каких графов эффективнее)
○Матрица смежности (структура, объем памяти, время доступа к ребру, для каких графов эффективнее)
○Поиск в ширину (BFS). Время работы BFS.
○Поиск в глубину (DFS). Время работы DFS.
○Поиск циклов в графе.
○Поиск компонент связности в неориентированном графе.
○Классификация ребер графа.
○Топологическая сортировка (Topological Sort).
○Доказательство корректности топологической сортировки.
7.Алгоритмы поиска кратчайших путей в графах.
○Определение кратчайшего пути.
○Лемма о частичных путях (подпутях) кратчайшего пути (стр. 665).
○Циклы нулевого, положительного и отрицательного веса и их влияние на поиск кратчайших путей в графе.
○Ослабление ребра.
○Свойства кратчайших путей и ослаблений (стр. 671).
○Алгоритм Беллмана-Форда + оценка времени работы.
○Алгоритм поиска кратчайших путей в ориентированном ациклическом графе + оценка времени работы.
○Алгоритм Дейкстры (с кучей и с массивом) + оценка времени работы.
○Кратчайшие пути между всеми парами вершин: алгоритм Флойда-Воршалла + оценка времени работы.
8.Поиск подстрок.
○Простейший алгоритм поиска подстрок.
○Полиномиальная хеш-функция. Итеративное вычисление хеш-функции и пересчет при сдвиге.
○Алгоритм Рабина-Карпа + оценка времени работы.
○Префикс-функция (алгоритм, время работы).
○Алгоритм Кнута-Морриса-Пратта + время работы.
○Детерминированный конечный автомат (ДКА). Определения и построение.
○Алгоритм поиска подстрок с помощью ДКА.