083f009a511b535aa781824a148375c4.ppt
- Количество слайдов: 25
NP-полнота Машина Тьюринга
Алфавитом называется конечное множество, состоящее не менее чем из двух элементов и не содержащее специального символа ⊔.
Строки n • Обозначим через A множество всех последовательностей (строк) длины n, символами которых являются элементы из алфавита A. • Пусть A 0 содержит ровно один элемент пустую строку.
Язык • Языком над алфавитом A называется произвольное подмножество из A*. • Элементы языка часто называются словами. n • Если x A , то будем писать size(x) = n.
Машина Тьюринга (неформально) • Машина Тьюринга состоит из N +1 оператора, занумерованных от 0, …, N. • Сначала выполняется оператор 0, и текущей позицией строки является позиция 1. • Каждый оператор работает по следующей схеме: считывает элемент в текущей позиции, и в зависимости от его значения переписывает элемент в текущей позиции на некоторый элемент из A {⊔}, и, возможно, переходит на одну позицию влево или вправо, и переходит на оператор, который будет выполняться следующим.
Вход и оператор остановки • На вход машине Тьюринга подается некоторая строка x A* с символами из некоторого фиксированного алфавита A. • Можно считать, что слово записывается на бесконечной с двух сторон ленте в ячейках с номерами 1, 2, …, |x| по одному символу в ячейке. Все другие ячейки содержат пустой символ ⊔. • Существует специальный оператор – 1, который означает конец вычислений.
Машина Тьюринга (формально) • Машина Тьюринга задается функцией Φ: {0, …, N }× A {⊔}→{-1, …, N }×A {⊔}×{-1, 0, 1} для некоторой N Z+. • Вычислением Φ входа x, x A* называется конечная или бесконечная последовательность троек (n(i), s(i), π(i)) с n(i) {-1, …, N}, s(i) (A {⊔})Z и π(i) Z (i = 0, 1, 2, …), которые определяются рекурсивно. • n(i) означает текущий оператор. • s(i) означает текущую строку. • π(i) означает текущую позицию.
Машина Тьюринга (начало вычисления) • n(0) : = 0. • sj(0) : = xj для 1≤ j ≤ size(x), и sj(0) : = 0 для всех j ≤ 0 и j > size(x). • π(0) : = 1.
Машина Тьюринга (рекурсия) • Пусть (n(i), s(i), π(i)) уже определено. • Если n(i) ≠ -1, то пусть • n(i+1) : = m. • • π(i+1) : = π(i) + δ.
Машина Тьюринга (конец вычисления) • Если n(i)= – 1, то вычисление заканчивается • time(Φ, x) = i • output(Φ, x) {0, 1}k, где k =min{j ℕ: sj(i)= ⊔}-1 • (Φ, x)j= sj(i) для j =1, …k. • Если последовательность бесконечна, то • time(Φ, x) = ∞ • output(Φ, x) не определен.
Полиномиально вычислимая Машина Тьюринга • Пусть A – алфавит, S, T A* два языка, и функция f : S T. Пусть Φ – машина Тьюринга с алфавитом A. Φ вычисляет f , если time(Φ, s) <∞ и (s , output(Φ, s)) = f(s) для каждого s S. • Если существует полином p: time(Φ, s) ≤ p(size(s)) для всех s S , то Φ называется полиномиально вычислимой машиной Тьюринга. • T={0, 1} • Будем говорить, что Φ решает язык L: ={s S : f(s) =1}. • Если существует полиномиально вычислимая машина Тьюринга, решающая язык L, то говорят, что L разрешим в полиномиальное время.
Тезис Черча • Любая интуитивно вычислимая функция может быть вычислена на некоторой машине Тьюринга.
Задачи распознавания (неформально) • Любой язык L {0, 1}* можно интерпретировать как задачу распознавания: задана 0 -1 -строка, проверить принадлежит ли она L. • Однако, нас более интересуют содержательные задачи (задача Гамильтонов цикл: задан неориентированный граф, проверить есть ли в нем Гамильтонов цикл. ) • Граф Лист смежности (матрица смежностей) бинарная строка длины (O(n+m log n)). • Для большинства интересных задач распознавания их примеры можно представить как подмножества бинарных строк. • Дополнительное требование: можно в полиномиальное время проверить является ли произвольная строка примером рассматриваемой задачи распознавания или нет.
Задачи распознавания (формально) • Задачей распознавания называется пара Π=(X, Y), где X – язык разрешимый в полиномиальное время и Y X. • Элементы X называются примерами из Π. • Элементы Y называются «да» -примерами. • Элементы X Y называются «нет» -примерами. • Алгоритм для задачи распознавания (X, Y) – это алгоритм вычисляющий функцию f : X {0, 1}, такой что f(x)=1, если x Y, и f(x)=0, если x X Y.
Класс P • Класс всех задач распознавания, для которых существует полиномиальный алгоритм, обозначается P. • Другими словами, (X, Y) P, с Y X {0, 1}*, когда оба языка X и Y разрешимы в полиномиальное время. • Доказательством того, что задача лежит в P, обычно является полиномиальный алгоритм. • Из тезиса Черча следует, что существует полиномиально вычислимая машина Тьюринга для каждой проблемы в P.
Класс NP (неформально) • К сожалению, принадлежность к классу P многих интересных задач (Гамильтонов цикл, ЦЛП, Вершинное покрытие, …) неизвестна. • Вместо требования существования для задачи полиномиального алгоритма потребуем, что для каждого «да» -примера существует сертификат, который может быть проверен в полиномиальное время. • Заметим, что мы не требуем сертификата для «нет» -примера.
Класс 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'}. x#c обозначает соединение в общую строку строки x, символа # и строки c. Строка c: y#c Y' называется сертификатом для y. Алгоритм для Π' называется алгоритмом проверки сертификата.
P NP Утверждение 1. 1 P NP. • Выберем в качестве сертификата пустую строку для всех «да» -примеров (то есть p = 0). • Алгоритм для Π' удаляет последний символ входа «x#» и затем применяет алгоритм для Π.
Пример задачи из NP Утверждение 1. 2 Задача Гамильтонов цикл принадлежит NP. • Выберем в качестве сертификата любой Гамильтонов цикл. • Легко проверить за полиномиальное время, является ли данный набор ребер Гамильтоновым циклом.
Рандомизированный алгоритм • Рандомизированный алгоритм для вычисления функции f : S T задается алгоритмом, вычисляющим функцию g: {s#r: s S, r {0, 1}k(s)} T. • Для каждого примера s S алгоритм использует k(s) случайных бит. • Время работы алгоритма оценивается только от size(s). • Рандомизированный алгоритм, работающий полиномиальное время может использовать только полиномиальное число случайных бит.
Лас-Вегас алгоритм • Лас-Вегас алгоритмом называется рандомизированный алгоритм такой, что g(s#r) = f(s) для всех s S и всех r {0, 1}k(s). • Лас-Вегас алгоритм всегда вычисляет правильное решение, но время его работы для одного и того же примера может различаться.
Монте Карло алгоритм • Монте Карло алгоритмом называется рандомизированный алгоритм такой, что существует ненулевая вероятность p получения правильного ответа, то есть
Недетерминированный алгоритм • • Если T = {0, 1}, и для каждого s S с f(s) = 0 алгоритм вычисляет g(s#r) = 0 для всех r {0, 1}k(s), то такой алгоритм называется рандомизированный алгоритм с односторонней ошибкой. Если, в дополнение, для каждого s S с f(s) = 1 существует по крайней мере один r {0, 1}k(s) с g(s#r) = 1, то такой алгоритм называется недетерминированным алгоритмом.
Класс NP Утверждение 1. 3 Задача распознавания принадлежит 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'} • • Полиномиальный алгоритм для Π' является полиномиальным недетерминированным алгоритмом для Π. Пусть полиномиальный недетерминированный алгоритм для Π использует k(x) бит для примера x. Тогда существует полином p, такой что k(x) ≤ p(size(x)) для всех x. Определим X' = {x#c: x X, c {0, 1}└ p(size(x))┘} и Y' = {x#c X' : g(x#r)=1, r состоит из k(x) первых бит с}. Тогда (X', Y' ) P и Y = {y X: c {0, 1}└ p(size(x))┘ y#c Y' }.


