Изменения

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

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

3285 байт добавлено, 19:18, 4 сентября 2022
м
rollbackEdits.php mass rollback
'''Теорема Карпа-Липтона'''
Если <math>NP \subset P/poly</math> то <texmath>\Sigma_2=\Pi_2</texmath>
== Доказательство ==
Пусть есть логические схемы для <tex>NP</tex>(для любой задачи из NP). Например Зафиксируем любую задачу из <tex>SAT : C_1...C_n...NP</tex>, который кодирует . Например пусть <tex>iSAT</tex> символов, разрешимых логической схемой разрешается логическими схемами <tex>C_iC_1...C_n... </tex>. Размер (<tex>|C_i|\le p(n)SAT</tex>.Это означает что для фиксированного с одним битом разрешается логической схемой <tex>nC_1</tex> , <tex>\exists{}SAT</tex> такая логическая схема с двумя переменными логической схемой <tex>C_nC_2</tex>, что <tex>\forall{}\varphi{} (\varphi{} \in{} SAT |\varphi{}|=n \Leftrightarrow C_n(\varphi{}и т.д.)=1)</tex> .
 '''Что значит "разрешается логической схемой"?''' Это значит что если на вход логической схеме подать каким-то логичным образом закодированную формулу, то на выходе получется логичным образом в виде 0 и 1 закодированный ответ - имеется разложение или нет. И причем размер этой логической схемы <tex>|C_n|\le p(n) </tex>, где <tex>p(n)</tex> - какой-то полином. Здесь не утверждается, что эти логические схемы можно как-то конструктивно построить. Если бы их было возможно построить за полином, то это бы означало, что <tex>SAT_2=\Pi_2</tex> и значит <tex>P = NP</tex>. Итак, получается, что если зафиксировать <tex>n</tex>, то для этого фиксированного <tex>n</tex> будет <tex>\exists{C_n}\forall{} формулы \varphi{} (\varphi{} \in{} SAT |\varphi{}|=n \Leftrightarrow C_n(\varphi{})=1)</tex> <tex> \exists{C_n} \forall{\varphi{}} (\forall{x} \varphi{(x)}=0 \Leftrightarrow C_n(\varphi{})=0)</tex>., где <tex>x</tex> - вход длины <tex>n</tex>
Рассмотрим язык <tex>L\in \Pi_2</tex>. Это означает, что <tex>x\in L \Leftrightarrow \forall{y} \exists{z}: \psi{(x,y,x)}</tex>
Рассмотрим <tex>L_1 = \{<x,y>|\exists{z}: \psi{(x,y,z)}\}</tex>
'''Что такое <tex>L_1 \in NP</tex> по определению <tex>NPexists{z}:\psi{(x,y,z)}</tex>?'''
<tex>L={x|\forall{y} <x,y>\in{L_1}}</tex>----
Нужно доказать что Обозначим пары <tex>L<x,y></tex>, для которых такой <tex>z</tex> существует как какой нибудь язык <tex>L_1</tex>. <tex>L_1 = \{<x,y>|\exists{z}: \in psi{(x,y,z)}\Sigma_1}</tex>.
Заметим что <tex>L_1\in{} NP \Rightarrow L_1 \le{}_m SAT</tex> по карпу с помощью определению <tex>f</tex>, т.е. <tex>L=\{x|\forall{y} f(<x,y>)\in{SAT}\}NP</tex>
<tex>f(<x,y>)\in{SAT}</tex> - это значит, что для некоторого набора формул выполняется для всего набора, если предположитьТаким образом получается, что <tex>L=\{x|\forall{y} C_n(f(<x,y>))=1\in{L_1}\}</tex>
Но надо откуда-то взять этот набор. Можно его угадать, используя квантор существует. Добавим его.Так как <tex>NP \subset P/poly</tex> то <tex>L=\{x|\exists{C_n}: C_n решает SAT и \forall{y} C_n(f(<x,y>))=1\}</tex>---
Что означает <tex>C_n</tex> решает <tex>SAT</tex>? Нужно переписать с квантором для любого.
<tex>C_n</tex> решает <tex>SAT</tex> <tex>\Leftrightarrow</tex> <tex>\forall{\varphi} \forall{x} (fi(x)=1 \Rightarrow C_n(fi)=1)</tex>
'''Требуется доказать, что <tex>L\in \Sigma_1</tex>''' Если <tex>L_1\in{} NP</tex> то <tex>L_1 \le{}_m SAT</tex> с помощью <tex>f</tex>, т.е. <tex>L=\{x|\forall{y} f(<x,y>)\in{SAT}\}</tex>  '''Что такое "<tex>f(<x,y>)\subset{SAT}</tex>"?''' <tex>f(<x,y>)\subset{SAT}</tex> <tex>--</tex> для некоторого набора логических схем это означает выполнимость всего этого набора. Если предположить, что набор этих схем известен, то получится, что <tex>L=\{x|\forall{y} C_n(f(<x,y>))=1\}</tex>,где <tex>n</tex>- длина входа <tex><x,y></tex>. Требуется откуда то взять этот набор. Его можно угадать, используя квантор "<tex>\exists{}</tex>" снаружи. <tex>C_n</tex> существует по предположению, что <tex>NP \subset{P/poly}</tex> т.е. <tex>L=\{x|\exists{C_n}: C_n</tex> решает <tex>SAT</tex> и <tex>\forall{y} C_n(f(<x,y>))=1\}</tex>  '''Что такое <tex>C_n</tex> Решает <tex>SAT</tex>?'''  Запишем это используя квантор "<tex>\forall{}</tex>".  <tex>C_n</tex> решает <tex>SAT</tex> <tex>\Leftrightarrow</tex> если <tex>\forall{\varphi} \forall{x} (fi(x)=1 \Rightarrow C_n(fi)=1)</tex> Воспользуемся самосведением <tex>SAT</tex>: <tex>L=\{x|\exists{C1,C2,..,Cn} - набор логических схем для SAT и\forall{y} C_n(f(<x,y>))=1\}</tex>,где - <tex>C1,C2,..,Cn</tex> набор логических схем для <tex>SAT</tex>.
Внутри будем проверять используемый набор
<tex>\forall{\varphi{}} (C_{|\varphi{}|}(\varphi{})=0 \Rightarrow \forall{x} \varphi{}(x)=0)
\vee{}</tex>
<tex>(C_{|\varphi{}|}(\varphi{})=1 \Rightarrow \varphi{}|_{x_1=0} \in SAT или \varphi{}|_{x_1=1} \in SAT)</tex>
Если <tex>C</tex> решает <tex>\forall{\varphi{}} (C_{|\varphi{}|}(\varphi{})=0 \Rightarrow \forall{x} \varphi(x)=0) (C_{|\varphi{}|}(\varphi{})=1 \Rightarrow \varphi{}|_{x_1=0} \in SAT или </tex> то все хорошо. Если нет, то зафиксируем формулу <tex>\varphi{}|_{x_1=1} \in SAT)_0</tex>, которую он не решает. Если на этой формуле выдаст 0, а должна выдать 1, то получается что не удовлетворяет первую часть предыдущего выражения и, значит, не будет работать. Если наоборот выдаст 1 а на самом деле формула не удавлетворима то обе скобки не выполнятся и опять формула работать не будет.
Если <tex>C</tex> решает <tex>SAT</tex> то все хорошоРассмотрим минимальную неправильную схему. Тогда на той формуле, если нет то зафиксируем формулу на которой не решаетэта схема неправильна, по предположению, что все более короткие формулы правильны,эта формула распознается схемами с меньшим числом входов. Если выдаст Поэтому обе скобки будут 0 а должна выдать 1 то первую и мы не удолветворяет, если наоборот то обе не удовлетворяетузнаем набор схем. Развернем формулу до конца.
<tex> \forall{\varphi{}}: |\varphi{}|=m \forall{x_1}..\forall{x_m} если </tex><tex> C_m(\varphi{})=0 \Rightarrow \varphi{(x_1)}=0 </tex> иначе <tex> C_{m-1}(\varphi|_{x_1=0})=0 \Rightarrow \varphi|_{x_1=0}(x_2)=0</tex> <tex>C_{m-1}(\varphi{}|_{x_1=1})=0 \Rightarrow \varphi{}|_{x_1=0}(x_2)=0</tex> <tex>C_{m-1}(\varphi{}|{x_1=0}) \vee{} C_{m-1}(\varphi{}|_{x_1=1})</tex> Далее рекурсивно записываем ту же самую формулу от того из них, которое равно 1.
<tex>C_{m-1}(\varphi{}|_{x_1=1})=0 \Rightarrow \varphi{}|_{x_1=0}(x_2)=0</tex>Второй вариант был угадать не только булевы схемы для сат но и те схемы, которые выдают правильные значения.
Получаем что <texmath>C_{m-1}(L\varphi{}|{x_1=0}) in \vee{} C_{m-1}(\varphi{}|_{x_1=1})Sigma_2</texmath>
Получаем что <math>L\in \Sigma_2</math>
Теорема доказана
1632
правки

Навигация