Изменения

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

Схемная сложность и класс P/poly

5058 байт добавлено, 15:31, 5 июня 2012
Теоремы
== Определения ==
 
{{Определение
|definition=
<tex>P\mathrm{PSIZE} </polytex> {{---}} класс языков, разрешимых семейством [[Реализация_булевой_функции_схемой_из_функциональных_элементов|логических схем]] <tex> \{C_n\}_{n>0} </tex> полиномиального размера с n входами и одним выходом. <tex> \mathrm{PSIZE} =\{L \bigm| \forall n </tex> существует логическая схема <tex> \exists C_n </tex> с : #<tex> |C_n| \leqslant p(n )</tex> входами и одним выходом такая, что: где <tex> p </tex> {{---}} полином;#размеры Число входов в схеме <tex> C_n \leqslant p(</tex> равно <tex> n)</tex>;#Каждая схема <tex> C_n </tex> имеет один выход;#<tex>x \in L \iff Leftrightarrow C_{|x|}(x) = 1 \}</tex>. }}
{{Определение
|definition=
Пусть <tex> \mathrm{C } </tex> {{---}} сложностный класс, <tex> f </tex> {{---}} функция. Тогда <tex> \mathrm{C}/f = \{L\bigm| </tex> существуют подсказки <tex> a_0, a_1, .. \ldots , a_n, .. , \ldots </tex> и программа <tex> p</tex>, удовлетворяющая ограничениям <tex> \mathrm{C} </tex>:
#<tex>|a_i| \leqslant f(i) </tex>;
#<tex> x \in L \iff Leftrightarrow p(x, a_{|x|})=1 \}</tex>.
}}
{{Определение
|definition=
<tex> C\mathrm{P/F poly} = \bigcup\limits_{f p \in Fpoly} \mathrm{P} C/f p </tex>.
}}
== Теоремы == {{Теорема|statement=<tex> \mathrm{P} \subset \mathrm{PSIZE} </tex>.|proof=Пусть <tex> L \in \mathrm{P} </tex>. Тогда существует машина Тьюринга <tex> M </tex>, распознающая язык <tex> L </tex>. Составим логическую схему для <tex> M </tex>, как мы сделали в [[Примеры_NP-полных_языков._Теорема_Кука|теореме Кука]], ее размеры ограничены полиномом, она допускает только слова из языка. Отсюда следует, что <tex> \mathrm{P} \subset \mathrm{ОпределениеPSIZE} </tex>.}} {{Теорема|definitionstatement=<tex> \mathrm{PSIZE} = \mathrm{P/poly } </tex>.|proof= Докажем, что <tex> \bigcupmathrm{PSIZE} \subset \limits_p mathrm{P/poly} </tex>. <br>Пусть <tex> L \in \mathrm{PSIZE} </tex>, <tex> x </tex> {{---}} входная строка. Тогда для <tex> L </tex> существуют логические схемы <tex> C_0, C_1, .., C_n, .. </tex>. В качестве подсказки для <tex> x </tex> предоставим логическую схему <tex> C_{|x|} </tex>. Программа <tex> p </tex>получает на вход <tex> x </tex> и <tex> C_{|x|} </tex> и возвращает значение, где вычисляемое <tex> C_{|x|} </tex> для входа <tex> x </tex>. Запишем программу <tex> p (x, C_{|x|}) </tex>: '''return''' <tex>C_{|x|}(x) </tex> Логическая схема <tex> C_{|x|} </tex> имеет полиномиальный размер. Оба условия для <tex> \mathrm{P/poly} </tex> выполнены, <tex> \mathrm{PSIZE} \subset \mathrm{P/poly} </tex>. <br><br>Докажем, что <tex> \mathrm{P/poly} \subset \mathrm{PSIZE} </tex>. <br>Пусть <tex> L \in \mathrm{P/poly} </tex>, <tex> x </tex> {{---}} полиномвходная строка. Тогда для <tex> L </tex> существуют подсказки <tex> a_0, a_1, .. , a_n, .. </tex>. Программа <tex> p </tex> по входу <tex> x </tex> и подсказке <tex> a_{|x|} </tex> определяет принадлежность <tex> x </tex> языку <tex> L </tex>. Зафиксируем длину входной строки <tex> x </tex> как <tex> n </tex>. Теперь запишем <tex> p </tex> в виде логической схемы <tex> C_m </tex> ( <tex> m = n + |a_n| </tex>), которая принимает на вход слова длины <tex> n </tex> и подсказку <tex> a_n </tex>. Полученная схема будет полиномиального размера. Зашьем подсказку в самой схеме, то есть впишем в нее значения битов подсказки. Получим схему <tex> C_n </tex> полиномиального размера, принимающую слова длины <tex> n </tex> и определяющую их принадлежность языку <tex> L </tex>. Такие схемы можно получить для любой длины входа. Значит, <tex> \mathrm{P/poly} \subset \mathrm{PSIZE} </tex>.
}}
{{Лемма|statement=Любой унарный язык принадлежит <tex> \mathrm{P/poly} </tex>.|proof= Теоремы ==Рассмотрим произвольный унарный язык <tex> L \subset \{1\}^* </tex>. Подсказкой для слова <tex> x </tex> будет единица, если слово длины <tex> |x| </tex> есть в <tex> L </tex>, иначе ноль. Машина Тьюринга получит на вход слово <tex> x </tex> и подсказку для слов длины <tex> |x| </tex>. Теперь произведем проверку, что <tex> x </tex> действительно из нашего унарного алфавита. Если это не так, то сразу же не допустим слово, иначе выведем значение подсказки. <br>Таким образом, любой унарный язык принадлежит <tex> \mathrm{P/poly} </tex>. }}
{{ТеоремаЛемма
|statement=
<tex> P \subset mathrm{P/poly } </tex>содержит неразрешимые языки.
|proof=
Рассмотрим произвольный неразрешимый язык <tex> L \in P subset \Rightarrow {0, 1\exists }^* </tex> Машина Тьюринга m такая, что . Построим язык <tex> A </tex> следующим образом: <tex> L(m)A =\{ 1^n | </tex> бинарное представление <tex> n </tex> принадлежит <tex> L \} </tex>. В [[Примеры_NP-полных_языков._Теорема_Кука|теореме Кука]] мы показалиУнарный язык <tex> A \in \mathrm{P/poly} </tex>, но то же время <tex> A </tex> неразрешим, что для машины Тьюринга иначе можно составить логическую схемубыло бы разрешить <tex> L </tex>. Отсюда следует<br>Получается, что <tex> P \subset mathrm{P/poly } </tex>содержит неразрешимые языки.
}}
[[Категория: Теория сложности]]
Анонимный участник

Навигация