Теорема Карпа — Липтона — различия между версиями
Grechko (обсуждение | вклад) |
Grechko (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
{{Лемма | {{Лемма | ||
− | |statement= Пусть <tex>SAT \in \mathrm{P}/poly </tex>, тогда существует | + | |statement= Пусть <tex>SAT \in \mathrm{P}/poly </tex>, тогда для любой формулы <tex>\phi</tex> с <tex>n</tex> переменными, существует такая последовательность схем полиномиального размера <tex>C_n^1...C_n^n</tex>, что <tex>C_n^i</tex> возвращает значение <tex>i</tex>-й переменной в наборе переменных, удовлетворяющих <tex>\phi</tex>, если <tex>\phi \in SAT</tex>, или <tex>0</tex> если <tex>\phi \not \in SAT</tex> |
|proof= | |proof= | ||
− | Зададимся формулой <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>\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>. |
}} | }} | ||
Строка 11: | Строка 11: | ||
Если <tex>\mathrm{NP} \subset \mathrm{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>L \in \Pi_2</tex>, <tex>L = \{x | \forall y_1 . \exists y_2 \phi(x, y_1, y_2)\}</tex>.<br/> | |
− | + | Рассмотрим семейство схем <tex>С_n^1...C_n^n</tex>из леммы. <br> Используем выходы схем <tex>C_n^1...C_n^{i-1}</tex> как вход <tex>b_1...b_{i-1}</tex> схемы <tex>C_n^i</tex>, при этом заменяя те схемы <tex>C_n^i</tex>, которые возвращают значения переменных <tex>x</tex> и <tex>y_1</tex> на простые входы. Итого, получим схему <tex>C_n(\phi, x, y_1)</tex> и возвращающую такое значение <tex>y_2</tex>, что <tex> \phi(x, y_1, y_2) = 1</tex>, если <tex>\phi(x, y_1, y_2)</tex> удовлетворима для заданных <tex>x, y_1</tex>. <br> Теперь определение языка можно переписать так: <tex>L = \{x | \forall y_1 . \phi(x, y_1, C_n(\phi, x, y_1))\}</tex>. <br> Покажем что <tex>(\forall y_1 \phi(x, y_1, C_n(\phi, x, y_1)))</tex> <tex>\Leftrightarrow</tex> <tex>(\exists G \forall y_1 \phi(x, y_1, G(\phi, x, y_1)) )</tex>. <br> Очевидно, что из первого следует второе, т.к. <tex>\exists G = D_n</tex>. <br> Если первое ложно, то <tex>\exists y_1 = y_1^0 . \forall y_2 \phi(x, y_1^0, y_2) = 0</tex>, следовательно не существует такого <tex>G</tex>, что <tex>\forall y_1\phi(x, y_1, G(\phi, x, y_1)) )</tex>. <br> | |
− | + | Теперь определение исходного языка можно записать как <tex>L = \{x|\exists G \forall y_1 \phi(x, y_1, G(\phi, x, y_1))\}</tex>, значит <tex>L \in \Sigma_2</tex> | |
− | |||
− | |||
− | Покажем что <tex>(\forall | ||
− | <br>Очевидно, из первого следует второе, | ||
− | Если первое ложно, то <tex>\exists | ||
− | |||
}} | }} | ||
[[Категория: Теория сложности]] | [[Категория: Теория сложности]] |
Версия 16:52, 3 июня 2012
Лемма: |
Пусть , тогда для любой формулы с переменными, существует такая последовательность схем полиномиального размера , что возвращает значение -й переменной в наборе переменных, удовлетворяющих , если , или если |
Доказательство: |
Зададимся формулой | . Определим семейство схем так: схема будет принимать на вход формулу и бит , и возвращать тогда и только тогда, когда существует набор переменных, удовлетворяющий , такой что и . Так как задача определения выходного значения таких схем принадлежит , то такие схемы существуют и имеют полиномиальный размер. Очевидно, что если формула удовлетворима, то схема вернет значение -й переменной удовлетворяющего набора, в противном случае схема вернет .
Теорема (Карп, Липтон): |
Если , то . |
Доказательство: |
Рассмотрим язык |