Алгоритмы и структуры данных 2016 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Лекции)
Строка 96: Строка 96:
  
 
== Рекомендуемая литература ==
 
== Рекомендуемая литература ==
# [http://e-maxx.ru/bookz/files/cormen.pdf Кормен, Лейзерсон, Ривест, Штайн. Алгоритмы: построение и анализ]
+
# Кормен, Лейзерсон, Ривест, Штайн. Алгоритмы: построение и анализ ([https://vk.com/doc4262442_326131655?hash=9d6945b570241aa338&dl=681b57216bf37463e9 3-е изд.], [http://librarun.org/book/4121/1 2-е изд.], [http://e-maxx.ru/bookz/files/cormen.pdf 1-е изд.])
 
# [https://dl.dropboxusercontent.com/u/829163/draft.pdf Дасгупта, Пападимитриу, Вазирани. Алгоритмы] ([http://beust.com/algorithms.pdf оригинал] | [http://biblio.mccme.ru/node/5066/shop купить])
 
# [https://dl.dropboxusercontent.com/u/829163/draft.pdf Дасгупта, Пападимитриу, Вазирани. Алгоритмы] ([http://beust.com/algorithms.pdf оригинал] | [http://biblio.mccme.ru/node/5066/shop купить])
  
 
== Полезные ссылки ==
 
== Полезные ссылки ==
 
# [[Reviewboard|Инструкция по использованию Review Board.]]
 
# [[Reviewboard|Инструкция по использованию Review Board.]]

Версия 09:06, 14 мая 2015

О курсе

Лектор: Объедков Сергей Александрович

Лекции

Конспект Ярослава Сергиенко.

13 января: Сортировка вставкой и слиянием. Использование инварианта цикла при доказательстве корректности сортировки вставкой. Θ- и O-обозначения. Оценка сложности алгоритмов. Рекуррентные соотношения.

16 января: О-, o-, Ω-, ω-, Θ-обозначения. Быстрая сортировка, время работы в худшем, лучшем и среднем случаях. Оптимальность сортировки слиянием. Сортировка при помощи двоичного дерева поиска и ее связь с быстрой сортировкой.

20 января: Примеры решения рекуррентных соотношений: решение с использованием дерева рекурсии и методом подстановки. Формулировка и интуитивное объяснение основной теоремы. (Конспект.)

23 января: Выбор порядковой статистики за время O(n): рандомизированный и детерминированный алгоритмы.

27 января: Быстрое возведение в степень по модулю. Алгоритм Карацубы для умножения целых чисел. Алгоритм Штрассена для умножения матриц.

30 января: Поиск ближайшей пары точек за время O(nlog n). Задача о планировании взвешенных интервалов: рекурсивное решение.

3 февраля: Динамическое программирование. Задача о планировании взвешенных интервалов: рекурсивное решение с мемоизацией и итеративное решение. Свойства задач, эффективно решаемых при помощи динамического программирования: наличие полиномиального числа подзадач, выразимость исходной задачи в терминах подзадач, сводимость больших подзадач к полиномиальному числу меньших подзадач. Выравнивание абзаца по ширине: рекурсивное решение с мемоизацией.

6 февраля: Лекция отменяется из-за болезни преподавателя, но будет компенсирована 11 апреля.

10 февраля: Вычисление редакционного расстояния и выравнивание последовательностей.

12 февраля: Графы: обход в глубину и в ширину, поиск компонент связности в неориентированных графах.

17 февраля: Способы представления графов: матрица смежности и списки смежности. Оценка сложности алгоритмов поиска в ширину и глубину, поиска компонент связности в неориентированных графах. Связность в ориентированных графах, алгоритм проверки сильной связности ориентированного графа.

20 февраля: Топологическая сортировка. Вычисление компонент сильной связности в ориентированном графе.

24 февраля: Поиск кратчайших путей во взвешенном графе: алгоритмы Беллмана – Форда и Флойда – Уоршелла.

