Лекция 11: Методы разработки алгоритмов. Метод декомпозиции
1. Лекция 13:
Трудноразрешимые задачи
Курносов Михаил Георгиевич
к.т.н. доцент Кафедры вычислительных систем
Сибирский государственный университет
телекоммуникаций и информатики
http://www.mkurnosov.net
2. Полиномиальные алгоритмы
2
Полиномиальный алгоритм (polynomial algorithm)
– алгоритм, вычислительная сложность которого
принадлежит классу O(nk), где k – константа.
Алгоритмы с полиномиальной сложностью считаются
быстрыми и применимыми на практике.
Примеры
o Сортировка выбором – O(n2)
o Бинарный поиск – O(log2n)
o Алгоритм Крускала – O(|E|log|V|)
3. Легко разрешимые задачи
3
Легко разрешимая задача
(простая задача, tractable problem) – задача решаемая
алгоритмом с полиномиальной сложностью.
Примеры
o Задача сортировки
o Задача поиска в минимального элемента в массиве
o Поиск кратчайшего пути в взвешенном графе
o Построение остовного дерева минимальной
стоимости
5. Теория вычислительной сложности
5
Центральным объектом теории
являются задачи принятия решения
(decision porblem).
Задача принятия решения
(задача распознавания, decision
problem) – это задача, решение
которой ответ “да” или “нет”.
Алгоритм
Входные данные
(Input)
Да Нет
Теория вычислительной сложности
(computational complexity theory) – раздел
теоретической информатики, посвященный анализу
вычислительной сложности алгоритмов.
6. Задачи принятия решения
6
Примеры
o По заданному графу определить является
ли он связным.
o Определить является ли заданное число простым.
Многие задачи могут быть переформулированы
как задачи принятия решения.
Задачи принятия решения разбиты на классы
сложности.
7. Класс сложности P
7
Класс сложности P (polynomial) – это
множество задач принятия решения, решаемых
за полиномиальное время (для которых известны
алгоритмы, с полиномиальной трудоемкостью).
Представители класса P
o Задача сортировки
o Задача обхода графа в глубину
o Задача поиска минимального элемента в массиве
o Задача построения остовного дерева минимальной
стоимости
8. Классы сложности
8
Все ли задачи принятия решения являются
полиноминально разрешимыми?
Ответ: нет
Существуют задачи, которые вообще не могут быть
решены никаким алгоритмом – неразрешимые задачи.
Задача останова (halting problem, A. Turing, 1939).
Даны описание алгоритма и его начальные входные
данные, требуется определить, сможет ли выполнение
алгоритма с этими данными завершиться когда-либо.
Проблема останова не разрешима на машине Тюринга.
9. Трудноразрешимые задачи
9
Имеется большое количество задача, для которых
не найден полиномиальный алгоритм и не доказана
невозможность его существования.
Гэри М., Джонсон Д. Вычислительные машины
и труднорешаемые задачи. – М.: Мир, 1982. – 416 с.
10. Трудноразрешимые задачи
10
Гамильтонов цикл (hamiltonian cycle problem, HCP).
Определить, имеется ли в заданном графе гамильтонов цикл –
цикл включающий в себя каждую вершину ровно один раз.
12. Трудноразрешимые задачи
12
Задача упаковки корзин (bin packing problem, BPP).
Даны n предметов и их размеры – рациональные числа, не
превышающие 1. Требуется их разместить в наименьшее
количество корзин размером 1.
13. Класс сложности NP
13
Класс сложности NP (non-deterministic polynomial) –
это множество задач принятия решения, решаемых
недетерминированным полиномиальным алгоритмом.
Структура недетерминированных полиномиальных
алгоритмов:
o Шаг 1. Недетерминированным алгоритмом
с полиномиальной сложностью формируется
возможное решение S экземпляра I задачи
(для заданных входных данных).
o Шаг 2. Полиномиальным алгоритмом проверяется
является ли S корректным решением экземпляра I.
14. Класс сложности NP
14
Класс сложности NP (non-deterministic polynomial) –
это множество задач принятия решения, решаемых
недетерминированным полиномиальным алгоритмом.
Представители класса NP
o Задача поиска гамильтонова цикла
o Задача коммивояжёра
o Задача о рюкзаке
o Задача упаковки корзин
15. Класс сложности NP
15
Так как для любой задачи из P решение строится за
полиномиальное время, то
P ⊆⊆⊆⊆ NP
Пример недетерминированного полиномиального
алгоритма для решения задачи сортировки
o Шаг 1. Формируем случайную перестановку
элементов массива.
o Шаг 2. Проверяем является ли массив упорядоченным.
Шаги выполняются пока не будет получено корректное
решение.
16. Класс сложности NP
16
Недетерминированный
полиномиальный алгоритм для
решения задачи коммивояжёра
o Шаг 1. Формируем случайную
последовательность из n городов
(каждый раз будет получаться новая).
o Шаг 2. Вычисляем длину пути.
17. Класс сложности NP
17
Открытая проблема
P = NP
Вопрос поставлен независимо Л. Левиным (СССР, 1971)
и С. Куком (США, 1971).
Проблема равенства классов P и NP является одной из семи
задач тысячелетия, за решение которой Математический
институт Клэя назначил премию в миллион долларов.
Многие математики считают, что эти классы не равны.
Согласно опросу (2002 г., 100 учёных), 61 человек – “не
равны”, 9 – “равны”, 22 затруднились ответить и 8 считают,
что гипотеза не выводима из текущей системы аксиом и,
таким образом, не может быть доказана или опровергнута.
?
18. Сводимость задач
18
Задача принятия решения T1 называется
полиномиально приводимой (polynomially reducible) к
задаче принятия решения T2, если имеется функция t,
которая преобразует экземпляры T1 в экземпляры T2,
так, что
t отображает все экземпляры T1 с положительными
ответами в экземпляры T2 с положительными
ответами и все экземпляры T1 с отрицательными
ответами в экземпляры T2 с отрицательными ответами;
t выполняется (вычислима) алгоритмом
с полиномиальной трудоёмкостью.
19. Сводимость задач
19
Следствие. Если задача T1 полиномиально
приводима к задаче T2, которая является полиномиально
разрешимой, то задача T1 также может быть решена за
полиномиальное время.
20. NP-полные задачи
20
Задача T принятия решения является NP-полной
(NP-complete) если
o она принадлежит классу NP;
o любая задача в NP полиномиально приводима к
задаче T.
NP-полные задачи образуют класс NPC.
Примеры NP-полных задач
o Задача поиска гамильтонова цикла
o Задача коммивояжёра
21. NP-полные задачи
21
Доказательство NP-полноты задачи:
1. Показываем, что задача принадлежит классу NP
(проверка произвольного решения выполняется
за полиномиальное время)
2. Показываем, что какая либо NP-полная задача
приводится к данной.
23. Решение трудноразрешимых задач
23
Задача упаковки корзин (bin packing problem, BPP).
Даны n предметов и их размеры – рациональные числа, не
превышающие 1. Требуется их разместить в наименьшее
количество корзин размером 1.
Эвристический алгоритм FFD – First Fit Decreasing.