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

Материал из Викиконспекты
Перейти к: навигация, поиск
м
Строка 1: Строка 1:
 
{{Лемма
 
{{Лемма
|statement= Пусть <tex>SAT \in 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>, <tex>D_{|\phi|}(\phi)</tex> выводит набор значений, удовлетворяющий формуле.
 
|proof=
 
|proof=
 
Если <tex>\phi</tex> не содержит переменных, то есть является тождественной единицей, решение задачи тривиально.
 
Если <tex>\phi</tex> не содержит переменных, то есть является тождественной единицей, решение задачи тривиально.
Иначе, выберем любую переменную <tex>x</tex> из формулы <tex>\phi</tex>, и выполним подстановку <tex>x = 0</tex>. Получим формулу <tex>\phi_0</tex>. Если <tex>\phi_0 \in SAT</tex> (так как по условию теоремы <tex>SAT \in P/poly</tex>, такую проверку можно сделать за полиномиальное время, вычислив соответствующую схему), то мы свели задачу к аналогичной с меньшим числом переменных. В противном случае, сведение выполняется подстановкой <tex>x = 1</tex>. Мы получили программу, работающую за полиномиальное время, а так как <tex>P \in P/poly</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>, то и семейство требуемых схем.
 
}}
 
}}
  
Строка 10: Строка 10:
 
|author=Карп, Липтон
 
|author=Карп, Липтон
 
|statement=
 
|statement=
Если <tex>NP \subset P/poly</tex>, то <tex>\Sigma_2 = \Pi_2</tex>.
+
Если <tex>\mathrm{NP} \subset \mathrm{P}/poly</tex>, то <tex>\Sigma_2 = \Pi_2</tex>.
 
|proof=
 
|proof=
Так как <tex>NP \subset P/poly</tex>, то <tex>\mathrm{SAT} \in \mathrm{P/poly}</tex>, то есть для любого <tex>n</tex> найдётся схема полиномиального размера <tex> C_n</tex>, такая что <tex>C_{|\phi|}(\phi) = \left[\phi \in SAT\right]</tex>.
+
Так как <tex>\mathrm{NP} \subset \mathrm{P}/poly</tex>, то <tex>SAT \in \mathrm{P}/poly</tex>. Тогда по лемме найдётся семейство схем полиномиального размера <tex> D_n</tex> таких, что для любой формулы <tex>\phi \in SAT</tex>, <tex>D_{|\phi|}(\phi)</tex> выводит набор значений, удовлетворяющий <tex>\phi</tex>.
Тогда, найдётся и схема полиномиального размера <tex> D_{|\phi|}</tex>, выдающая для <tex>\phi \in SAT</tex> набор значений, удовлетворяющий <tex>\phi</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>L \in \Pi_2</tex>, <tex>L = \{z | \forall x </tex> <tex>\exists y </tex> <tex> \phi(x, y, z)\}</tex>.<br/>

Версия 17:26, 2 июня 2012

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

Если [math]\phi[/math] не содержит переменных, то есть является тождественной единицей, решение задачи тривиально.

Иначе, выберем любую переменную [math]x[/math] из формулы [math]\phi[/math], и выполним подстановку [math]x = 0[/math]. Получим формулу [math]\phi_0[/math]. Если [math]\phi_0 \in SAT[/math] (так как по условию теоремы [math]SAT \in \mathrm{P}/poly[/math], такую проверку можно сделать за полиномиальное время, вычислив соответствующую схему), то мы свели задачу к аналогичной с меньшим числом переменных. В противном случае, сведение выполняется подстановкой [math]x = 1[/math]. Мы получили программу, работающую за полиномиальное время, а так как [math]\mathrm{P} \in \mathrm{P}/poly[/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]