23
Лекция 13: Трудноразрешимые задачи Курносов Михаил Георгиевич к.т .н. доцент Кафедры вычислительных систем Сибирский государственный университет телекоммуникаций и информатики http://www.mkurnosov.net

Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Embed Size (px)

Citation preview

Page 1: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Лекция 13:

Трудноразрешимые задачи

Курносов Михаил Георгиевич

к.т.н. доцент Кафедры вычислительных систем

Сибирский государственный университет

телекоммуникаций и информатики

http://www.mkurnosov.net

Page 2: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Полиномиальные алгоритмы

2

� Полиномиальный алгоритм (polynomial algorithm)

– алгоритм, вычислительная сложность которого

принадлежит классу O(nk), где k – константа.

� Алгоритмы с полиномиальной сложностью считаются

быстрыми и применимыми на практике.

� Примеры

o Сортировка выбором – O(n2)

o Бинарный поиск – O(log2n)

o Алгоритм Крускала – O(|E|log|V|)

Page 3: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Легко разрешимые задачи

3

� Легко разрешимая задача

(простая задача, tractable problem) – задача решаемая

алгоритмом с полиномиальной сложностью.

� Примеры

o Задача сортировки

o Задача поиска в минимального элемента в массиве

o Поиск кратчайшего пути в взвешенном графе

o Построение остовного дерева минимальной

стоимости

Page 4: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Трудноразрешимые задачи

4

� Трудноразрешимая задача

(intractable problem) – задача, которая не может

быть решена за полиномиальное время

(не известно полиномиального алгоритма).

Page 5: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Теория вычислительной сложности

5

� Центральным объектом теории

являются задачи принятия решения

(decision porblem).

� Задача принятия решения

(задача распознавания, decision

problem) – это задача, решение

которой ответ “да” или “нет”.

Алгоритм

Входные данные

(Input)

Да Нет

� Теория вычислительной сложности

(computational complexity theory) – раздел

теоретической информатики, посвященный анализу

вычислительной сложности алгоритмов.

Page 6: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Задачи принятия решения

6

� Примеры

o По заданному графу определить является

ли он связным.

o Определить является ли заданное число простым.

� Многие задачи могут быть переформулированы

как задачи принятия решения.

� Задачи принятия решения разбиты на классы

сложности.

Page 7: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Класс сложности P

7

� Класс сложности P (polynomial) – это

множество задач принятия решения, решаемых

за полиномиальное время (для которых известны

алгоритмы, с полиномиальной трудоемкостью).

� Представители класса P

o Задача сортировки

o Задача обхода графа в глубину

o Задача поиска минимального элемента в массиве

o Задача построения остовного дерева минимальной

стоимости

Page 8: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Классы сложности

8

� Все ли задачи принятия решения являются

полиноминально разрешимыми?

� Ответ: нет

� Существуют задачи, которые вообще не могут быть

решены никаким алгоритмом – неразрешимые задачи.

� Задача останова (halting problem, A. Turing, 1939).

Даны описание алгоритма и его начальные входные

данные, требуется определить, сможет ли выполнение

алгоритма с этими данными завершиться когда-либо.

� Проблема останова не разрешима на машине Тюринга.

Page 9: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Трудноразрешимые задачи

9

� Имеется большое количество задача, для которых

не найден полиномиальный алгоритм и не доказана

невозможность его существования.

� Гэри М., Джонсон Д. Вычислительные машины

и труднорешаемые задачи. – М.: Мир, 1982. – 416 с.

Page 10: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Трудноразрешимые задачи

10

Гамильтонов цикл (hamiltonian cycle problem, HCP).

Определить, имеется ли в заданном графе гамильтонов цикл –

цикл включающий в себя каждую вершину ровно один раз.

Page 11: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Трудноразрешимые задачи

11

Задача коммивояжёра

(travelling salesman problem, TSP).

Найти кратчайший путь (цикл)

между заданными n городами.

Через каждый город путь должен

проходить один раз.

Page 12: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Трудноразрешимые задачи

12

Задача упаковки корзин (bin packing problem, BPP).

Даны n предметов и их размеры – рациональные числа, не

