Сложность алгоритмов
Обязательный курс для студентов 418 группы. Читается в осеннем семестре.
Лектор - профессор Алексеев Валерий Борисович.
Содержание
- 1 Программа курса
- 1.1 Примеры задач с оценкой временной сложности по порядку.
- 1.2 Некоторые общие результаты о сложности алгоритмов.
- 1.3 Метод динамического пpогpаммиpования.
- 1.4 Метод "pазделяй и властвуй" для построения быстрых алгоритмов.
- 1.5 Метод pасшиpения модели для построения быстрых алгоритмов.
- 1.6 Некоторые классы сложности.
- 1.7 Вопросы к экзамену по курсу «Сложность алгоритмов» для гр. 418.
- 2 Литература
Программа курса
Примеры задач с оценкой временной сложности по порядку.
Сложность распознавания симметрии на машине Тьюринга. Сложность распознавания полноты системы булевых функций на машине Тьюринга.
Некоторые общие результаты о сложности алгоритмов.
Вычислимые функции, их нумерация. Теоремы о существовании общерекурсивной функции, трудно вычислимой хотя бы в одной точке, в бесконечном числе точек и почти всюду. Регулярные языки и автоматы. Теорема о регулярности языка, распознаваемого со следом константной или слаборастущей длины. Несуществование задач с временной сложностью на машине Тьюринга по порядку между n и nlogn.
Метод динамического пpогpаммиpования.
Алгоpитм поиска кpатчайших путей между всеми паpами веpшин в гpафе. Алгоpитм для задачи об оптимальном поpядке умножения матpиц.
Метод "pазделяй и властвуй" для построения быстрых алгоритмов.
Алгоpитмы соpтиpовки вставкой и слиянием. Быстрые алгоpитмы для умножения чисел и матpиц.
Метод pасшиpения модели для построения быстрых алгоритмов.
Алгоpитмы обычного и булевского умножения матpиц с битовыми опеpациями. Алгоpитм тpанзитивного замыкания гpафа. Алгоpитмы для pаспознавания пpинадлежности булевых или многозначных функций, заданных векторно, некоторым замкнутым классам. Верхние оценки сложности распознавания полноты в множестве булевых и частичных булевых функций.
Некоторые классы сложности.
Определение классов DLOG, NLOG, P, NP, PSPACE, соотношение между ними. Теорема Кука об NP-полноте задачи о выполнимости конъюнктивной нормальной формы. Доказательство NP-полноты других задач.
Вопросы к экзамену по курсу «Сложность алгоритмов» для гр. 418.
Лектор: В.Б. Алексеев, осень 2014 года.
В билете 2 вопроса – один из части А и один из части В.
Часть А – ответ без подготовки, но по любым материалам (конспекты, книжки и т.д.). Проверяется, насколько осознаны все доказательства (основной вопрос – «почему?»). Определения и формулировки утверждений – без конспектов.
- Метод «разделяй и властвуй». Теорема о скорости роста функции, заданной рекуррентным неравенством.
- Алгоритм Тоома для умножения чисел.
- Алгоритм Штрассена для умножения матриц.
- Алгоритмы обычного и булевского умножения матриц с битовыми операциями.
- Сложность распознавания принадлежности функции, заданной векторно, классам, определяемым двухместными предикатами.
- Сложность распознавания принадлежности булевой функции, заданной векторно, классу FmU(Rm).
- Вычислимые функции, их нумерация. Теоремы о существовании трудно вычислимой общерекурсивной функции.
- Теорема Барздиня о распознавании симметрии.
- Теорема о совпадении классов регулярных языков и языков, распознаваемых автоматами.
- Теорема о регулярности языка, распознаваемого со следом константной длины.
- Теорема о регулярности языка, распознаваемого со слаборастущими длиной следа или временем.
- Теорема об NP-полноте языка ГАМИЛЬТОНОВ ЦИКЛ.
- Жадный алгоритм для задачи о кратчайшем остовном дереве.
- Задача коммивояжера, ее NP-трудность, теоремы о приближенных алгоритмах для нее.
- Теорема о PSPACE-полноте задачи о квантифицированных булевских формулах.
- Теорема об иерархии по памяти. Несовпадение классов DLOG и PSPACE.
Часть В – ответ без конспектов и почти без подготовки (с доказательствами).
- Сложность алгоритма бинарного поиска в упорядоченном массиве.
- Нижние оценки сложности поиска в упорядоченном массиве.
- Нижняя оценка сложности сортировки. Сложность алгоритма сортировки вставкой.
- Сложность алгоритма сортировки слиянием.
- Алгоритм динамического программирования для задачи об оптимальном порядке умножения матриц.
- Алгоритм динамического программирования для поиска кратчайших путей между всеми парами вершин в графе.
- Алгоритм Карацубы для умножения чисел.
- Алгоритм транзитивного замыкания графа.
- Верхние оценки сложности распознавания принадлежности булевой функции, заданной векторно, предполным классам Поста T0, T1, S, L, M.
- Леммы о максимальной длине и сумме длин различных слов.
- Классы P и NP. Примеры языков из NP. Замкнутость класса P относительно полиномиального сведения.
- Теоремы об NP-полноте языков КЛИКА, Независимое Множество Вершин, Вершинное Покрытие.
- Полиномиальный алгоритм для построения эйлерова цикла.
- Задача о минимальном вершинном покрытии, ее NP-трудность, жадный и 1-приближенный алгоритмы для нее.
- Класс PSPACE. Соотношение между классами NP и PSPACE. Верхняя оценка времени работы для задач из PSPACE.
- Теорема о принадлежности задачи о квантифицированных булевских формулах классу PSPACE.
- Класс DLOG. Соотношение между классами DLOG и P.
Литература
- Алексеев В.Б. Введение в теорию сложности алгоритмов. М.: Изд. отдел ф-та ВМиК МГУ, 2002.
- Ахо А., Хопкpофт Дж., Ульман Дж. Постpоение и анализ вычислительных алгоpитмов. М.: Мир, 1979.
- Барздинь Я.М. Сложность распознавания симметрии на машинах Тьюринга. Сб. "Проблемы кибернетики", вып. 15 (1965), с. 245-248.
- Гэpи М., Джонсон Д. Вычислительные машины и тpудноpешаемые задачи. М.: Мир, 1982.
- Пападимитриу Х., Стайглиц К. Комбинаторная оптимизация. Алгоритмы и сложность. М., «Мир», 1985.
- Проблемы математической логики. Сложность алгоритмов и вычислимых функций. (Сб. переводов), М.: Мир, 1970.