Материал из Викиконспекты
								
												
				Определения
| Определение: | 
| [math] PSIZE [/math] — класс языков, вычислимых семейством логических схем [math] \{C_n\}_{n\gt 0} [/math] полиномиального размера с n входами и одним выходом, то есть: [math]PSIZE=\{L | \forall n [/math] [math] \exists C_n [/math]: [math] |C_n| \leqslant p(n)[/math], где [math] p [/math] — полином;Input [math] (C_n) = n [/math];Output [math] (C_n) = 1 [/math];[math]x \in L \iff C_{|x|}(x) = 1 \}[/math].
 | 
| Определение: | 
| Пусть C — сложностный класс, f — функция. Тогда [math] C/f = \{L| [/math] существуют [math] a_0, a_1, .. , a_n, .. [/math] — подсказки, программа p, удовлетворяющая ограничениям C: [math]|a_i| \leqslant f(i) [/math];[math] x \in L \iff p(x, a_{|x|})=1 \}[/math].
 | 
| Определение: | 
| [math] P/poly = \bigcup\limits_{p \in poly} P/p [/math]. | 
Теоремы
| Теорема: | 
| [math] P \subset P/poly [/math]. | 
| Доказательство: | 
| [math]\triangleright[/math] | 
| [math] L \in P \Rightarrow \exists [/math] машина Тьюринга m такая, что [math] L(m)=L [/math]. Составим логическую схему для m, как мы сделали в теореме Кука. Отсюда следует, что [math] P \subset P/poly [/math]. | 
| [math]\triangleleft[/math] | 
| Теорема: | 
| [math] PSIZE \subset P/poly[/math]. | 
| Доказательство: | 
| [math]\triangleright[/math] | 
| Пусть [math] L \in PSIZE [/math], x — входная строка. Тогда для L существуют логические схемы [math] C_0, C_1, .., C_n, .. [/math]. В качестве подсказки для x предоставим логическую схему [math] C_{|x|} [/math]. Программа p получает на вход x и [math] C_{|x|} [/math] и возвращает значение, вычисляемое [math] C_{|x|} [/math] для входа x. Запишем программу
 [math] p(x, C_{|x|}) [/math]:
    return [math]C_{|x|}(x) [/math]
Логическая схема [math] C_{|x|} [/math] имеет полиномиальный размер. Оба условия для [math] P/poly [/math] выполнены, [math] PSIZE \subset P/poly[/math]. | 
| [math]\triangleleft[/math] | 
| Теорема: | 
| [math] P/poly \subset PSIZE[/math]. | 
| Доказательство: | 
| [math]\triangleright[/math] | 
| Пусть [math] L \in P/poly [/math], x — входная строка. Тогда для L существуют подсказки [math] a_0, a_1, .. , a_n, .. [/math]. Программа p по входу x и подсказке [math] a_{|x|} [/math] определяет принадлежность x языку L. Зафиксируем длину входной строки x как n. Запишем p в виде логической схемы [math] C_m [/math] ( [math] m = n + |a_n| [/math]), которая принимает на вход слова длины n и подсказку [math] a_n [/math]. Зашьем подсказку в самой схеме. Получим схему [math] C_n [/math], принимающую слова длины n и определяющую их принадлежность языку L. | 
| [math]\triangleleft[/math] |