5.4 Иерархия по сложности. Труднорешаемые задачи.
Рассмотрим следующие классы задач:
P (P-time) – класс задач, решаемых за полиномиальное время на ДМТ.
NP (NP-time) – класс задач, решаемых за полиномиальное время на НДМТ.
P-space – класс задач, которые решаются на обычной машине Тьюринга с использованием не более, чем полиномиальной памяти.
NP-space – класс задач, которые могут быть решены на НДМТ с полиномиальной памятью.
Теорема 5.8 P-time P-space
NP-time NP-space
Доказательство. Ясно, что, работая полиномиальное время, мы используем не более, чем полиномиальную память.
Теорема 5.9 P-space=NP-space
Доказательство. Что P-space NP-space очевидно, так как детерминированная машина всегда может рассматриваться как недетерминированная.
Докажем обратное вхождение .
Пусть Т – некоторая задача, которую мы умеем решать на НДМТ М с использованием полиномиальной памяти. Научимся ее решать также с использованием не более, чем полиномиальной памяти на обычной машине Тьюринга М1.
Наша М1 перебирает все возможные варианты в работе исходной НДМТ М и после окончания разбора очередного варианта освобождает память. Поэтому нам потребуется столько же памяти, сколько требуется для работы исходной машины М, но при этом надо вводить дополнительную память для кодирования номера рассматриваемого варианта. Для этого потребуется не более, чем P(n) ячеек(при двоичной кодировке).
Таким образом, теорема доказана, так как работу любой НДМТ с неполиномиальной памятью мы смогли промоделировать на ДМТ с полиномиальной памятью.
Теорема доказана.
- Основные понятия. Справочный материал
- Основные понятия
- 1.2. Справочный материал. Сравнение скорости роста основных функций
- 2 Новые быстрые версии старых алгоритмов
- 2.1. Сортировки массивов
- 2.1.1 Метод прямого выбора (SelectSort)
- 2.1.2 Быстрая сортировка методом двоичных вставок (MergeSort)
- 2.2. Преобразование Фурье (бпф)
- 2.2.1. Дискретное преобразование Фурье
- 2.2.2. Полубыстрое преобразование Фурье (ппф)
- 2.2.3. Быстрое преобразование Фурье (бпф)
- 2.3. Быстрая свертка
- 2.3.1. Понятие свертки
- 2.3.2. Обычный и быстрый алгоритм свертки
- 2.4. Быстрое умножение
- 2.4.1. Быстрое умножение чисел
- 1 Суммирование
- 4 Произведения чисел вдвое меньшей
- 2.4.2. Быстрое умножение матриц
- 2.4.3. Очень быстрое умножение числе (алгоритм Шенхаге – Штрассена)
- 3. Задачи на графах
- 3.1. Справочный материал
- 3.2. Поиск минимального остова в связном неориентированном взвешенном графе
- 3.3. Нахождение кратчайшего расстояния
- 3.3.1. Алгоритм Форда – Беллмана
- 3.3.2. Алгоритм Дейкстры
- 3.4. Нахождение диаметра, радиуса и центра графа
- 3.5. Задача об изоморфизме графов
- 3.6. Задача коммивояжера. Её решение методом ветвей и границ.
- Задачи динамического программирования
- Задачи динамического программирования. Её решение методом динамического программирования.
- 4.2. Задача об оптимальном наборе самолетом скорости и высоты
- 4.3. Задача грабителя (задача о рюкзаке)
- 4.4. Задача о перемножении матриц
- 5 Классы p и np
- 5.1 Машина Тьюринга
- 5.2 Недетерменированные машины Тьюринга(ндмт)
- 5.3 Сводимость. Np-полнота.
- 5.4 Иерархия по сложности. Труднорешаемые задачи.
- Классы сложности.
- 6 Неразрешимые задачи
- 6.1 Новая модель алгоритма вычислений.
- 6.2 Нумерация программ
- 6.3 Неразрешимые проблемы
- 6.4 Теорема об ускорении
- Лабораторные работы
- Расчетно-графическое задание
- Ответы к домашним заданиям