Алгоритмы и структуры данных 2016 — различия между версиями
.obj (обсуждение | вклад) (→Лекции) |
|||
Строка 92: | Строка 92: | ||
|- | |- | ||
|} | |} | ||
+ | |||
+ | == Учебные контесты == | ||
+ | |||
+ | [https://official.contest.yandex.ru/contest/2007/enter/ Сортировки] | ||
+ | |||
+ | [https://official.contest.yandex.ru/contest/2185/enter/ Динамическое программирование] | ||
+ | |||
+ | [https://official.contest.yandex.ru/contest/2218/enter/ Обход в глубину] | ||
+ | |||
+ | [https://official.contest.yandex.ru/contest/2243/enter/ Обход в ширину] |
Версия 16:31, 3 марта 2016
Лектор: С. Объедков
Расписание лекций:
вторник 13:40 – 15:00, ауд. 622
четверг 10:30 – 11:50, ауд. 622
Содержание
Лекции
- 12 января. Структура курса, правила выполнения домашних заданий. Рекурсивные алгоритмы: задача о Ханойской башне. Оценка времени работы рекурсивного алгоритма при помощи рекуррентного соотношения. Доказательство оптимальности рекурсивного алгоритма.
- 14 января. Сортировка вставкой и слиянием. Использование инварианта цикла при доказательстве корректности сортировки вставкой. Θ- и O-обозначения. Оценка сложности алгоритмов.
- 19 января. О-, o-, Ω-, ω-, Θ-обозначения. Быстрая сортировка, время работы в худшем, лучшем и среднем случаях.
- 21 января. Сортировка при помощи двоичного дерева поиска и ее связь с быстрой сортировкой. Примеры решения рекуррентных соотношений: решение с использованием дерева рекурсии и методом подстановки. Основная теорема.
- 26 января. Разбиение массива по опорному элементу на три части (элементы, меньшие опорного, равные опорному и большие опорного). Оптимальность сортировки слиянием. Выбор порядковой статистики за время O(n): рандомизированный и детерминированный алгоритмы.
- 28 января. Поиск ближайшей пары точек за время O(n logn).
- 2 февраля. Алгоритм Карацубы для умножения целых чисел. Алгоритм Штрассена для умножения матриц.
- 4 февраля. Быстрое возведение в степень по модулю. Динамическое программирование: выравнивание абзаца по ширине (рекурсивное решение с мемоизацией).
- 9 февраля. Динамическое программирование. Задача о планировании взвешенных интервалов: рекурсивное решение с мемоизацией и итеративное решение. Свойства задач, эффективно решаемых при помощи динамического программирования: наличие полиномиального числа подзадач, выразимость исходной задачи в терминах подзадач, сводимость больших подзадач к полиномиальному числу меньших подзадач. Выравнивание абзаца по ширине: итеративное решение. (Контест)
- 11 февраля. Вычисление редакционного расстояния и выравнивание последовательностей.
- 16 февраля. Графы: обход в глубину и в ширину, поиск компонент связности в неориентированных графах.
- 18 февраля. Способы представления графов: матрица смежности и списки смежности. Оценка сложности алгоритмов поиска в ширину и в глубину.
- 25 февраля. Топологическая сортировка за линейное время: алгоритмы, основанные на удалении вершин без входящих ребер (с доказательством корректности) и на поиске в глубину (без доказательства корректности). Вычисление компонент сильной связности (с незаконченным доказательством корректности).
- 1 марта. Оценка сложности алгоритма поиска компонент связности в неориентированных графах. Алгоритм проверки сильной связности ориентированного графа. Вычисление компонент сильной связности в ориентированном графе (завершение доказательства корректности алгоритма). Поиск путей возведением в степень матрицы смежности графа, алгоритм Флойда – Уоршелла.
- 3 марта. Алгоритм Флойда – Уоршелла: формулировка в терминах динамического программирования, оценка сложности, оптимизация по памяти, обнаружение циклов с отрицательным весом, восстановление кратчайших путей. Алгоритм Беллмана – Форда для графов без циклов с отрицательным весом.
Домашние задания
Первое домашнее задание
Первое домашнее задание стоит из двух частей.
К 15 февраля нужно решить три задачи на асимптотику (две — из пункта 1 и одну — из пункта 2) и две задачи на рекуррентные соотношения (одну — из пункта 1 и одну — из пункта 2). Какие именно задачи нужно решить, уточните, пожалуйста, у преподавателя, ведущего практические занятия. Крайний срок выполнения задач может немного различаться в разных подгруппах.
К 20 февраля нужно решить две задачи из контеста (одну типа A и одну — типа B; какие именно, определяет преподаватель, ведущий практические занятия). Решение необходимо снабдить описанием алгоритма, обоснованием корректности и анализом асимптотической сложности.
Второе домашнее задание
Ко 2 марта (!) нужно решить две задачи из контеста (одну типа A и одну — типа B; какие именно, определяет преподаватель, ведущий практические занятия). Решение необходимо снабдить описанием алгоритма, обоснованием корректности и анализом асимптотической сложности. Начало контеста — 22 февраля, 20:00.
Это не все домашнее задание. Дополнительные задачи появятся позже.
Экзамен
Рекомендуемая литература
- Кормен, Лейзерсон, Ривест, Штайн. Алгоритмы: построение и анализ
- Дасгупта, Пападимитриу, Вазирани. Алгоритмы
Преподаватели и ассистенты
Подгруппа | Преподаватель | Учебные ассистенты | Семинары | Консультации |
---|---|---|---|---|
152-1 | Михаил Нокель | Андрей Атанов | ||
152-2 | Сергей Объедков | Андрей Климкин | Страница семинаров | Понедельник, 10:30 – 11:50, ауд. 511 |
154-1 | Илья Макаров | Владимир Гончаров | ||
154-2 | Алексей Умнов | Павел Белов | Страница семинаров | Четверг, 13:40 - 15:00 |
155-1 | Михаил Дектярев | Александр Тиунов | ||
155-2 | Павел Мельничук | Александр Тиунов | Страница семинаров | |
156-1 | Филипп Синицын | Максим Сабянин | ||
156-2 | Алексей Умнов | Павел Белов | Страница семинаров | Четверг, 9:00 - 10:20 |
157-1 | Михаил Густокашин | Андрей Климкин | ||
157-2 | Яна Кашинская | Андрей Атанов | Понедельник, 10:30 – 11:50 | |
158-1 | Николай Субоч | Максим Сабянин | ||
158-2 | Денис Симагин | Владимир Гончаров | Страница семинаров |