Схемная сложность и класс P/poly — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Теоремы)
Строка 33: Строка 33:
 
{{Теорема
 
{{Теорема
 
|statement=
 
|statement=
PSIZE <tex> \subset P/poly</tex>.
+
<tex> PSIZE \subset P/poly</tex>.
 
|proof=
 
|proof=
<tex> L \in </tex> схемная сложность полином. Тогда <tex> \exists C_0, C_1, .., C_n, .. </tex>. Запишем программу
+
Пусть <tex> L \in PSIZE </tex>, x {{---}} входная строка. Тогда существуют логические схемы <tex> C_0, C_1, .., C_n, .. </tex>. В качестве подсказки для x предоставим логическую схему <tex> C_{|x|} </tex>. Программа p получает на вход x и <tex> C_{|x|} </tex> и возвращает значение, которое вычисляет <tex> C_{|x|} </tex> для входа x. Запишем программу
 
  <tex> p(x, C_{|x|}) </tex>:
 
  <tex> p(x, C_{|x|}) </tex>:
 
     '''return''' <tex>C_{|x|}(x) </tex>
 
     '''return''' <tex>C_{|x|}(x) </tex>
  
Теорема выполняется.
+
Логическая схема <tex> C_{|x|} </tex> имеет полиномиальный. Оба условия для <tex> P/poly </tex> выполнены, <tex> PSIZE \in P/poly</tex>.
 
}}
 
}}
  
 
{{Теорема
 
{{Теорема
 
|statement=
 
|statement=
<tex> P/poly \subset </tex> схемная сложность полином.
+
<tex> P/poly \subset PSIZE</tex>.
 
|proof=
 
|proof=
 
Пусть <tex> L \in P/poly </tex>. Тогда существуют <tex> a_0, a_1, .. , a_n, .. </tex> {{---}} подсказки. Зафиксируем n. Числу соответствует логическая схема <tex> C_n </tex>. Запишем программу p в виде логической схемы, которая принимает на вход слово длины n и подсказку <tex> a_n </tex>, за счет чего распознаваться будут только слова из языка. Зашьем подсказку в самой схеме, теперь она принимает только слова длины n и определяет их принадлежность языку.     
 
Пусть <tex> L \in P/poly </tex>. Тогда существуют <tex> a_0, a_1, .. , a_n, .. </tex> {{---}} подсказки. Зафиксируем n. Числу соответствует логическая схема <tex> C_n </tex>. Запишем программу p в виде логической схемы, которая принимает на вход слово длины n и подсказку <tex> a_n </tex>, за счет чего распознаваться будут только слова из языка. Зашьем подсказку в самой схеме, теперь она принимает только слова длины n и определяет их принадлежность языку.     
 
}}
 
}}

Версия 01:17, 17 мая 2012

Определения

Определение:
[math] PSIZE [/math] — класс языков, вычислимых семейством логических схем [math] \{C_n\}_{n\gt 0} [/math] полиномиального размера с n входами и одним выходом, то есть: [math]PSIZE=\{L | \forall n [/math] [math] \exists C_n [/math]:
  1. [math] |C_n| \leqslant p(n)[/math], где [math] p [/math] — полином;
  2. Input [math] (C_n) = n [/math];
  3. Output [math] (C_n) = 1 [/math];
  4. [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:
  1. [math]|a_i| \leqslant f(i) [/math];
  2. [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 — входная строка. Тогда существуют логические схемы [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 \in P/poly[/math].
[math]\triangleleft[/math]
Теорема:
[math] P/poly \subset PSIZE[/math].
Доказательство:
[math]\triangleright[/math]
Пусть [math] L \in P/poly [/math]. Тогда существуют [math] a_0, a_1, .. , a_n, .. [/math] — подсказки. Зафиксируем n. Числу соответствует логическая схема [math] C_n [/math]. Запишем программу p в виде логической схемы, которая принимает на вход слово длины n и подсказку [math] a_n [/math], за счет чего распознаваться будут только слова из языка. Зашьем подсказку в самой схеме, теперь она принимает только слова длины n и определяет их принадлежность языку.
[math]\triangleleft[/math]