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

Материал из Викиконспекты
Версия от 14:33, 15 апреля 2010; 192.168.0.2 (обсуждение) (Доказательство)
Перейти к: навигация, поиск

Формулировка

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

[math]NP \in P/poly[/math] то [math]\Sigma_2=\Pi_2[/math]

Доказательство

Пусть есть логические схемы для [math]NP[/math]. Например [math]C_1...C_n...[/math] [math]SAT[/math] который кодирует [math]i[/math] символов, разрешимых логической схемой [math]C_i[/math]. Размер [math]|C_i|\le p(n)[/math]. Это означает что для фиксированного [math]n[/math] [math]\exists{}[/math] такая логическая схема [math]C_n[/math], что [math]\forall{}\varphi{} (\varphi{} \in{} SAT |\varphi{}|=n \Leftrightarrow C_n(\varphi{})=1)[/math]

Существует C_n для любого fi (для любого x fi(x)=0 <=>C_n(fi)=0).

Рассмотрим язык [math]L\in Pi_2[/math]. Это означает, что [math]x\in L \Leftrightarrow \forall{y} \exists{z}: \psi{(x,y,x)}[/math]

Рассмотрим [math]L_1 = {\lt x,y\gt |\exists{z}: \psi{(x,y,z)}}[/math]

[math]L_1 \in NP[/math] по определению [math]NP[/math]

[math]L={x|\forall{y} \lt x,y\gt \in{L_1}}[/math]

Нужно доказать что [math]L\in \Sigma_1[/math]

[math]L_1\in{} NP \Rightarrow L_1 \le{}_m SAT[/math] по карпу с помощью [math]f[/math], т.е. [math]L={x|\forall{y} f(\lt x,y\gt )\in{SAT}}[/math]

[math]f(\lt x,y\gt )\in{SAT}[/math] - это значит, что для некоторого набора формул выполняется для всего набора, если предположить, что [math]L={x|\forall{y} C_n(f(\lt x,y\gt ))=1}[/math]

Но надо откуда-то взять этот набор. Можно его угадать, используя квантор существует. Добавим его. Так как [math]NP \in{} P/poly[/math] то </tex>L={x|\exists{C_n}: C_n решает SAT и \forall{y} C_n(f(<x,y>))=1}</tex>

Что означает [math]C_n[/math] решает [math]SAT[/math]? Нужно переписать с квантором для любого. [math]C_n[/math] решает [math]SAT[/math] [math]\Leftrightarrow[/math] [math]\forall{\varphi} \forall{x} (fi(x)=1 \Rightarrow C_n(fi)=1)[/math]

Воспользуемся самосведением [math]SAT[/math]: [math]L={x|\exists{C1,C2,..,Cn} - набор логических схем для SAT и\forall{y} C_n(f(\lt x,y\gt ))=1}[/math]

Внутри будем проверять используемый набор для любого fi (С_|fi|(fi)=0 => для любого x fi(x)=0) (C_|fi|(fi)=1 => fi|_x1=0 \in SAT или fi|_x1=1 \in SAT) Если C решает SAT то все хорошо, если нет то зафиксируем формулу на которой не решает. Если выдаст 0 а должна выдать 1 то первое не удолветворяет, если наоборот то обе не удовлетворяет.

для любого fi |fi|=m для любого x_1...любого x_m если C_m(fi)=0 => fi(x_1)=0 иначе C_m-1(fi|_x_1=0)=0 => fi|_x1=0(x2)=0 C_m-1(fi|_x1=1)=0 =>fi|_x1=0(x2)=0 C_m-1(fi|x1=0) галочка C_m-1(fi|x1=1)

Получаем что [math]L\in \Sigma_2[/math] Теорема доказана