превышающие 1. Требуется их разместить в наименьшее

количество корзин размером 1.

Page 13: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Класс сложности NP

13

� Класс сложности NP (non-deterministic polynomial) –

это множество задач принятия решения, решаемых

недетерминированным полиномиальным алгоритмом.

� Структура недетерминированных полиномиальных

алгоритмов:

o Шаг 1. Недетерминированным алгоритмом

с полиномиальной сложностью формируется

возможное решение S экземпляра I задачи

(для заданных входных данных).

o Шаг 2. Полиномиальным алгоритмом проверяется

является ли S корректным решением экземпляра I.

Page 14: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Класс сложности NP

14

� Класс сложности NP (non-deterministic polynomial) –

это множество задач принятия решения, решаемых

недетерминированным полиномиальным алгоритмом.

� Представители класса NP

o Задача поиска гамильтонова цикла

o Задача коммивояжёра

o Задача о рюкзаке

o Задача упаковки корзин

Page 15: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Класс сложности NP

15

� Так как для любой задачи из P решение строится за

полиномиальное время, то

P ⊆⊆⊆⊆ NP

� Пример недетерминированного полиномиального

алгоритма для решения задачи сортировки

o Шаг 1. Формируем случайную перестановку

элементов массива.

o Шаг 2. Проверяем является ли массив упорядоченным.

Шаги выполняются пока не будет получено корректное

решение.

Page 16: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Класс сложности NP

16

Недетерминированный

полиномиальный алгоритм для

решения задачи коммивояжёра

o Шаг 1. Формируем случайную

последовательность из n городов

(каждый раз будет получаться новая).

o Шаг 2. Вычисляем длину пути.

Page 17: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Класс сложности NP

17

� Открытая проблема

P = NP

� Вопрос поставлен независимо Л. Левиным (СССР, 1971)

и С. Куком (США, 1971).

� Проблема равенства классов P и NP является одной из семи

задач тысячелетия, за решение которой Математический

институт Клэя назначил премию в миллион долларов.

� Многие математики считают, что эти классы не равны.

Согласно опросу (2002 г., 100 учёных), 61 человек – “не

равны”, 9 – “равны”, 22 затруднились ответить и 8 считают,

что гипотеза не выводима из текущей системы аксиом и,

таким образом, не может быть доказана или опровергнута.

?

Page 18: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Сводимость задач

18

Задача принятия решения T1 называется

полиномиально приводимой (polynomially reducible) к

задаче принятия решения T2, если имеется функция t,

которая преобразует экземпляры T1 в экземпляры T2,

так, что

� t отображает все экземпляры T1 с положительными

ответами в экземпляры T2 с положительными

ответами и все экземпляры T1 с отрицательными

ответами в экземпляры T2 с отрицательными ответами;

� t выполняется (вычислима) алгоритмом

с полиномиальной трудоёмкостью.

Page 19: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Сводимость задач

19

Следствие. Если задача T1 полиномиально

приводима к задаче T2, которая является полиномиально

разрешимой, то задача T1 также может быть решена за

полиномиальное время.

Page 20: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

NP-полные задачи

20

� Задача T принятия решения является NP-полной

(NP-complete) если

o она принадлежит классу NP;

o любая задача в NP полиномиально приводима к

задаче T.

� NP-полные задачи образуют класс NPC.

� Примеры NP-полных задач

o Задача поиска гамильтонова цикла

o Задача коммивояжёра

Page 21: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

NP-полные задачи

21

� Доказательство NP-полноты задачи:

1. Показываем, что задача принадлежит классу NP

(проверка произвольного решения выполняется

за полиномиальное время)

2. Показываем, что какая либо NP-полная задача

приводится к данной.

Page 22: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Complexity Zoo

22

Page 23: Лекция 11: Методы разработки алгоритмов. Метод декомпозиции

Решение трудноразрешимых задач

23

Задача упаковки корзин (bin packing problem, BPP).

Даны n предметов и их размеры – рациональные числа, не

превышающие 1. Требуется их разместить в наименьшее

количество корзин размером 1.

Эвристический алгоритм FFD – First Fit Decreasing.