27 февраля: Выполнимость 2-КНФ и компоненты сильной связности. Перемножение матриц, поиск пути через промежуточную точку и алгоритм Флойда – Уоршелла.

3 марта: Лекция переносится на 11 апреля.

6 марта: Жадные алгоритмы. Примеры: (1) выбор максимального подмножества непересекающихся интервалов; (2) разбиение множества интервалов на минимальное число подмножеств непересекающихся интервалов; (3) составление плана работ с заданными продолжительностями и крайними сроками выполнения, минимизирующего максимальную задержку. Различные методы доказательства корректности жадных алгоритмов.

10 марта: Алгоритм Дейкстры.

13 марта: Структуры данных. Массив с операциями инициализации, чтения и записи, выполняемыми за время O(1). Три подхода к амортизационному анализу: групповой анализ, банковский метод и метод потенциалов (на примере двоичного счетчика).

17 марта: Реализация приоритетной очереди при помощи двоичной кучи.

20 марта: Минимальные основные деревья. Алгоритмы Крускала, Прима и Reverse-Delete.

31 марта: Система непересекающихся множеств.

3 апреля: Сжатие путей в системе непересекающихся множеств. Кластеризация и алгоритм Крускала.

7 апреля: Жадный алгоритм на матроиде.

10 апреля: Максимальный поток. Алгоритм Форда – Фалкерсона.

11 апреля: Алгоритм Эдмондса – Карпа.

14 апреля: Двойственность задач о максимальном потоке и минимальном разрезе. Сведение задачи о максимальном паросочетании в двудольном графе к задаче о максимальном потоке.

17 апреля: Задача о назначениях (поиск совершенного паросочетания с минимальным весом во взвешенном двудольном графе). Алгоритм, последовательно находящий самые дешевые увеличивающие пути.

21 апреля: Рандомизированный алгоритм поиска минимального разреза (алгоритм Каргера). Простой рандомизированный алгоритм для вычисления означивания переменных, максимизирующего число истинных дизъюнктов в 3-КНФ: случайное означивание гарантирует истинность 7/8 всех дизъюнктов в среднем.

24 апреля: Хеш-таблицы. Разрешение коллизий при помощи цепочек. Открытая адресация.

28 апреля: Сбалансированные деревья поиска. Красно-черные деревья.

Домашние задания

Задание 1

Необходимо сдать все 6 задач в данном контесте. На выполнение задания дается 2 недели (см. точное время окончания в контесте). Условия ревью определяют семинаристы.

Задание 2

Контест. В домашнем задании пять задач, из которых нужно решить три, назначенные преподавателем, ведущим семинарские занятия в вашей группе. На выполнение задания дается примерно 2 недели (см. точное время окончания в контесте). Условия ревью определяют семинаристы. Дорешивание.

Задание 3

Контест. В домашнем задании пять задач. Они разделены на два варианта, помеченные римскими цифрами I и II. Свой вариант нужно узнать у семинариста. Третья задача — общая для двух вариантов; ее решение необходимо снабдить доказательством корректности алгоритма. На выполнение задания дается примерно 2 недели (см. точное время окончания в контесте). Условия ревью определяют семинаристы.

Контрольная работа

Контрольная работа состоится 11 апреля в 13:40 – 15:00 в ауд. 622. Примеры задачрешений)].

Семинары

Подгруппа 101-1.
Подгруппа 101-2.
Подгруппа 102-1.
Подгруппа 102-2.
Подгруппа 103-1.
Подгруппа 105-1.
Подгруппа 106-1.
Подгруппа 106-2.
Подгруппа 107-1.
Подгруппа 107-2.

Рекомендуемая литература

  1. Кормен, Лейзерсон, Ривест, Штайн. Алгоритмы: построение и анализ (3-е изд., 2-е изд., 1-е изд.)
  2. Дасгупта, Пападимитриу, Вазирани. Алгоритмы (оригинал | купить)

Полезные ссылки

  1. Инструкция по использованию Review Board.