Лекция 10 np-полнота

21
Анализ комбинаторных алгоритмов Лекция №10 NP-полнота

Upload: simplepeople

Post on 11-Feb-2017

63 views

Category:

Data & Analytics


2 download

TRANSCRIPT

Page 1: Лекция 10 NP-полнота

Анализ комбинаторных алгоритмов

Лекция №10NP-полнота

Page 2: Лекция 10 NP-полнота

Абстрактные задачи

Абстрактная задача – произвольное бинарное отношение Q между элементами множества условий I и множества решений S.

В теории вычислений рассматриваются задачи разрешения, в которых требуется дать ответ «да» или «нет» на некоторый вопрос.

Большинство абстрактных задач (в том числе задач оптимизации) можно свести к задачам разрешения.

Page 3: Лекция 10 NP-полнота

Абстрактные задачи

G<V,E> u

vМножество S для задачи о нахождении пути между двумя вершинами в графе:1. Граф G<V,E>2. Вершина u3. Вершина v

Page 4: Лекция 10 NP-полнота

Абстрактные задачи

Представлением элементов некоторого множества S называется отображение e из S во множество битовых строк.

Зафиксировав представление данных, мы преобразуем абстрактную задачу в строковую, для которой входным данным является битовая строка, представляющая исходные данные абстрактной задачи.

Page 5: Лекция 10 NP-полнота

Абстрактные задачи

Любая абстрактная задача может быть отнесена к одному из сложностных классов, в зависимости от того какие алгоритмы существуют для ее решения.

Сложностным классом P называется множество всех строковых задач разрешения, которые могут быть решены за полиномиальное время.

Page 6: Лекция 10 NP-полнота

Полиномиальное время

Задачи, решаемые за полиномиальное время (a1*nk+ a2*nk-1 + a3*nk-2 +..+an-1*n+an, где k, a1..an-константы, а n – размер входа алгоритма) принято считать практически разрешимыми по следующим трем причинам: Полиномиальные алгоритмы работают довольно быстро. Время работы полиномиальных алгоритмов не зависит от

модели вычислений (так не имеет значения последовательные или параллельные вычисления используются)

Класс полиномиальных обладает свойствами замкнутости (композиция полиномиальных задач – полиномиальная задача)

Page 7: Лекция 10 NP-полнота

Гамильтонов цикл

Гамильтоновым циклом в неориентированном графе G называется простой цикл, который проходит через все вершины графа.

Задача о гамильтоновом цикле состоит в выяснении, имеет ли данный граф гамильтонов цикл.

Page 8: Лекция 10 NP-полнота

Гамильтонов цикл

Page 9: Лекция 10 NP-полнота

Абстрактные задачи

Сложностным классом NP называется множество строковых задач разрешения, для которых существуют проверяющие алгоритмы, работающие за полиномиальное время.

Всякая задача из множества P принадлежит множеству NP.

Истинность обратного утверждения (если задача находится в NP, то в P она тоже входит) не установлена.

Page 10: Лекция 10 NP-полнота

Абстрактные задачи

Проблема эквивалентности сложностных классов P=NP является одной из самых серьезных нерешенных проблем теории вычислений.

Открытым остается вопрос о замкнутости класса NP.

Page 11: Лекция 10 NP-полнота

Абстрактные задачи

P=NPP

NP

I II

Page 12: Лекция 10 NP-полнота

NP-полнота

Одним из главных аргументов в пользу утверждения о неравенстве классов P и NP, является наличие так называемых NP-полных задач (NPC).

Говоря неформально, NP-полные задачи – «самые трудные» в классе NP.

«Трудность» задач можно сравнивать сводя одну задачу к другой.

Page 13: Лекция 10 NP-полнота

NP-полнота

Задача Q сводится к задаче Q`, если задачу Q можно решить для любого входа, считая известным решение задачи Q` для какого-то другого входа.

Если задача Q сводится к задаче Q`, то любой алгоритм решающий Q` можно использовать для решения Q, т.е. задача Q «не труднее» Q`.

Алгоритм приводящий входы задачи Q к соответствующим входам задачи Q` называется сводящим алгоритмом.

Если сводящий алгоритм полиноминален задача называется сводящейся за полиномиальное время.

Page 14: Лекция 10 NP-полнота

NP-полнота

Сводящий алгоритм Q`

Q

Сведение задачи (разрешения) Q к Q`

Page 15: Лекция 10 NP-полнота

NP-полнота

Задача называется NP-полной, если: Она принадлежит к сложностному классу NP Она не менее трудна (не сводится за

полиномиальное время к не NP-полной задаче), чем любая другая задача из класса NP.

Если задача удовлетворяет второму условию, но не обязательно условию №1, то такая задача называется NP-трудной.

Page 16: Лекция 10 NP-полнота

NP-полнота

Теорема.Если некоторая NP-полная задача разрешима за полиномиальное время, то P=NP (в классе задач проверяемых за полиномиальное время нет задач неразрешимых за полиномиальное время).

Следствие.Если в классе NP существует задача не разрешимая за полиномиальное время, все NP-полные задачи таковы.

Page 17: Лекция 10 NP-полнота

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

Задача о выполнимости логических формул.Формулы могут содержать булевы (логические) переменные и операции конъюнкции (И), дизъюнкции (ИЛИ), отрицания (НЕ), импликации (следования), эквивалентности.Выполняющим набором значений переменных в формуле называется такой набор, при котором формула дает истинное значение.Формула выполнима, если существует хотя бы один выполнимый набор значений переменных.Задача состоит в ответе на вопрос выполнима ли данная логическая формула.

Page 18: Лекция 10 NP-полнота

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

Задача о клике.Кликой графа называется подмножество его вершин, каждые две из которых соединены ребром графа.Размером клики называется количество содержащихся в ней вершин.Необходимо найти максимальную клику графа, т.е. (преобразование в задачу разрешения) ответить на вопрос есть ли клика некоторого размера k.

Page 19: Лекция 10 NP-полнота

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

Задача о вершинном покрытии.Вершинное покрытие – такое множество вершин графа, что хотя бы один из концов любого ребра соединен с вершиной входящей в это множество.Размер вершинного покрытия – количество входящих в него вершин.Задача требует нахождения минимально возможного вершинного покрытия графа, т.е. (преобразование в задачу разрешения) ответить на вопрос есть ли вершинное покрытие некоторого размера k.

Page 20: Лекция 10 NP-полнота

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

Задача о суммах подмножеств.Пусть дано некоторое множество S, состоящее из целых чисел, и целое число t. Требуется выяснить существует ли в S подмножество сумма элементов которого равна t.

Например:S{1,4,16,64,256,1040,1093,1284,1344} t = 3754;Ответ: {1,16,64,256,1040,1093,1284}

Page 21: Лекция 10 NP-полнота

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

Задача коммивояжера.Коммивояжер хочет объехать все города, побывав в каждом только 1 раз, и вернуться в город, из которого начал путешествие. Известно, что перелет из города i в город j стоит c(i,j) рублей.Требуется найти маршрут наименьшей стоимости.