Обратная связь
– Практически разберетесь в основных понятиях и сами сможете объяснить, что такое исполнитель, абстракция, объекты, методы, итерация, рекурсия, жадные алгоритмы, динамическое программирование, сортировка, поиск и графы.
– Сможете анализировать основные свойства алгоритмов.
– Научитесь выбирать необходимые структуры данных для решения задач и обосновывать свой выбор.
– Будете эффективно реализовывать алгоритмы на языках С и С++.
В курсе делается упор не на теоретические знания, а на практические навыки написания корректных программ с использованием базовых алгоритмов. Предусмотрены домашние задания после каждой лекции, а также четыре рубежных контроля.
Специальной подготовки от абитуриентов не требуется.
Цель
курса —
сможете легко ориентироваться в алгоритмах и структурах данных, организовывать оптимальные сочетания и использовать С и С++ для реализации алгоритмов. После прохождения подготовительного курса с большей вероятностью сможете поступить на основную программу и сделаете свое обучение более эффективным.
Студенты, набравшие баллы на «отлично», имеют привилегии при отборе на основную программу «Техносферы» и сдают только кейс вместе с основным набором на программу (сентябрь, февраль). По онлайн-тестированию и техническому собеседованию такие студенты получают максимальное количество баллов.
Лекция №1
Введение. Исполнители. Абстракции интерфейсов. Рекурсия.
Сложность алгоритмов. Исполнитель. Ресурсы исполнителя. Эффективность алгоритма. O-нотация. Инварианты. Индуктивное программирование. Понятие корректности алгоритмов. Автоматы. Язык С++ как исполнитель алгоритма. Отображение алгоритма на исполнителей. Абстракция интерфейсов "массив", "стек" и "множество". Представление чисел. Рекурсия и итерация. Основная теорема о рекурсии.
4 часа 3 часа СР
Семинар №1
Примеры реализации абстракций: стек, множество. Стоимость основных операций. Детерминированный конечный автомат. Деревья рекурсии.
4 часа 3 часа СР
Лекция №2
Экстремальные задачи. Понятие жадного алгоритма. Принцип локальной оптимальности. Задача об интервалах. Задача о резервных копиях. Применимость жадных алгоритмов. Приближённое решение экстремальных задач. Приближённое решение задачи о рюкзаке. Сжатие информации: алгоритм Хафмена. Префиксное дерево. Задача о покрытии строки. Строки. Z-функция.
4 часа 3 часа СР
Семинар №2
Решение задач на жадные алгоритмы.
Задача про банкомат. Применимость жадных алгоритмов. Задача об аудиториях. Задача про атлетов. Задача про минимальный вес множества отрезков.
4 часа 3 часа СР
Семинар №3
Операции со строками. Префикс-деревья. Префикс-функция.
Операции со строками. Префикс-деревья. Префикс-функция.
4 часа 1 часа СР
Лекция №3
Задача сортировки. Устойчивость сортировки. Внутренняя и внешняя сортировки. Абстракция сортировки. Метод sort. Сортировки сравнением. Функция сравнения. Нахождение k-й порядковой статистики. Быстрая сортировка. Деревья решений. Сортировка с использованием свойств элементов – подсчётом, поразрядная. Внешняя сортировка. Сравнительный анализ. Применимость методов.
4 часа 3 часа СР
Семинар №4
Алгоритм поиска порядковой статистики. Радикс-сортировка. Исследование производительности алгоритмов
Алгоритм поиска порядковой статистики. Радикс-сортировка. Исследование производительности алгоритмов.
4 часа 3 часа СР
Лекция №4
Задача поиска. Абстракция поиска. Последовательный поиск. Поиск с сужением зоны. Распределяющий поиск. Структура данных "список". Абстракция "очередь". Структура данных "дерево". Представление деревьев. Обход деревьев. Бинарная куча и абстракция "приоритетная очередь". Пирамидальная сортировка.
4 часа 3 часа СР
Семинар №5
Обратные задачи для монотонных функций.
Решение уравнений.
Построение деревьев поиска.
Битовый ввод/вывод и алгоритм Хаффмена.
4 часа 3 часа СР
Лекция №5
Отображения. Сбалансированные и специальные деревья.
Абстракция "отображение". Бинарные деревья поиска. Рандомизированные деревья. Декартовы деревья. Сбалансировнные деревья. Списки с пропусками. Внешний поиск и B-деревья. Дерево отрезков.
4 часа 3 часа СР
Семинар №6
AVL-деревья. Реализация абстракции "отображение" на деревьях.
Хранение полных бинарных деревьев в массиве. Оценка сложности операций с Heap. Быстрая сортировка с применением бинарных деревьев. Быстрая сортировка на месте.
4 часа 3 часа СР
Лекция №6
Быстрый поиск. Хеш-функции и хеш-таблицы
Обобщённый быстрый поиск. Хеш-функции, их свойства и исследование. Применение хеш-функций. Вероятностные множества. Фильтр Блума. Алгоритм Карпа-Рабина. Организация хеш-таблиц – открытая, закрытая, с рехешированием, со списками. Реализация абстракции «отображение» через хеш-таблицы. Хеш-таблицы во внешней памяти.
4 часа 3 часа СР
Семинар №7
Использование хеш-функций и хеш-таблиц.
Использование хеш-функций и хеш-таблиц.
4 часа 3 часа СР
Лекция №7
Задача о количестве маршрутов. Принцип Беллмана и уравнение Беллмана. Задача о возрастающей подпоследовательности наибольшей длины. Декомпозиция задач. Рекурсия как база динамического программирования. Динамическое программирование и игры. Уход от рекурсии. Восходящее решение. Этапы решения методом ДП. Применимость. Применение хеш-таблиц для задач ДП. Многомерные варианты. Задача о сравнении геномов. Расстояние редактирования. Задача о счастливых билетах.
4 часа 3 часа СР
Семинар №9
Решение задач на динамическое программирование. Разбор сложных тем.
4 часа 3 часа СР
Лекция №8
Поиск мостов и точек сочленения. Нахождение циклов.
Представление графов. Путь в графе. Понятие релаксации. Нахождение кратчайшего пути в графе. BFS, DFS. Поиск компонентов связности. Остовные деревья. Алгоритм Прима. Алгоритм Краскала. Система непересекающихся множеств. Алгоритм Дейкстры, его связь с жадными алгоритмами. Алгоритм Флойда-Уоршалла.
4 часа 3 часа СР
Семинар №10
Задача LCA. Двудольные графы. Поиск паросочетаний.
Корректность алгоритмов Беллмана-Форда и Дейкстры. Направленный ациклический граф, его свойства и связь с динамическим программированием. Циклы и пути Эйлера. Нахождение точек сочленения и мостов. Графы-деревья. Алгоритм Флойда-Воршалла. Корректность алгоритма. Транзитивное замыкание. Комбинированные задачи.
4 часа 3 часа СР
Семинар №11
Решение задач повышенной сложности по всему курсу
Разбор домашних заданий 6,7,8, рубежного контроля 3. Различные сложные задачи
4 часа 3 часа СР