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

Post on 11-Feb-2017

63 views 2 download

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

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

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

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

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

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

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

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

G<V,E> u

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

P=NPP

NP

I II

NP-полнота

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

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

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

NP-полнота

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

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

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

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

NP-полнота

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

Q

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

NP-полнота

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

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

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

NP-полнота

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

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

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

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

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

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

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

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

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

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

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

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

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