Теорема Карпа — Липтона — различия между версиями
Kirillova (обсуждение | вклад) (изменена лемма) |
Kirillova (обсуждение | вклад) (исправлена теорема) |
||
Строка 1: | Строка 1: | ||
{{Лемма | {{Лемма | ||
− | |statement= Пусть <tex>\mathrm{SAT} \in \mathrm{P}/poly </tex>. Тогда | + | |statement= Пусть <tex>\mathrm{SAT} \in \mathrm{P}/poly </tex>. Тогда существует такое семейство схем полиномиального размера, что для любой входной функции <tex>\phi</tex> возвращается последовательность бит, удовлетворяющая <tex>\phi</tex>, если она существует, или же последовательность нулей в другом случае. |
|proof= | |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>; | *<tex>C_n^1(\phi) = 1 \Leftrightarrow \exists x_2,\ldots, x_n: \phi(1,x_2, \ldots, x_n)=1</tex>; | ||
*<tex> \ldots </tex> | *<tex> \ldots </tex> | ||
Строка 8: | Строка 9: | ||
*<tex> \ldots </tex> | *<tex> \ldots </tex> | ||
*<tex>C_n^n(\phi, b_1, \ldots, b_{n - 1}) = 1 \Leftrightarrow \phi(b_1, \ldots, b_{n-1}, 1)=1</tex>. | *<tex>C_n^n(\phi, b_1, \ldots, b_{n - 1}) = 1 \Leftrightarrow \phi(b_1, \ldots, b_{n-1}, 1)=1</tex>. | ||
− | Задача определения возврщаемого значения таких схем {{---}} задача <tex>\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>\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>C_n(\phi)</tex>. |
}} | }} | ||
Строка 17: | Строка 18: | ||
Если <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 \mathrm{\Pi_2}</tex>, <tex>L = \{x \bigm| \forall | + | Рассмотрим язык <tex>L \in \mathrm{\Pi_2}</tex>, <tex>L = \{x \bigm| \forall y \ \exists z \ \phi(x, y, z)\}</tex>.<br> |
− | + | <tex>\phi</tex> можно рассмтривать как функцию с <tex>n</tex> битовыми переменныии, где <tex>n</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>\phi_{xy}(z)</tex>. | |
+ | Из предыдущей леммы мы получили семейство схем полиномиального размера <tex>C_1, \ldots, C_n, \ldots </tex> Запустим схему <tex>C_m</tex> на <tex>\phi_{xy}</tex>, где <tex>m=n-|x|-|y|</tex>. Эта схема вернет нам такое значение <tex>z</tex>, что <tex>\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_m(\phi_{xy}))\}</tex>.<br> | ||
+ | Рассмотрим язык <tex>L_1 = \{x\bigm|\exists G \ \forall y \ \phi(x, y, G(x, y , \phi_{xy}))\}</tex>. <br> | ||
+ | Покажем, что <tex>L=L_1</tex>: | ||
+ | *<tex> L \subset L_1</tex><br> | ||
+ | Очевидно. Можно за <tex>G</tex> взять <tex>C_m</tex>. | ||
+ | *<tex>L_1 \subset L</tex> | ||
+ | Мы докажем это утверждение, если покажем, что если какое-то слово не принадлежит <tex>L</tex>, то оно не принадлежит и <tex>L_1</tex>.<br> | ||
+ | Пусть <tex>\exists y \ \forall z \ \phi(x,y,z)=0 \Rightarrow \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(x, y , \phi_{xy}))\}</tex>. Следовательно, <tex>L \in \Sigma_2</tex>. | ||
}} | }} | ||
[[Категория: Теория сложности]] | [[Категория: Теория сложности]] |
Версия 08:27, 6 июня 2012
Лемма: |
Пусть . Тогда существует такое семейство схем полиномиального размера, что для любой входной функции возвращается последовательность бит, удовлетворяющая , если она существует, или же последовательность нулей в другом случае. |
Доказательство: |
Пусть нам дана функция
|
Теорема (Карп, Липтон): |
Если , то . |
Доказательство: |
Рассмотрим язык Очевидно. Можно за взять .Мы докажем это утверждение, если покажем, что если какое-то слово не принадлежит |