- •Предисловие
- •Введение
- •Алгоритмы и их сложность
- •Примеры задач и алгоритмов
- •Задачи на графах: «Коммивояжер», «Кратчайшие пути», «Остовные деревья»
- •Приближенные алгоритмы: «Составление расписаний»
- •«Сортировка слиянием»
- •«Быстрая сортировка»
- •Формально об алгоритмах. Несложно о сложности
- •«RAM»: машины с произвольным доступом
- •Сложность в худшем случае
- •Сложность в среднем
- •Полиномиальные алгоритмы
- •Полиномиальность и эффективность
- •Аппроксимация с гарантированной точностью
- •Алгоритмы с оценками точности
- •Жадные алгоритмы для «Покрытия множеств»
- •Приближенные алгоритмы для «Вершинного покрытия»
- •Жадный алгоритм для «Рюкзака»
- •Алгоритм Кристофидеса
- •Аппроксимация с заданной точностью
- •«Рюкзак»: динамическое программирование
- •Полностью полиномиальная приближенная схема для «Рюкзака»
- •Вероятностный анализ детерминированных алгоритмов
- •Сложность и полиномиальность в среднем
- •Задача упаковки
- •Выполнимость КНФ
- •Точность алгоритма для почти всех входов
- •«Рюкзак»: полиномиальность в среднем
- •Вероятностные алгоритмы и их анализ
- •Вероятностная проверка тождеств
- •Максимальное по включению независимое множество в графе
- •Протокол византийского соглашения
- •Вероятностное округление
- •Максимальный разрез в графе
- •Методы дерандомизации
- •Метод условных вероятностей
- •Метод малых вероятностных пространств
- •Полиномиальная проверка простоты
- •Основы теории сложности вычислений
- •Сложность вычислений
- •Машины Тьюринга и вычислимость
- •Сводимость по Куку
- •Недетерминированные алгоритмы
- •Сводимость по Карпу
- •Вероятностные вычисления
- •Вероятностно проверяемые доказательства
- •Схемы и схемная сложность
- •Коммуникационная сложность
- •Диаграмма классов сложности
- •Приложения
- •Введение в Python
- •Глоссарий
- •Предметный указатель
- •Список алгоритмов
334 |
Глава 6. ОСНОВЫ ТЕОРИИ СЛОЖНОСТИ ВЫЧИСЛЕНИЙ |
6.6Диаграмма классов сложности
В этом разделе постараемся кратко резюмировать информацию по классам сложности задач, встречавшихся в разделе 6.
Мы свели их в единую диаграмму на рис. 6.19, где стрелками изобразили отношения вложенности, а жирными линиями — эквивалентность.
Разумеется, мы не ставили целью отобразить все классы сложности — это вряд ли возможно на одной диаграмме, т.к. сейчас насчитывается не менее четырехсот различных классов сложности (см. [Aar07], «Зоопарк Классов Сложности», где упоминается о примерно пятистах классах).
Упражнение 6.6.1. Покажите, что если NP coRP, то NP coZPP.
6.6. ДИАГРАММА КЛАССОВ СЛОЖНОСТИ |
335 |
Рис. 6.19: Иерархия некоторых классов сложности
Заключение
Книга основана на двух курсах лекций, читавшихся авторами в течение нескольких лет для студентов 4- го и 6-го курсов Московского физико-технического института: «Сложность комбинаторных алгоритмов»
и«Эффективные алгоритмы». Основное внимание уделено рассмотрению вычислительно трудных задач
исовременных подходов к их решению.
Книга состоит из двух частей: первая посвящена методам разработки и анализа алгоритмов решения конкретных задач, вторая — теории сложности.
В первой части описаны современные подходы к решению вычислительно трудных задач — разработка эффективных приближенных алгоритмов с оценками точности, вероятностных алгоритмов, алгоритмов, эффективных при анализе в среднем.
Во второй части представлены классические понятия сложности вычислений, классы сложности, теория NP-полноты, PCP-теорема и ее следствия для доказательства неаппроксимируемости ряда задач, понятия сводимостей, сохраняющих аппроксимации.
Книга предназначена для студентов и аспирантов, специализирующихся по прикладной математике.
336