Изменения

Перейти к: навигация, поиск

Теорема Карпа — Липтона

3054 байта добавлено, 19:27, 4 сентября 2022
м
rollbackEdits.php mass rollback
{{Лемма
|statement= Пусть <tex>\mathrm{SAT } \in \mathrm{P}/poly </tex>, тогда . Тогда существует такое семейство схем полиномиального размера <tex>D_n</tex>, таких, что для любой входной формулы <tex>\phi \in SAT</tex>возвращается последовательность бит, удовлетворяющая <tex>D_{|\phi|}(\phi)</tex> выводит набор значений, удовлетворяющий формулеесли она существует, или же последовательность нулей в другом случае.
|proof=
Если Пусть нам дана формула <tex>\phi</tex> не содержит переменныхс <tex>n</tex> переменными.<br>Попробуем построить схемы <tex>C_n^1, \ldots, то есть является тождественной единицейC_n^n</tex>, решение задачи тривиально.работающие следующим образом:Иначе*<tex>C_n^1(\phi) = 1 \Leftrightarrow \exists x_2,\ldots, x_n: \phi(1, выберем любую переменную x_2, \ldots, x_n)=1</tex>x;*<tex> \ldots </tex> из формулы *<tex>C_n^i(\phi, b_1, \ldots, b_{i-1}) = 1 \Leftrightarrow \exists x_{i+1},\ldots, x_n: \phi(b_1, \ldots, b_{i-1},1,x_{i+1}, \ldots, x_n)=1</tex>, и выполним подстановку ;*<tex>x = 0\ldots </tex>. Получим формулу *<tex>C_n^n(\phi, b_1, \ldots, b_{n - 1}) = 1 \Leftrightarrow \phi(b_1, \phi_0ldots, b_{n-1}, 1)=1</tex>. Если Задача определения возвращаемого значения таких схем тогда будет эквивалентна задаче <tex>\phi_0 \in mathrm{SAT}</tex> (так как по . По условию теоремы <tex>\mathrm{SAT } \in \mathrm{P}/poly</tex>, такую проверку можно сделать за полиномиальное времяследовательно, вычислив соответствующую схемутакие схемы существуют и каждая из них будет полиномиального размера. Рассмотрим последовательность: <tex>b_1=C_n^1(\phi), b_2=C_n^2(\phi, b1), \ldots, b_n=C_n^n(\phi, b_1, \ldots, b_{n-1})</tex>. Очевидно, что это будет последовательностью бит, которая удовлетворит <tex>\phi</tex>, или же последовательностью нулей, если <tex>\phi</tex> удовлетворить нельзя. Если при <tex>b_1=1</tex> формулу <tex>\phi</tex> удовлетворить возможно, то мы свели задачу к аналогичной с меньшим числом переменных. В противном случаеесть <tex>C_n^1(\phi)=1</tex>, сведение выполняется подстановкой то нужно взять <tex>x b_1= 1</tex>. Мы получили программу, работающую за полиномиальное времяесли же нет, если <tex>C_n^1(\phi)=0</tex>, тогда имеет смысл искать следующие биты последовательности, а так как удовлетворяющей <tex>P \in Pphi</tex> только при <tex>b_1=0</polytex>. Следующие биты последовательности выбираются по аналогии. <br>За <tex>C_n</tex>обозначим схему, то строящую описанным алгоритмом требуемую последовательность. Очевидно, что она будет полиномиального размера (как совокупность <tex>n</tex> схем полиномиального размера). Это и семейство требуемых схеместь требуемая схема для <tex>\phi</tex>.
}}
|author=Карп, Липтон
|statement=
Если <tex>\mathrm{NP } \subset \mathrm{P}/poly</tex>, то <tex>\Sigma_2 = \Pi_2</tex>.
|proof=
Так Рассмотрим язык <tex>L \in \mathrm{\Pi_2}</tex>: <tex> \exists p \in poly, \phi \in \mathrm{\widetilde{P}}, \forall x \in L \Leftrightarrow \forall y \ \exists z : |y|,|z| \le p(|x|), \phi(x, y, z) = 1</tex>.<br>Для фиксированного <tex>x</tex> <tex>\phi</tex> можно рассматривать как формулу с <tex>n</tex> битовыми переменными (так как мы знаем, что <tex>NP \subset phi \in \mathrm{\widetilde{P/poly}}</tex>, то а <tex>\mathrm{SATP} \in subset \mathrm{P}/poly</tex>), где <tex>n</tex> {{---}} полином от длины входа <tex>x</tex> (из-за ограничений накладываемых по определению класса <tex>\mathrm{\Pi_2}</tex> на <tex>|y|, |z|)</tex>.Для заданных <tex>x</tex> и <tex>y</tex> научимся находить такой <tex>z</tex>, то есть для любого что <tex>\phi(x,y,z)=1</tex>, если это возможно. Подставим значения <tex>x</tex> и <tex>y</tex> в формулу <tex>\phi</tex>. Теперь <tex>\phi</tex> зависит только от <tex>z</tex>: <tex>n\phi_{xy}(z)</tex> найдётся схема .Из предыдущей леммы мы установили существования семейство схем полиномиального размера <tex> C_1, \ldots, C_n, \ldots </tex> Запустим схему <tex>C_{p(|x|)}</tex> на <tex>\phi_{xy}</tex>. Эта схема вернет нам такое значение <tex>z</tex>, такая что <tex>C_\phi(x,y,z)=1</tex>, если <tex>\phi(x,y,z) </tex> удовлетворима для заданных <tex>x</tex> и <tex>y</tex>, или же последовательность нулей. <br>Тогда определение языка <tex>L</tex> можно переписать: <tex>L = \{x \bigm|\forall y \ \phi(x, y, C_{p(|x|)}(\phiphi_{xy})) = 1\}</tex>.<br>Рассмотрим язык <tex>L_1 = \{x\bigm|\exists G \ \forall y \left[\phi (x, y, G(\in SATphi_{xy})) = 1\}</tex>. <br>Покажем, что <tex>L=L_1</tex>:*<tex> L \right]subset L_1</tex><br>Очевидно. Можно за <tex>G</tex> взять <tex>C_{p(|x|)}</tex>.Тогда*<tex>L_1 \subset L</tex>Мы докажем это утверждение, если покажем, что если какое-то слово не принадлежит <tex>L</tex>, найдётся то оно не принадлежит и схема полиномиального размера <tex> D_L_1</tex>.<br>Если <tex>\exists y \ \forall z \ \phi(x,y,z)=0 </tex>, тогда <tex>\nexists G \ \forall y \ \phi(x, y, G(\phi_{xy}))=1</tex>. <br>Таким образом <tex>L =\{x\bigm|\exists G, |G| < p(|x|) \ \forall y, |y|<p(|x|) \ \phi|(x, y, G(\phi_{xy})) = 1\}</tex>. Следовательно, <tex>L \in \Sigma_2</tex>. Значит, <tex>\mathrm{\Pi_2} \subset \mathrm{\Sigma_2}</tex>.<br>Докажем теперь, выдающая для что <tex>\mathrm{\Sigma_2} \subset \mathrm{\Pi_2} </tex>.Рассмотрим язык <tex>L \in \mathrm{\Sigma_2}</tex>: <tex>L \phi in \mathrm{\Sigma_2} \Rightarrow \overline{L} \in \mathrm{\Pi_2} \Rightarrow \overline{L} \in \mathrm{\Sigma_2} \Rightarrow L \in SAT\mathrm{\Pi_2}</tex>. Получается, что <tex>\mathrm{\Sigma_2} \subset \mathrm{\Pi_2} </tex> набор значений.Итого, удовлетворяющий <tex>\phimathrm{\Sigma_2} = \mathrm{\Pi_2} </tex>.}}
Рассмотрим язык <tex>L \in \Pi_2</tex>, <tex>L = \{z | \forall x </tex> <tex>\exists y </tex> <tex> \phi(x, y, z)\}</tex>.<br/>Рассмотрим формулу <tex>\psi(x, z) = \exists y</tex> <tex>\phi(x, y, z)</tex> как экземпляр задачи <tex>SAT</tex>.<br/>Тогда определение языка <tex>L</tex> можно переписать так[[Категория: <tex>L=\{z | \forall x</tex> <tex> \phi(x,D_{|\psi(x, z)|}(\psi(x, z)), z)\}</tex>.<br/>Покажем что <tex>(\forall x</tex> <tex> \phi(x,D_{|\psi(x, z)|}(\psi(x, z)), z)</tex> <tex>)\Leftrightarrow</tex> <tex>(\exists G : </tex> <tex> \forall x</tex> <tex>\phi(x, G(\psi(x, z)), z))</tex>.<br>Очевидно, из первого следует второе, так как <tex>\exists G = D_{|\psi(x, z)|}</tex>.Если первое ложно, то <tex>\exists x = x_0 : </tex> <tex>\forall y</tex> <tex>\phi(x, y, z) = 0</tex>, а значит <tex>\forall G </tex> <tex>\exists x = x_0 : \phi (x, G(\psi(x, z)), z)</tex>, то есть второе ложно.Итого, язык <tex>L=\{z | \exists G : </tex> <tex>\forall x</tex> <tex>\phi(x, G(\psi(x, z)), z)\}</tex>, значит <tex>L \in \Sigma_2</tex>.}}Теория сложности]]
1632
правки

Навигация