Алгоритмы и структуры данных 2016 — различия между версиями
.obj (обсуждение | вклад) (→Второе домашнее задание) |
.obj (обсуждение | вклад) (→Лекции) |
||
Строка 31: | Строка 31: | ||
* '''16 февраля.''' Графы: обход в глубину и в ширину, поиск компонент связности в неориентированных графах. | * '''16 февраля.''' Графы: обход в глубину и в ширину, поиск компонент связности в неориентированных графах. | ||
− | * '''18 февраля.''' Способы представления графов: матрица смежности и списки смежности. Оценка сложности алгоритма поиска в ширину. | + | * '''[https://www.dropbox.com/s/3phw4r52y25n11o/algo12-graph-representation.pdf?dl=0 18 февраля.]''' Способы представления графов: матрица смежности и списки смежности. Оценка сложности алгоритма поиска в ширину. |
* '''25 февраля.''' Топологическая сортировка за линейное время: алгоритмы, основанные на удалении вершин без входящих ребер (с доказательством корректности) и на поиске в глубину (без доказательства корректности). Вычисление компонент сильной связности (с незаконченным доказательством корректности). | * '''25 февраля.''' Топологическая сортировка за линейное время: алгоритмы, основанные на удалении вершин без входящих ребер (с доказательством корректности) и на поиске в глубину (без доказательства корректности). Вычисление компонент сильной связности (с незаконченным доказательством корректности). |
Версия 13:57, 28 февраля 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 февраля. Топологическая сортировка за линейное время: алгоритмы, основанные на удалении вершин без входящих ребер (с доказательством корректности) и на поиске в глубину (без доказательства корректности). Вычисление компонент сильной связности (с незаконченным доказательством корректности).
Домашние задания
Первое домашнее задание
Первое домашнее задание стоит из двух частей.
К 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 | Денис Симагин | Владимир Гончаров | Страница семинаров |