Теорема Шамира — различия между версиями
AndrewD (обсуждение | вклад) |
AndrewD (обсуждение | вклад) |
||
Строка 4: | Строка 4: | ||
|proof= | |proof= | ||
* <tex>\mathrm{IP} \subset \mathrm{PS}</tex> | * <tex>\mathrm{IP} \subset \mathrm{PS}</tex> | ||
− | Рассмотрим язык <tex>L \in \mathrm{IP}</tex> | + | Рассмотрим язык <tex>L \in \mathrm{IP}</tex>. Пусть <tex>V</tex> {{---}} ''Verifier'', соответствующий <tex>L</tex>, <tex>p(n)</tex> {{---}} время его работы, <tex>f(n)</tex> {{---}} количество его запросов к ''Prover'' 'у. Напишем программу, распознающую язык <tex>L</tex> на полиномиальной памяти. |
+ | <tex>U(x)</tex> | ||
+ | <tex>n \leftarrow |x|</tex> | ||
+ | '''for''' <tex>P \leftarrow Prover[f(n), p(n)]</tex> //(1) | ||
+ | <tex>count \leftarrow 0</tex> | ||
+ | '''for''' <tex>r \in \{0, 1\}^{p(n)}</tex> //(2) | ||
+ | '''if''' <tex>V(x, r)\bigm{|}_{P} = 1</tex> | ||
+ | <tex>count</tex>++ | ||
+ | '''if''' <tex dpi = "160">\frac{count}{2^{p(n)}} \ge \frac{2}{3}</tex> | ||
+ | '''return''' 1 | ||
+ | '''return''' 0 | ||
+ | |||
+ | В цикле <tex>(1)</tex> перебираются все ''Prover'' 'ы, которые отвечают на <tex>f(n)</tex> запросов, каждый ответ имеет размер <tex>p(n)</tex>. В цикле <tex>(2)</tex> перебираются все вероятностные ленты размера <tex>p(n)</tex>. Так как <tex>V</tex> {{---}} корректен, то если нашелся ''Prover'', при котором <tex>V</tex> допускает слово с вероятностью, большей <tex>\frac{2}{3}</tex>, то данное слово принадлежит <tex>L</tex>, иначе {{---}} не принадлежит. Очевидно, что данная программа требует полином дополнительной памяти. Значит <tex>L \in \mathrm{PS}</tex>, следовательно <tex>\mathrm{IP} \subset \mathrm{PS}</tex>. | ||
* <tex>\mathrm{PS} \subset \mathrm{IP}</tex> | * <tex>\mathrm{PS} \subset \mathrm{IP}</tex> | ||
}} | }} |
Версия 02:52, 4 июня 2012
Теорема (Шамир): |
Доказательство: |
Рассмотрим язык . Пусть — Verifier, соответствующий , — время его работы, — количество его запросов к Prover 'у. Напишем программу, распознающую язык на полиномиальной памяти.for //(1) for //(2) if ++ if return 1 return 0 В цикле перебираются все Prover 'ы, которые отвечают на запросов, каждый ответ имеет размер . В цикле перебираются все вероятностные ленты размера . Так как — корректен, то если нашелся Prover, при котором допускает слово с вероятностью, большей , то данное слово принадлежит , иначе — не принадлежит. Очевидно, что данная программа требует полином дополнительной памяти. Значит , следовательно . |
Содержание
Формулировка
Доказательство
IP ⊂ PS
Рассмотрим язык
. Чтобы детерминированная машина Тьюринга могла установить принадлежность слова языку , ей нужно перебрать все ответы и вероятностные ленты , просимулировав с этими данными и посчитав вероятность допуска. Ясно, что эти действия потребуют не более памяти, а значит .PS ⊂ IP
Докажем, что язык
. Этого достаточно, так как .Введем следующую арифметизацию булевых формул с кванторами:
- x
- , где — полином, получившийся в результате арифметизации
Результат этого выражения будет ненулевым в том и только в том случае, если исходная формула была истинна.
Рассмотрим пример:
Для записи этого числа нужно
бит. Если , это число невозможно передать за полиномиальное относительно длины исходной формулы время. Чтобы избежать таких больших чисел, приходится проводить все операции по какому-нибудь простому модулю .Начало интерактивного протокола:
- P выбирает простое и и посылает их V ( посылается вместе с его сертификатом простоты).
- V проверяет на простоту, а на неравенство нулю.
Хотелось бы воспользоваться протоколом из доказательства принадлежности #SAT к классу IP, проверяя в случае, когда связан квантором , и для квантора . К сожалению, сразу этот протокол применить нельзя, потому что произведение может увеличить степень полинома в два раза, а это может потребовать передачи по протоколу полиномов экспоненциальной длины, что не уложится по времени.
Поэтому потребуем, чтобы между появлением переменной и первым ее использованием было не более одного квантора #SAT для получившейся формулы, передаваться будут полиномы константной степени.
. Для этого заменим все суффиксы вида на . Это преобразование не изменит выполнимости формулы, количество ее переменных увеличится лишь в полином от их первоначального количества раз, а сама формула тоже увеличится не более, чем полиномиально. Теперь можно использовать протокол из