<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=89.107.116.92&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=89.107.116.92&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/89.107.116.92"/>
		<updated>2026-05-19T16:38:16Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%BE_%D1%81%D0%BE%D0%BE%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B8_coNP_%D0%B8_IP&amp;diff=30500</id>
		<title>Теорема о соотношении coNP и IP</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%BE_%D1%81%D0%BE%D0%BE%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B8_coNP_%D0%B8_IP&amp;diff=30500"/>
				<updated>2013-02-01T06:33:44Z</updated>
		
		<summary type="html">&lt;p&gt;89.107.116.92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{\#SAT}=\{\langle \varphi, k \rangle \bigm| \varphi&amp;lt;/tex&amp;gt; имеет ровно &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; удовлетворяющих наборов &amp;lt;tex&amp;gt;\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|about=1&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt;\sum\limits_{x_1 = 0}^1 \ldots \sum\limits_{x_m = 0}^1  A_\phi(x_1, \ldots, x_m)=k \Leftrightarrow \langle\phi,k\rangle \in \mathrm{\#SAT}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=Следует из [[Арифметизация булевых формул с кванторами | леммы (1)]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|about=2&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt;\mathrm{\#SAT} \in \mathrm{IP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Для доказательства леммы построим программы &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt; из [[Интерактивные протоколы. Класс IP. Класс AM#Класс IP|определения]] класса &amp;lt;tex&amp;gt;\mathrm{IP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Сперва арифметизуем формулу &amp;lt;tex&amp;gt;\phi&amp;lt;/tex&amp;gt;. Пусть полученный полином &amp;lt;tex&amp;gt;A(x_1, x_2, ..., x_m)&amp;lt;/tex&amp;gt; имеет степень &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
По лемме (1) вместо условия &amp;lt;tex&amp;gt;\langle \phi, k \rangle \in \mathrm{\#SAT}&amp;lt;/tex&amp;gt;, можно проверять условие &amp;lt;tex&amp;gt;\sum\limits_{x_1 = 0}^1 \ldots \sum\limits_{x_m = 0}^1  A_\phi(x_1, \ldots, x_m)=k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Приступим к описанию &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt;'а.&lt;br /&gt;
&lt;br /&gt;
'''Шаг 0''' &lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;tex&amp;gt;d=0&amp;lt;/tex&amp;gt; или &amp;lt;tex&amp;gt;m=0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt; может проверить указанное выше условие сам и вернуть соответствующий результат.&lt;br /&gt;
Иначе запросим у &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt;'а такое простое число &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;3dm \le p \le 6dm&amp;lt;/tex&amp;gt; (такое &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; существует в силу [http://ru.wikipedia.org/wiki/Постулат_Бертрана постулата Бертрана]). &lt;br /&gt;
Проверим &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; на простоту и на принадлежность заданному промежутку. Как мы [[Класс P#Примеры задач и языков из P|знаем]], &amp;lt;tex&amp;gt;\mathrm{Primes} \in \mathrm{P}&amp;lt;/tex&amp;gt;, следовательно на эти операции у &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt;'а уйдёт полиномиальное от размера входа время.&lt;br /&gt;
&lt;br /&gt;
Далее будем проводить все вычисления модулю &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Попросим &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt; 'а прислать &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt;'у формулу &amp;lt;tex&amp;gt;A_0(x_1)= \sum\limits_{x_2 = 0}^{1}\ldots\sum\limits_{x_m = 0}^{1} A(x_1, x_2, ..., x_m)&amp;lt;/tex&amp;gt;. &lt;br /&gt;
Заметим, что размер формулы &amp;lt;tex&amp;gt;A_0(x_1)&amp;lt;/tex&amp;gt; будет полином от длины входа &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt; 'а, так как &amp;lt;tex&amp;gt;A_0(x_1)&amp;lt;/tex&amp;gt; — полином степени не выше, чем &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;, от одной переменной, а значит его можно представить в виде &amp;lt;tex&amp;gt;A_0(x) = \sum\limits_{i = 0}^{d} C_i \cdot x ^ i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Проверим следующее утверждение: &amp;lt;tex&amp;gt;A_0(0) + A_0(1) = k&amp;lt;/tex&amp;gt; (*) (здесь и далее под словом «проверим» будем подразумевать следующее: если утверждение верно, &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt; продолжает свою работу, иначе он прекращает свою работу и возвращет '''false''').&lt;br /&gt;
&lt;br /&gt;
'''Шаг i'''&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;r_i = random(0..p-1)&amp;lt;/tex&amp;gt;. Отправим &amp;lt;tex&amp;gt;r_i&amp;lt;/tex&amp;gt; программе &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Попросим &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt; 'а прислать &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt;'у формулу &amp;lt;tex&amp;gt;A_i(x_{i+1}) = \sum\limits_{x_{i+2} = 0}^{1}\ldots\sum\limits_{x_m = 0}^{1} A(r_1,\ldots, r_i, x_{i+1}, ..., x_m)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Проверим следующее утверждение: &amp;lt;tex&amp;gt;A_i(0) + A_i(1) = A_{i-1}(r_i)&amp;lt;/tex&amp;gt; (*). &lt;br /&gt;
&lt;br /&gt;
'''Шаг m'''&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;r_m = random(0..p-1)&amp;lt;/tex&amp;gt;. Отправим &amp;lt;tex&amp;gt;r_m&amp;lt;/tex&amp;gt; программе &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Попросим программу &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt; прислать &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt;'у значение &amp;lt;tex&amp;gt;A_m()= A(r_1, r_2, ..., r_m)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Проверим следующее утверждение: &amp;lt;tex&amp;gt;A_m() = A_{m-1}(r_m)&amp;lt;/tex&amp;gt; (*).&lt;br /&gt;
А также сами подставим &amp;lt;tex&amp;gt;r_1, r_2, ..., r_m&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;A(x_1, x_2, ..., x_m)&amp;lt;/tex&amp;gt; и проверим правильность присланного значения &amp;lt;tex&amp;gt;A_m()&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Возвращаем '''true'''.&lt;br /&gt;
&lt;br /&gt;
Докажем теперь, что построенный таким образом &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt; — корректный. Для этого нужно доказать следующие утверждения:&lt;br /&gt;
# Построенный &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt; - вероятностная машина Тьюринга, совершающая не более полинома от длины входа действий.&lt;br /&gt;
# &amp;lt;tex&amp;gt;\langle \varphi, k \rangle \in \mathrm{\#SAT} \Rightarrow \exists \mathit{Prover} : \Pr[\mathit{Verifier^{Prover}}(\langle \varphi, k \rangle)=1] \ge 2/3&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# &amp;lt;tex&amp;gt;\langle \varphi, k \rangle \notin \mathrm{\#SAT} \Rightarrow \forall \mathit{Prover} :\Pr[\mathit{Verifier^{Prover}}(\langle \varphi, k \rangle)=1] \le 1/3&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Докажем эти утверждения.&lt;br /&gt;
&lt;br /&gt;
#Первый факт следует из построения &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt; 'а.&lt;br /&gt;
#По [[Арифметизация булевых формул с кванторами | лемме (2)]], если &amp;lt;tex&amp;gt;\sum\limits_{x_1 = 0}^1 \ldots \sum\limits_{x_m = 0}^1  A_\phi(x_1, \ldots, x_m)=k&amp;lt;/tex&amp;gt;, то условия (*) выполнятются, следовательно существует такой &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt;, что &amp;lt;tex&amp;gt;\Pr[\mathit{Verifier^{Prover}}(\langle\phi,k\rangle) = 1] = 1&amp;lt;/tex&amp;gt;, для любой пары &amp;lt;tex&amp;gt;\langle\phi,k\rangle \in \mathrm{\#SAT}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
#Пусть количество наборов, удовлетворяющих &amp;lt;tex&amp;gt;\phi&amp;lt;/tex&amp;gt;, не равно &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;. Для того, что бы &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt; вернул '''true''', &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt; 'у необходимо посылать такие &amp;lt;tex&amp;gt;A_i&amp;lt;/tex&amp;gt;, чтобы выполнялись все проверяемые условия. Посмотрим на то, что он может послать:&lt;br /&gt;
:'''Шаг 0'''&lt;br /&gt;
:Так как количество наборов, удовлетворяющих &amp;lt;tex&amp;gt;\phi&amp;lt;/tex&amp;gt;, не равно &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt; не может послать правильное &amp;lt;tex&amp;gt;A_0&amp;lt;/tex&amp;gt;, поскольку в этом случае не выполнится условие &amp;lt;tex&amp;gt;A_0(0) + A_0(1) = k&amp;lt;/tex&amp;gt;. Поэтому он посылает не &amp;lt;tex&amp;gt;A_0&amp;lt;/tex&amp;gt;, а некое &amp;lt;tex&amp;gt;\tilde{A}_0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:&amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt;&lt;br /&gt;
:'''Шаг i'''&lt;br /&gt;
:Заметим, что если на каком-то шаге &amp;lt;tex&amp;gt;A_{i-1}(r_i) = \tilde{A}_{i-1}(r_i)&amp;lt;/tex&amp;gt;, то начиная со следующего шага &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt; может посылать правильные &amp;lt;tex&amp;gt;A_j&amp;lt;/tex&amp;gt; и в итоге &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt; вернёт '''true'''.&lt;br /&gt;
:Для некоторого случайно выбранного &amp;lt;tex&amp;gt;r_i&amp;lt;/tex&amp;gt; вероятность того, что &amp;lt;tex&amp;gt;A_{i-1}(r_i) = \tilde{A}_{i-1}(r_i)&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;r_i&amp;lt;/tex&amp;gt; — корень полинома &amp;lt;tex&amp;gt;(A_{i-1} - \tilde{A}_{i-1})(r_i)&amp;lt;/tex&amp;gt;, имеющего степень не больше &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;, не превосходит &amp;lt;tex&amp;gt;\frac{d}{p}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:&amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt;&lt;br /&gt;
:'''Шаг m'''&lt;br /&gt;
:Так как на последнем шаге &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt; сверяет полученное от &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt;'а значение с непосредственно вычисленным, слово будет допущено только в том случае, когда &amp;lt;tex&amp;gt;\mathit{Prover}&amp;lt;/tex&amp;gt; смог прислать верное значение, что в свою очередь возможно лишь если на одном из предыдущих шагов был верно угадан корень полинома.&lt;br /&gt;
:&lt;br /&gt;
:Вычислим вероятность того, что хотя бы раз корень был угадан.&lt;br /&gt;
:&amp;lt;tex&amp;gt;\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&amp;lt;/tex&amp;gt;.&lt;br /&gt;
:В последнем переходе мы воспользовались [http://ru.wikipedia.org/wiki/Ряд_Тейлора формулой Тейлора] для логарифма и экспоненты, а также тем, что &amp;lt;tex&amp;gt;m&amp;gt;0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, построенный нами &amp;lt;tex&amp;gt;\mathit{Verifier}&amp;lt;/tex&amp;gt; корректен, а значит лемма доказана.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&amp;lt;tex&amp;gt;\mathrm{coNP} \subset \mathrm{IP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
|proof=&lt;br /&gt;
Сведём язык &amp;lt;tex&amp;gt;\mathrm{TAUT}&amp;lt;/tex&amp;gt; к языку &amp;lt;tex&amp;gt;\mathrm{\#SAT}&amp;lt;/tex&amp;gt; следующим образом: &amp;lt;tex&amp;gt;\phi \mapsto \langle \phi, 2^k \rangle &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; — количество различных переменных в формуле &amp;lt;tex&amp;gt;\phi&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Очевидно, что &amp;lt;tex&amp;gt;\phi \in \mathrm{TAUT} \Leftrightarrow \langle \phi, 2^k \rangle \in \mathrm{\#SAT}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
По лемме (2) &amp;lt;tex&amp;gt;\mathrm{\#SAT} \in \mathrm{IP}&amp;lt;/tex&amp;gt;. Тогда &amp;lt;tex&amp;gt;\mathrm{TAUT} \in \mathrm{IP}&amp;lt;/tex&amp;gt;. Так как &amp;lt;tex&amp;gt;\mathrm{TAUT} \in \mathrm{coNPC}&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;\mathrm{coNP} \subset \mathrm{IP}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Категория: Теория сложности]]&lt;/div&gt;</summary>
		<author><name>89.107.116.92</name></author>	</entry>

	</feed>