Теорема Карпа — Липтона — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м
Строка 1: Строка 1:
 
{{Лемма
 
{{Лемма
|statement= Пусть <tex>SAT \in \mathrm{P}/poly </tex>, тогда существует семейство схем полиномиального размера <tex>D_n</tex> таких, что для любой формулы <tex>\phi \in SAT</tex>, <tex>D_{|\phi|}(\phi)</tex> выводит набор значений, удовлетворяющий формуле.
+
|statement= Пусть <tex>SAT \in \mathrm{P}/poly </tex>, тогда существует семейство схем полиномиального размера <tex>D_n</tex> таких, что для любой формулы <tex>\phi \in SAT</tex> c <tex>n</tex> переменными, <tex>D_{n}(\phi)</tex> выводит набор значений, удовлетворяющий формуле, или последовательность нулей если <tex>\phi \not \in SAT</tex>
 
|proof=
 
|proof=
Если <tex>\phi</tex> не содержит переменных, то есть является тождественной единицей, решение задачи тривиально.
+
Зададимся формулой <tex>\phi</tex>. Определим семейство схем <tex>C_n^1 ... C_n^n</tex> так: схема <tex>C_n^i</tex> будет принимать на вход формулу <tex>\phi</tex> и <tex>i-1</tex> бит <tex>b_1 ... b_{i-1}</tex>, и возвращать <tex>1</tex> тогда и только тогда, когда существует набор переменных, удовлетворяющий <tex>\phi</tex>, такой что <tex>x_1 = b_1 ... x_{i-1}=b_{i-1}</tex> и <tex>x_i=1</tex>. Так как задача определения выходного значения таких схем принадлежит <tex>NP</tex>, то такие схемы существуют и имеют полиномиальный размер. Очевидно, что если формула <tex>\phi</tex> удовлетворима, то схема <tex>C_n^i</tex> вернет значение <tex>i</tex>-й переменной удовлетворяющего набора, в противном случае схема вернет <tex>0</tex>. Теперь используем выходы схем <tex>C_n^1...C_n^{i-1}</tex> как вход <tex>b_1...b_{i-1}</tex> схемы <tex>C_n^i</tex> и получим схему с <tex>n</tex> выходами, возвращающую требуемые набор.
Иначе, выберем любую переменную <tex>x</tex> из формулы <tex>\phi</tex>, и выполним подстановку <tex>x = 0</tex>. Получим формулу <tex>\phi_0</tex>. Если <tex>\phi_0 \in SAT</tex> (так как по условию теоремы <tex>SAT \in \mathrm{P}/poly</tex>, такую проверку можно сделать за полиномиальное время, вычислив соответствующую схему), то мы свели задачу к аналогичной с меньшим числом переменных. В противном случае, сведение выполняется подстановкой <tex>x = 1</tex>. Мы получили программу, работающую за полиномиальное время, а так как <tex>\mathrm{P} \in \mathrm{P}/poly</tex>, то и семейство требуемых схем.
 
 
}}
 
}}
  

Версия 15:49, 3 июня 2012

Лемма:
Пусть [math]SAT \in \mathrm{P}/poly [/math], тогда существует семейство схем полиномиального размера [math]D_n[/math] таких, что для любой формулы [math]\phi \in SAT[/math] c [math]n[/math] переменными, [math]D_{n}(\phi)[/math] выводит набор значений, удовлетворяющий формуле, или последовательность нулей если [math]\phi \not \in SAT[/math]
Доказательство:
[math]\triangleright[/math]
Зададимся формулой [math]\phi[/math]. Определим семейство схем [math]C_n^1 ... C_n^n[/math] так: схема [math]C_n^i[/math] будет принимать на вход формулу [math]\phi[/math] и [math]i-1[/math] бит [math]b_1 ... b_{i-1}[/math], и возвращать [math]1[/math] тогда и только тогда, когда существует набор переменных, удовлетворяющий [math]\phi[/math], такой что [math]x_1 = b_1 ... x_{i-1}=b_{i-1}[/math] и [math]x_i=1[/math]. Так как задача определения выходного значения таких схем принадлежит [math]NP[/math], то такие схемы существуют и имеют полиномиальный размер. Очевидно, что если формула [math]\phi[/math] удовлетворима, то схема [math]C_n^i[/math] вернет значение [math]i[/math]-й переменной удовлетворяющего набора, в противном случае схема вернет [math]0[/math]. Теперь используем выходы схем [math]C_n^1...C_n^{i-1}[/math] как вход [math]b_1...b_{i-1}[/math] схемы [math]C_n^i[/math] и получим схему с [math]n[/math] выходами, возвращающую требуемые набор.
[math]\triangleleft[/math]


Теорема (Карп, Липтон):
Если [math]\mathrm{NP} \subset \mathrm{P}/poly[/math], то [math]\Sigma_2 = \Pi_2[/math].
Доказательство:
[math]\triangleright[/math]

Так как [math]\mathrm{NP} \subset \mathrm{P}/poly[/math], то [math]SAT \in \mathrm{P}/poly[/math]. Тогда по лемме найдётся семейство схем полиномиального размера [math] D_n[/math] таких, что для любой формулы [math]\phi \in SAT[/math], [math]D_{|\phi|}(\phi)[/math] выводит набор значений, удовлетворяющий [math]\phi[/math].

Рассмотрим язык [math]L \in \Pi_2[/math], [math]L = \{z | \forall x [/math] [math]\exists y [/math] [math] \phi(x, y, z)\}[/math].
Рассмотрим формулу [math]\psi(x, z) = \exists y[/math] [math]\phi(x, y, z)[/math] как экземпляр задачи [math]SAT[/math].
Тогда определение языка [math]L[/math] можно переписать так: [math]L=\{z | \forall x[/math] [math] \phi(x,D_{|\psi(x, z)|}(\psi(x, z)), z)\}[/math].
Покажем что [math](\forall x[/math] [math] \phi(x,D_{|\psi(x, z)|}(\psi(x, z)), z)[/math] [math])\Leftrightarrow[/math] [math](\exists G : [/math] [math] \forall x[/math] [math]\phi(x, G(\psi(x, z)), z))[/math].
Очевидно, из первого следует второе, так как [math]\exists G = D_{|\psi(x, z)|}[/math]. Если первое ложно, то [math]\exists x = x_0 : [/math] [math]\forall y[/math] [math]\phi(x, y, z) = 0[/math], а значит [math]\forall G [/math] [math]\exists x = x_0 : \phi (x, G(\psi(x, z)), z)[/math], то есть второе ложно.

Итого, язык [math]L=\{z | \exists G : [/math] [math]\forall x[/math] [math]\phi(x, G(\psi(x, z)), z)\}[/math], значит [math]L \in \Sigma_2[/math].
[math]\triangleleft[/math]