Теорема о соотношении coNP и IP — различия между версиями
м |
|||
Строка 58: | Строка 58: | ||
Докажем теперь, что построенный таким образом <tex>\mathit{Verifier}</tex> — корректный. Для этого нужно доказать следующие утверждения: | Докажем теперь, что построенный таким образом <tex>\mathit{Verifier}</tex> — корректный. Для этого нужно доказать следующие утверждения: | ||
# Построенный <tex>\mathit{Verifier}</tex> - вероятностная машина Тьюринга, совершающая не более полинома от длины входа действий. | # Построенный <tex>\mathit{Verifier}</tex> - вероятностная машина Тьюринга, совершающая не более полинома от длины входа действий. | ||
− | # <tex>\langle \varphi, k \rangle \in \mathrm{\#SAT} \Rightarrow \exists \mathit{Prover} : | + | # <tex>\langle \varphi, k \rangle \in \mathrm{\#SAT} \Rightarrow \exists \mathit{Prover} : \Pr[\mathit{Verifier^{Prover}}(\langle \varphi, k \rangle)=1] \ge 2/3</tex>. |
− | # <tex>\langle \varphi, k \rangle \notin \mathrm{\#SAT} \Rightarrow \forall \mathit{Prover} : | + | # <tex>\langle \varphi, k \rangle \notin \mathrm{\#SAT} \Rightarrow \forall \mathit{Prover} :\Pr[\mathit{Verifier^{Prover}}(\langle \varphi, k \rangle)=1] \le 1/3</tex>. |
Докажем эти утверждения. | Докажем эти утверждения. | ||
#Первый факт следует из построения <tex>\mathit{Verifier}</tex> 'а. | #Первый факт следует из построения <tex>\mathit{Verifier}</tex> 'а. | ||
− | #По [[Арифметизация булевых формул с кванторами | лемме (2)]], если <tex>\sum\limits_{x_1 = 0}^1 \ldots \sum\limits_{x_m = 0}^1 A_\phi(x_1, \ldots, x_m)=k</tex>, то условия (*) выполнятются, следовательно существует такой <tex>\mathit{Prover}</tex>, что <tex> | + | #По [[Арифметизация булевых формул с кванторами | лемме (2)]], если <tex>\sum\limits_{x_1 = 0}^1 \ldots \sum\limits_{x_m = 0}^1 A_\phi(x_1, \ldots, x_m)=k</tex>, то условия (*) выполнятются, следовательно существует такой <tex>\mathit{Prover}</tex>, что <tex>\Pr[\mathit{Verifier^{Prover}}(\langle\phi,k\rangle) = 1] = 1</tex>, для любой пары <tex>\langle\phi,k\rangle \in \mathrm{\#SAT}</tex>. |
#Пусть количество наборов, удовлетворяющих <tex>\phi</tex>, не равно <tex>k</tex>. Для того, что бы <tex>\mathit{Verifier}</tex> вернул '''true''', <tex>\mathit{Prover}</tex> 'у необходимо посылать такие <tex>A_i</tex>, чтобы выполнялись все проверяемые условия. Посмотрим на то, что он может послать: | #Пусть количество наборов, удовлетворяющих <tex>\phi</tex>, не равно <tex>k</tex>. Для того, что бы <tex>\mathit{Verifier}</tex> вернул '''true''', <tex>\mathit{Prover}</tex> 'у необходимо посылать такие <tex>A_i</tex>, чтобы выполнялись все проверяемые условия. Посмотрим на то, что он может послать: | ||
:'''Шаг 0''' | :'''Шаг 0''' | ||
Строка 77: | Строка 77: | ||
: | : | ||
:Вычислим вероятность того, что хотя бы раз корень был угадан. | :Вычислим вероятность того, что хотя бы раз корень был угадан. | ||
− | :<tex> | + | :<tex>\Pr[\mathit{Verifier^{Prover}}(\langle \varphi, k \rangle)=1] = 1 - (1 - \frac d p)^m \le 1 - (1 - \frac d {3dm})^m \le \frac 1 3</tex>. |
:В последнем переходе мы воспользовались [http://ru.wikipedia.org/wiki/Ряд_Тейлора формулой Тейлора] для логарифма и экспоненты, а также тем, что <tex>m>0</tex>. | :В последнем переходе мы воспользовались [http://ru.wikipedia.org/wiki/Ряд_Тейлора формулой Тейлора] для логарифма и экспоненты, а также тем, что <tex>m>0</tex>. | ||
Версия 09:33, 1 февраля 2013
Определение: |
имеет ровно удовлетворяющих наборов . |
Лемма (1): |
. |
Доказательство: |
Следует из леммы (1). |
Лемма (2): |
. |
Доказательство: |
Для доказательства леммы построим программы определения класса . и изСперва арифметизуем формулу . Пусть полученный полином имеет степень .По лемме (1) вместо условия , можно проверять условие .Приступим к описанию 'а.Шаг 0 Если постулата Бертрана). Проверим на простоту и на принадлежность заданному промежутку. Как мы знаем, , следовательно на эти операции у 'а уйдёт полиномиальное от размера входа время. или , то может проверить указанное выше условие сам и вернуть соответствующий результат. Иначе запросим у 'а такое простое число , что (такое существует в силуДалее будем проводить все вычисления модулю .Попросим 'а прислать 'у формулу . Заметим, что размер формулы будет полином от длины входа 'а, так как — полином степени не выше, чем , от одной переменной, а значит его можно представить в виде .Проверим следующее утверждение: (*) (здесь и далее под словом «проверим» будем подразумевать следующее: если утверждение верно, продолжает свою работу, иначе он прекращает свою работу и возвращет false).Шаг i Пусть . Отправим программе .Попросим 'а прислать 'у формулу .Проверим следующее утверждение: (*).Шаг m Пусть . Отправим программе .Попросим программу прислать 'у значение .Проверим следующее утверждение: (*). А также сами подставим в и проверим правильность присланного значения .Возвращаем true. Докажем теперь, что построенный таким образом — корректный. Для этого нужно доказать следующие утверждения:
Докажем эти утверждения.
|
Теорема: |
. |
Доказательство: |
Сведём язык к языку следующим образом: , где — количество различных переменных в формуле .Очевидно, что По лемме (2) . . Тогда . Так как , то . |