Изменения

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

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

544 байта добавлено, 16:24, 31 мая 2012
Нет описания правки
{{Определение
|definition=
<tex> \mathrm{PSIZE } </tex> {{---}} класс языков, вычислимых разрешимых семейством [[Реализация_булевой_функции_схемой_из_функциональных_элементов|логических схем]] <tex> \{C_n\}_{n>0} </tex> полиномиального размера с n входами и одним выходом, то есть: <tex>\mathrm{PSIZE} =\{L | \forall n </tex> <tex> \exists C_n </tex>:
#<tex> |C_n| \leqslant p(n)</tex>, где <tex> p </tex> {{---}} полином;
#Input <tex> (C_n) = n </tex>;
{{Определение
|definition=
Пусть <tex> \mathrm{C } </tex> {{---}} сложностный класс, <tex> \mathrm{f } </tex> {{---}} функция. Тогда <tex> \mathrm{C/f } = \{L| </tex> существуют <tex> a_0, a_1, .. , a_n, .. </tex> {{---}} подсказки, и программа <tex> p</tex>, удовлетворяющая ограничениям <tex> \mathrm{C} </tex>:#<tex>|a_i| \leqslant \mathrm{f}(i) </tex>;
#<tex> x \in L \iff p(x, a_{|x|})=1 \}</tex>.
}}
{{Определение
|definition=
<tex> \mathrm{P/poly } = \bigcup\limits_{p \in poly} \mathrm{P/p } </tex>.
}}
{{Теорема
|statement=
<tex> \mathrm{P } \subset \mathrm{PSIZE } </tex>.
|proof=
Пусть <tex> L \in \mathrm{P } </tex>. Тогда существует машина Тьюринга m<tex> M </tex>, распознающая язык <tex> L</tex>. Составим логическую схему для m<tex> M </tex>, как мы сделали в [[Примеры_NP-полных_языков._Теорема_Кука|теореме Кука]], ее размеры ограничены полиномом, она допускает только слова из языка. Отсюда следует, что <tex> \mathrm{P } \subset \mathrm{PSIZE } </tex>.
}}
{{Теорема
|statement=
<tex> \mathrm{PSIZE } \subset \mathrm{P/poly} </tex>.
|proof=
Пусть <tex> L \in \mathrm{PSIZE } </tex>, <tex> x </tex> {{---}} входная строка. Тогда для <tex> L </tex> существуют логические схемы <tex> C_0, C_1, .., C_n, .. </tex>. В качестве подсказки для x предоставим логическую схему <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>.
}}
{{Теорема
|statement=
<tex> \mathrm{P/poly } \subset \mathrm{PSIZE} </tex>.
|proof=
Пусть <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>.
}}
[[Категория: Теория сложности]]
271
правка

Навигация