Теорема Лаутемана — различия между версиями
Assaron (обсуждение | вклад) м (→Доказательство) |
Assaron (обсуждение | вклад) м (→Доказательство) |
||
Строка 6: | Строка 6: | ||
Из того, что класс <tex>\mathrm{BPP}</tex> замкнут относительно дополнения и <tex>\mathrm{co}\Sigma_2 = \Pi_2</tex> следует, что достаточно доказать включение <tex>\mathrm{BPP} \subset \Sigma_2</tex>. | Из того, что класс <tex>\mathrm{BPP}</tex> замкнут относительно дополнения и <tex>\mathrm{co}\Sigma_2 = \Pi_2</tex> следует, что достаточно доказать включение <tex>\mathrm{BPP} \subset \Sigma_2</tex>. | ||
− | <tex>\mathrm{BPP}</tex> можно определить | + | <tex>\mathrm{BPP}</tex> можно определить как множество таких языков <tex>L</tex>, что <tex>x \in L \Leftrightarrow \exists</tex> «много» вероятностных лент <tex>y: R(x,y)</tex>. <tex>\Sigma_2</tex> определяется как множество <tex>\{ L \mid x \in L \Leftrightarrow \exists y \forall z R(x, y, z)\}</tex>. Таким образом, необходимо уметь записывать <tex>\exists</tex> «много» с помощью кванторов <tex>\exists\forall</tex>. |
− | Рассмотрим язык <tex>G</tex> всех слов длины <tex>k</tex> над алфавитом <tex>\{0, 1\}</tex> | + | Рассмотрим язык <tex>G</tex> всех слов длины <tex>k</tex> над алфавитом <tex>\{0, 1\}</tex> для некоторого <tex>k</tex>, значение которого будет получено позже. Определим операцию <tex>\oplus</tex> над словами из этого языка как побитовое исключающее или. |
− | Назовем <tex>X</tex>, содержащееся в <tex>G</tex> большим, если существует набор <tex>g_1, g_2, \dots g_k</tex> такой, что <tex>\bigcup_{i=1}^{k} g_i \oplus X = G</tex>. | + | Назовем <tex>X</tex>, содержащееся в <tex>G</tex>, большим, если существует набор <tex>g_1, g_2, \dots g_k</tex> такой, что <tex>\bigcup_{i=1}^{k} g_i \oplus X = G</tex>. |
− | Если <tex>k|X| < |G|</tex>, то <tex>X</tex> | + | Если <tex>k|X| < |G|</tex>, то <tex>X</tex> точно не является большим. Найдем достаточное условие, при котором <tex>X</tex> большой. |
Воспользуемся утверждением, что если вероятность <tex>P(x \in A) > 0</tex>, то существует <tex>x</tex> из <tex>A</tex>. Для этого | Воспользуемся утверждением, что если вероятность <tex>P(x \in A) > 0</tex>, то существует <tex>x</tex> из <tex>A</tex>. Для этого | ||
Строка 18: | Строка 18: | ||
Для некотрого <tex>y \in G</tex>: | Для некотрого <tex>y \in G</tex>: | ||
− | * <tex>P(y \in g_i \oplus X) = P(y \oplus g_i \in X) = \frac{|X|}{|G|}</tex> | + | * <tex>P(y \in g_i \oplus X) = P(y \oplus g_i \in X) = \frac{|X|}{|G|}</tex>; |
− | * <tex>P(y \not \in g_i \oplus X) = 1 - \frac{|X|}{|G|}</tex> | + | * <tex>P(y \not \in g_i \oplus X) = 1 - \frac{|X|}{|G|}</tex>; |
− | * <tex>P(\bigwedge_{i=1}^{k} y \not \in g_i \oplus X) = \left(1 - \frac{|X|}{|G|}\right)^k</tex> | + | * <tex>P(\bigwedge_{i=1}^{k} y \not \in g_i \oplus X) = \left(1 - \frac{|X|}{|G|}\right)^k</tex>; |
− | * <tex>P(\exists y \in G \bigwedge_{i=1}^{k} y \not \in g_i \oplus X) = |G|\left(1 - \frac{|X|}{|G|}\right)^k</tex> | + | * <tex>P(\exists y \in G \bigwedge_{i=1}^{k} y \not \in g_i \oplus X) = |G|\left(1 - \frac{|X|}{|G|}\right)^k</tex>. |
Если <tex>|G|\left(1 - \frac{|X|}{|G|}\right)^k < 1</tex>, то существует набор <tex>\{g_i\}</tex>, что для любого <tex>y</tex> <tex>\bigwedge_{i=1}^{k} y \not \in g_i \oplus X</tex>, а из этого следует, что <tex>X</tex> большой. | Если <tex>|G|\left(1 - \frac{|X|}{|G|}\right)^k < 1</tex>, то существует набор <tex>\{g_i\}</tex>, что для любого <tex>y</tex> <tex>\bigwedge_{i=1}^{k} y \not \in g_i \oplus X</tex>, а из этого следует, что <tex>X</tex> большой. | ||
− | Рассмотрим язык <tex>L \in \mathrm{BPP}</tex>. Не уменьшая общности, можем считать, <tex>p(|x|)</tex> шагов и вероятность ошибки не превосходит | + | Рассмотрим язык <tex>L \in \mathrm{BPP}</tex>. Не уменьшая общности, можем считать, что программа <tex>M</tex>, распознающая этот язык, завершается за <tex>p(|x|)</tex> шагов и вероятность ошибки не превосходит |
<tex>\frac{1}{3p(|x|)}</tex>, это следует из того, что если запускать программу несколько раз, то время работы растет линейно, а вероятность ошибки | <tex>\frac{1}{3p(|x|)}</tex>, это следует из того, что если запускать программу несколько раз, то время работы растет линейно, а вероятность ошибки | ||
− | экспоненциально уменьшается | + | экспоненциально уменьшается. |
Зафиксируем <tex>x</tex>. Возьмем <tex>k = p(|x|)</tex>. Рассмотрим множество начал длины <tex>k</tex> вероятностных лент <tex>X</tex>, на которых | Зафиксируем <tex>x</tex>. Возьмем <tex>k = p(|x|)</tex>. Рассмотрим множество начал длины <tex>k</tex> вероятностных лент <tex>X</tex>, на которых | ||
Строка 33: | Строка 33: | ||
Из того, что вероятность ошибки не превосходит <tex>\frac1{3k}</tex>, следует: | Из того, что вероятность ошибки не превосходит <tex>\frac1{3k}</tex>, следует: | ||
− | * <tex>x \in L \rightarrow \frac{|X|}{|G|} \geqslant 1 - \frac1{3k}</tex> | + | * <tex>x \in L \rightarrow \frac{|X|}{|G|} \geqslant 1 - \frac1{3k}</tex>; |
− | * <tex>x \not \in L \rightarrow \frac{|X|}{|G|} \leqslant \frac1{3k}</tex> | + | * <tex>x \not \in L \rightarrow \frac{|X|}{|G|} \leqslant \frac1{3k}</tex>. |
Если <tex>x \in L</tex>, то: | Если <tex>x \in L</tex>, то: |
Версия 14:47, 12 апреля 2010
Формулировка
Утверждение теоремы Лаутемана (Sipser–Lautemann theorem или Sipser–Gács–Lautemann theorem) состоит в том, что класс BPP содержится в классах и полиномиальной иерархии.
Доказательство
Из того, что класс
замкнут относительно дополнения и следует, что достаточно доказать включение .можно определить как множество таких языков , что «много» вероятностных лент . определяется как множество . Таким образом, необходимо уметь записывать «много» с помощью кванторов .
Рассмотрим язык
всех слов длины над алфавитом для некоторого , значение которого будет получено позже. Определим операцию над словами из этого языка как побитовое исключающее или.Назовем
, содержащееся в , большим, если существует набор такой, что .Если
, то точно не является большим. Найдем достаточное условие, при котором большой.Воспользуемся утверждением, что если вероятность
, то существует из . Для этого выберем случайно набор .Для некотрого
:- ;
- ;
- ;
- .
Если
, то существует набор , что для любого , а из этого следует, что большой.Рассмотрим язык
. Не уменьшая общности, можем считать, что программа , распознающая этот язык, завершается за шагов и вероятность ошибки не превосходит , это следует из того, что если запускать программу несколько раз, то время работы растет линейно, а вероятность ошибки экспоненциально уменьшается.Зафиксируем
. Возьмем . Рассмотрим множество начал длины вероятностных лент , на которых машина выдает единицу, то есть .Из того, что вероятность ошибки не превосходит
, следует:- ;
- .
Если
, то:- ;
- ;
- , что влечет за собой то, что большой.
Если
, то , а значит не является большим.Таким образом,
, то есть , а значит , и , что и требовалось доказать.