Анализ комбинаторных
алгоритмов
Лекция №10
NP-полнота
Абстрактные задачи
 Абстрактная задача – произвольное
бинарное отношение Q между элементами
множества условий I и множества решений S.
 В теории вычислений рассматриваются задачи
разрешения, в которых требуется дать ответ
«да» или «нет» на некоторый вопрос.
 Большинство абстрактных задач (в том числе
задач оптимизации) можно свести к задачам
разрешения.
Абстрактные задачи
G<V,E>
u
v
Множество S для
задачи о нахождении
пути между двумя
вершинами в графе:
1. Граф G<V,E>
2. Вершина u
3. Вершина 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=NP
P
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) рублей.
Требуется найти маршрут наименьшей
стоимости.

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

  • 1.
  • 2.
    Абстрактные задачи  Абстрактнаязадача – произвольное бинарное отношение Q между элементами множества условий I и множества решений S.  В теории вычислений рассматриваются задачи разрешения, в которых требуется дать ответ «да» или «нет» на некоторый вопрос.  Большинство абстрактных задач (в том числе задач оптимизации) можно свести к задачам разрешения.
  • 3.
    Абстрактные задачи G<V,E> u v Множество Sдля задачи о нахождении пути между двумя вершинами в графе: 1. Граф G<V,E> 2. Вершина u 3. Вершина v
  • 4.
    Абстрактные задачи  Представлениемэлементов некоторого множества S называется отображение e из S во множество битовых строк.  Зафиксировав представление данных, мы преобразуем абстрактную задачу в строковую, для которой входным данным является битовая строка, представляющая исходные данные абстрактной задачи.
  • 5.
    Абстрактные задачи  Любаяабстрактная задача может быть отнесена к одному из сложностных классов, в зависимости от того какие алгоритмы существуют для ее решения.  Сложностным классом P называется множество всех строковых задач разрешения, которые могут быть решены за полиномиальное время.
  • 6.
    Полиномиальное время  Задачи,решаемые за полиномиальное время (a1*nk + a2*nk-1 + a3*nk-2 +..+an-1*n+an, где k, a1..an-константы, а n – размер входа алгоритма) принято считать практически разрешимыми по следующим трем причинам:  Полиномиальные алгоритмы работают довольно быстро.  Время работы полиномиальных алгоритмов не зависит от модели вычислений (так не имеет значения последовательные или параллельные вычисления используются)  Класс полиномиальных обладает свойствами замкнутости (композиция полиномиальных задач – полиномиальная задача)
  • 7.
    Гамильтонов цикл  Гамильтоновымциклом в неориентированном графе G называется простой цикл, который проходит через все вершины графа.  Задача о гамильтоновом цикле состоит в выяснении, имеет ли данный граф гамильтонов цикл.
  • 8.
  • 9.
    Абстрактные задачи  Сложностнымклассом NP называется множество строковых задач разрешения, для которых существуют проверяющие алгоритмы, работающие за полиномиальное время.  Всякая задача из множества P принадлежит множеству NP.  Истинность обратного утверждения (если задача находится в NP, то в P она тоже входит) не установлена.
  • 10.
    Абстрактные задачи  Проблемаэквивалентности сложностных классов P=NP является одной из самых серьезных нерешенных проблем теории вычислений.  Открытым остается вопрос о замкнутости класса NP.
  • 11.
  • 12.
    NP-полнота  Одним изглавных аргументов в пользу утверждения о неравенстве классов P и NP, является наличие так называемых NP-полных задач (NPC).  Говоря неформально, NP-полные задачи – «самые трудные» в классе NP.  «Трудность» задач можно сравнивать сводя одну задачу к другой.
  • 13.
    NP-полнота  Задача Qсводится к задаче Q`, если задачу Q можно решить для любого входа, считая известным решение задачи Q` для какого-то другого входа.  Если задача Q сводится к задаче Q`, то любой алгоритм решающий Q` можно использовать для решения Q, т.е. задача Q «не труднее» Q`.  Алгоритм приводящий входы задачи Q к соответствующим входам задачи Q` называется сводящим алгоритмом.  Если сводящий алгоритм полиноминален задача называется сводящейся за полиномиальное время.
  • 14.
  • 15.
    NP-полнота  Задача называетсяNP-полной, если:  Она принадлежит к сложностному классу NP  Она не менее трудна (не сводится за полиномиальное время к не NP-полной задаче), чем любая другая задача из класса NP.  Если задача удовлетворяет второму условию, но не обязательно условию №1, то такая задача называется NP-трудной.
  • 16.
    NP-полнота Теорема. Если некоторая NP-полнаязадача разрешима за полиномиальное время, то P=NP (в классе задач проверяемых за полиномиальное время нет задач неразрешимых за полиномиальное время). Следствие. Если в классе NP существует задача не разрешимая за полиномиальное время, все NP- полные задачи таковы.
  • 17.
    NP-полные задачи Задача овыполнимости логических формул. Формулы могут содержать булевы (логические) переменные и операции конъюнкции (И), дизъюнкции (ИЛИ), отрицания (НЕ), импликации (следования), эквивалентности. Выполняющим набором значений переменных в формуле называется такой набор, при котором формула дает истинное значение. Формула выполнима, если существует хотя бы один выполнимый набор значений переменных. Задача состоит в ответе на вопрос выполнима ли данная логическая формула.
  • 18.
    NP-полные задачи Задача оклике. Кликой графа называется подмножество его вершин, каждые две из которых соединены ребром графа. Размером клики называется количество содержащихся в ней вершин. Необходимо найти максимальную клику графа, т.е. (преобразование в задачу разрешения) ответить на вопрос есть ли клика некоторого размера k.
  • 19.
    NP-полные задачи Задача овершинном покрытии. Вершинное покрытие – такое множество вершин графа, что хотя бы один из концов любого ребра соединен с вершиной входящей в это множество. Размер вершинного покрытия – количество входящих в него вершин. Задача требует нахождения минимально возможного вершинного покрытия графа, т.е. (преобразование в задачу разрешения) ответить на вопрос есть ли вершинное покрытие некоторого размера k.
  • 20.
    NP-полные задачи Задача осуммах подмножеств. Пусть дано некоторое множество S, состоящее из целых чисел, и целое число t. Требуется выяснить существует ли в S подмножество сумма элементов которого равна t. Например: S{1,4,16,64,256,1040,1093,1284,1344} t = 3754; Ответ: {1,16,64,256,1040,1093,1284}
  • 21.
    NP-полные задачи Задача коммивояжера. Коммивояжерхочет объехать все города, побывав в каждом только 1 раз, и вернуться в город, из которого начал путешествие. Известно, что перелет из города i в город j стоит c(i,j) рублей. Требуется найти маршрут наименьшей стоимости.