Скачать презентацию NP-полнота Теорема Кука Полиномиальная сводимость Пусть Скачать презентацию NP-полнота Теорема Кука Полиномиальная сводимость Пусть

2475b77c6d93ab3d5f0a4b40317d907f.ppt

  • Количество слайдов: 25

NP-полнота Теорема Кука NP-полнота Теорема Кука

Полиномиальная сводимость • Пусть Π 1=(X 1, Y 1) и Π 2=(X 2, Y Полиномиальная сводимость • Пусть Π 1=(X 1, Y 1) и Π 2=(X 2, Y 2) ― задачи распознавания. Будем говорить, что Π 1 полиномиально сводится (по Карпу) к Π 2 , если существует функция f : X 1 X 2 , вычислимая в полиномиальное время такая, что f(x) Y 2 для всех x Y 1, и f(x) X 2Y 2 для всех x X 1Y 1.

NP-полнота • Задача Π распознавания называется NP-полной, если все другие задачи из класса NP NP-полнота • Задача Π распознавания называется NP-полной, если все другие задачи из класса NP полиномиально сводятся к Π.

Набор значений истинности • Пусть U={u 1, u 2, …, uk}―множество булевых переменных. • Набор значений истинности • Пусть U={u 1, u 2, …, uk}―множество булевых переменных. • Под набором значений истинности на множестве U будем понимать функцию T: U {true, false}. • Расширим T к множеству , полагая если и наоборот. • Элементы множества L называются литералами.

Дизъюнкция • Дизъюнкцией над U называется множество литералов над U. • Она представляет дизъюнкцию Дизъюнкция • Дизъюнкцией над U называется множество литералов над U. • Она представляет дизъюнкцию этих литералов и называется выполненной при некотором наборе значений истинности тогда и только тогда, когда при рассматриваемом наборе значений истинности хотя бы один из ее членов принимает значение “true”. • Семейство (набор) Z дизъюнкций над U называется выполнимым в том и только том случае, если найдется некоторый набор значений истинности на множестве U, такой что выполнены все дизъюнкции из Z.

Задача «Выполнимость» • Условие. Задано множество переменных U и набор Z дизъюнкций. • Вопрос. Задача «Выполнимость» • Условие. Задано множество переменных U и набор Z дизъюнкций. • Вопрос. Является ли Z выполнимым?

Теорема Кука (1971) Теорема 2. 1 Задача «Выполнимость» является NP-полной. Теорема Кука (1971) Теорема 2. 1 Задача «Выполнимость» является NP-полной.

Доказательство • «Выполнимость» NP. Доказательство • «Выполнимость» NP.

Доказательство сводимости • Пусть Π=(X, Y) будет любая другая проблема в NP. • Требуется Доказательство сводимости • Пусть Π=(X, Y) будет любая другая проблема в NP. • Требуется доказать, что Π полиномиально сводится к «Выполнимости» . • По определению существует полином p и задача распознавания Π'=(X', Y') из P, такие что • X' = {x#c: x X, c {0, 1}└ p(size(x))┘} и • Y = {y X : c {0, 1}└ p(size(x))┘ : y#c Y'}. • Пусть Φ: {0, …, N}× A {⊔}→{-1, …, N}×A {⊔}×{-1, 0, 1} – полиномиальная машина Тьюринга для Π' с алфавитом A. • Пусть полином q : time(Φ, x#c) ≤ q(size(x#c)) для всех примеров x#c X'. • size(x#c) = size(x) + 1 + └p(size(x))┘

Основная идея • Сконструировать набор Z(x) дизъюнкций над множеством V(x) булевых переменных для каждого Основная идея • Сконструировать набор Z(x) дизъюнкций над множеством V(x) булевых переменных для каждого x X, так что Z(x) выполнимо тогда и только тогда, когда x Y.

Булевы переменные • Q: =q(size(x) + 1 + └p(size(x))┘) • V(x): – vijσ , Булевы переменные • Q: =q(size(x) + 1 + └p(size(x))┘) • V(x): – vijσ , 0 ≤ i ≤ Q, -Q ≤ j ≤ Q и σ A {⊔}= (после i шагов вычислений в j-й позиции строки записан символ σ); – wijn , 0 ≤ i ≤ Q, -Q ≤ j ≤ Q и − 1≤ n ≤ N; (после i шагов вычислений j-я позиция строки просматривается и оператор n выполняется).

Итоговая цель • Если (n(i), s(i), π(i)) i = 0, 1, 2, …тройка из Итоговая цель • Если (n(i), s(i), π(i)) i = 0, 1, 2, …тройка из вычисления Φ, то требуется определить набор дизъюнкций таким образом, что – vijσ = true sj(i) =σ; – wijn = true π(i) = j и n(i) = n; – набор Z(x) дизъюнкций выполним существует строка c, такая что output(Φ, x#c)=1.

Требуемые условия для выполнимого набора дизъюнкций • На каждом шаге вычислений каждая позиция содержит Требуемые условия для выполнимого набора дизъюнкций • На каждом шаге вычислений каждая позиция содержит единственный символ. • На каждом шаге вычислений ровно одна позиция просматривается, и один оператор выполняется. • Вычисление начинается со входа x#c для некоторого c {0, 1}└ p(size(x))┘. • Алгоритм работает корректно. ( (n, σ)=(m, τ, δ)) • Алгоритм останавливается, если n(i)=− 1. • Не просмотренные позиции не изменяются. • Алгоритм на выходе получает 1.

На каждом шаге вычислений каждая позиция содержит единственный символ. На каждом шаге вычислений каждая позиция содержит единственный символ.

На каждом шаге вычислений ровно одна позиция просматривается, и один оператор выполняется. На каждом шаге вычислений ровно одна позиция просматривается, и один оператор выполняется.

Вычисление начинается со входа x#c для некоторого c {0, 1}└ p(size(x))┘. Вычисление начинается со входа x#c для некоторого c {0, 1}└ p(size(x))┘.

Алгоритм работает корректно. ( (n, σ)=(m, τ, δ)). Алгоритм работает корректно. ( (n, σ)=(m, τ, δ)).

Алгоритм останавливается, если n(i) = − 1. Алгоритм останавливается, если n(i) = − 1.

Не просмотренные позиции не изменяются. Не просмотренные позиции не изменяются.

Алгоритм на выходе получает 1. {v. Q, 1, 1}, {v. Q, 2, ⊔} Алгоритм на выходе получает 1. {v. Q, 1, 1}, {v. Q, 2, ⊔}

Полиномиальность сведения • Длина записи Z(x) – Число литералов – запись индекса O(Q 3 Полиномиальность сведения • Длина записи Z(x) – Число литералов – запись индекса O(Q 3 log Q) O(Q 3) O(log Q) • Так как Q ― это полином от size(x), то существует полиномиальный алгоритм, который по данному x, вычисляет Z(x). • Осталось доказать, что Z(x) выполнима тогда и только тогда, когда x Y.

 • Z(x) выполнима. • набор значений истинности T, на котором выполнены все дизъюнкции. • Z(x) выполнима. • набор значений истинности T, на котором выполнены все дизъюнкции. • Пусть c {0, 1}└ p(size(x))┘, и cj = 1 для всех j c T(v 0, size(x)+1+j, 1) = true, и cj = 0 для всех j c T(v 0, size(x)+1+j, 1) = false. • По построению переменные отражают вычисление на входе x#c. • output( , x#c)=1. • ―алгоритм проверки сертификата. • x ― «да» -пример (x Y).

x Y и c ― любой сертификат для x. Пусть (n(i), s(i), π(i)) i x Y и c ― любой сертификат для x. Пусть (n(i), s(i), π(i)) i = 0, 1, …, m вычисление Φ входа x#c. T(vi, j, σ ) = true sj(i) = σ T(wi, j, n ) = true π(i) = j и n(i) = n. • T(vi, j, σ ) = T(vi-1, j, σ ) i = m + 1, …, Q. • T(wi, j, n ) = T(wi-1, j, n ) i = m + 1, …, Q. • T ― набор значений истинности, на котором выполнены все дизъюнкции из Z(x). • •

Задача « 3 -Выполнимость» • Условие. Задано множество переменных U и набор Z дизъюнкций, Задача « 3 -Выполнимость» • Условие. Задано множество переменных U и набор Z дизъюнкций, каждая из которых содержит ровно 3 литерала. • Вопрос. Является ли Z выполнимым?

3 -Выполнимость Теорема 2. 2 (Cook 1971) Задача « 3 -Выполнимость» является NP-полной. 3 -Выполнимость Теорема 2. 2 (Cook 1971) Задача « 3 -Выполнимость» является NP-полной.