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

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

Версия 16:24, 31 мая 2012

Определения

Определение:
[math] \mathrm{PSIZE} [/math] — класс языков, разрешимых семейством логических схем [math] \{C_n\}_{n\gt 0} [/math] полиномиального размера с n входами и одним выходом, то есть: [math] \mathrm{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].


Определение:
Пусть [math] \mathrm{C} [/math] — сложностный класс, [math] \mathrm{f} [/math] — функция. Тогда [math] \mathrm{C/f} = \{L| [/math] существуют [math] a_0, a_1, .. , a_n, .. [/math] — подсказки и программа [math] p [/math], удовлетворяющая ограничениям [math] \mathrm{C} [/math]:
  1. [math]|a_i| \leqslant \mathrm{f}(i) [/math];
  2. [math] x \in L \iff p(x, a_{|x|})=1 \}[/math].


Определение:
[math] \mathrm{P/poly} = \bigcup\limits_{p \in poly} \mathrm{P/p} [/math].


Теоремы

Теорема:
[math] \mathrm{P} \subset \mathrm{PSIZE} [/math].
Доказательство:
[math]\triangleright[/math]
Пусть [math] L \in \mathrm{P} [/math]. Тогда существует машина Тьюринга [math] M [/math], распознающая язык [math] L [/math]. Составим логическую схему для [math] M [/math], как мы сделали в теореме Кука, ее размеры ограничены полиномом, она допускает только слова из языка. Отсюда следует, что [math] \mathrm{P} \subset \mathrm{PSIZE} [/math].
[math]\triangleleft[/math]
Теорема:
[math] \mathrm{PSIZE} \subset \mathrm{P/poly} [/math].
Доказательство:
[math]\triangleright[/math]

Пусть [math] L \in \mathrm{PSIZE} [/math], [math] x [/math] — входная строка. Тогда для [math] L [/math] существуют логические схемы [math] C_0, C_1, .., C_n, .. [/math]. В качестве подсказки для x предоставим логическую схему [math] C_{|x|} [/math]. Программа [math] p [/math] получает на вход [math] x [/math] и [math] C_{|x|} [/math] и возвращает значение, вычисляемое [math] C_{|x|} [/math] для входа [math] x [/math]. Запишем программу

[math] p(x, C_{|x|}) [/math]:
    return [math]C_{|x|}(x) [/math]
Логическая схема [math] C_{|x|} [/math] имеет полиномиальный размер. Оба условия для [math] \mathrm{P/poly} [/math] выполнены, [math] \mathrm{PSIZE} \subset \mathrm{P/poly} [/math].
[math]\triangleleft[/math]
Теорема:
[math] \mathrm{P/poly} \subset \mathrm{PSIZE} [/math].
Доказательство:
[math]\triangleright[/math]
Пусть [math] L \in \mathrm{P/poly} [/math], [math] x [/math] — входная строка. Тогда для [math] L [/math] существуют подсказки [math] a_0, a_1, .. , a_n, .. [/math]. Программа [math] p [/math] по входу [math] x [/math] и подсказке [math] a_{|x|} [/math] определяет принадлежность [math] x [/math] языку [math] L [/math]. Зафиксируем длину входной строки [math] x [/math] как [math] n [/math]. Запишем [math] p [/math] в виде логической схемы [math] C_m [/math] ( [math] m = n + |a_n| [/math]), которая принимает на вход слова длины [math] n [/math] и подсказку [math] a_n [/math]. Полученная схема будет полиномиального размера. Зашьем подсказку в самой схеме, то есть впишем в нее значения битов подсказки. Получим схему [math] C_n [/math] полиномиального размера, принимающую слова длины [math] n [/math] и определяющую их принадлежность языку [math] L [/math]. Такие схемы можно получить для любой длины входа. Значит, [math] \mathrm{P/poly} \subset \mathrm{PSIZE} [/math].
[math]\triangleleft[/math]