Вероятностные вычисления. Вероятностная машина Тьюринга — различия между версиями
(→Соотношение вероятностных классов) |
|||
Строка 71: | Строка 71: | ||
Покажем, что <tex>\mathrm{PP} \subset \mathrm{PS}</tex>. Пусть <tex>p</tex> — разрешающая программа для языка <tex>L \in \mathrm{PP}</tex>. Она используют не более чем полиномиальное количество вероятностных бит, так как сама работает за полиномиальное время. Тогда программа для <tex>\mathrm{PS}</tex> будет перебирать все участки вероятностных лент нужной полиномиальной длины и запускать на них <tex>p</tex>. Ответом будет <tex>0</tex> или <tex>1</tex> в зависимости от того, каких ответов <tex>p</tex> оказалось больше. | Покажем, что <tex>\mathrm{PP} \subset \mathrm{PS}</tex>. Пусть <tex>p</tex> — разрешающая программа для языка <tex>L \in \mathrm{PP}</tex>. Она используют не более чем полиномиальное количество вероятностных бит, так как сама работает за полиномиальное время. Тогда программа для <tex>\mathrm{PS}</tex> будет перебирать все участки вероятностных лент нужной полиномиальной длины и запускать на них <tex>p</tex>. Ответом будет <tex>0</tex> или <tex>1</tex> в зависимости от того, каких ответов <tex>p</tex> оказалось больше. | ||
<br> | <br> | ||
− | Теперь докажем, что <tex>\mathrm{NP} \subset \mathrm{PP}</tex>. Приведем программу <tex>q</tex> с ограничениями класса <tex>PP</tex>, которая разрешает <tex>L \in \mathrm{NP}</tex>. Пусть функция ''infair_coin''() возвращает единицу с вероятностью <tex>1/2 - \varepsilon</tex>, где <tex>\varepsilon</tex> мы определим позже, и ноль с вероятностью <tex>1/2 + \varepsilon</tex>. Пусть также <tex>V</tex> — верификатор сертификатов для <tex>L</tex>. Тогда <tex>q</tex> будет выглядеть следующим образом: | + | Теперь докажем, что <tex>\mathrm{NP} \subset \mathrm{PP}</tex>. Приведем программу <tex>q</tex> с ограничениями класса <tex>\mathrm{PP}</tex>, которая разрешает <tex>L \in \mathrm{NP}</tex>. Пусть функция ''infair_coin''() моделирует нечестную монету, а именно возвращает единицу с вероятностью <tex>1/2 - \varepsilon</tex>, где <tex>\varepsilon</tex> мы определим позже, и ноль с вероятностью <tex>1/2 + \varepsilon</tex>. Пусть также <tex>V</tex> — верификатор сертификатов для <tex>L</tex>. Тогда <tex>q</tex> будет выглядеть следующим образом: |
q(x): | q(x): | ||
− | c <- случайный сертификат | + | c <- случайный сертификат (полиномиальной длины) |
− | return V(c) ? 1 : infair_coin() | + | '''return''' V(x, c) ? 1 : infair_coin() |
− | ... | + | Необходимо удовлетворить условию <tex>\operatorname{P}(p(x) = [x \in L]) > 1/2</tex>. |
+ | |||
+ | Пусть <tex>x \notin L</tex>. В этом случае <tex>V(x, c)</tex> вернет <tex>0</tex> и результат работы программы будет зависеть от нечестной монеты. Она вернет <tex>0</tex> с вероятностью <tex>1/2 + \varepsilon > 1/2</tex>. | ||
+ | |||
+ | Пусть <tex>x \in L</tex>. Тогда по формуле полной вероятности <tex>\operatorname{P}(p(x) = 1) = p_0 + (1 - p_0) (1/2 - \varepsilon)</tex>, где <tex>p_0</tex> — вероятность угадать правильный сертификат. Заметим, что поскольку все сертификаты имеют полиномиальную длину и существует хотя бы один правильный сертификат, <tex>p_0</tex> не более чем экспоненциально мала. Найдем <tex>\varepsilon</tex> из неравенства <tex>\operatorname{P}(p(x) = 1) > 1/2</tex>: | ||
+ | |||
+ | <tex>p_0 + 1/2 - \varepsilon - p_0 / 2 + p_0 \varepsilon > 1/2</tex>; | ||
+ | |||
+ | <tex>p_0 / 2 + (p_0 - 1)\varepsilon > 0</tex>; | ||
+ | |||
+ | <tex>\varepsilon < p_0 (1 - p_0) / 2</tex>. | ||
+ | |||
+ | Достаточно взять <tex>\varepsilon < p_0 / 4</tex>. Из сделанного выше замечания следует, что работу функции ''infair_coin''() можно смоделировать с помощью полиномиального количества вызовов ''random''(). Таким образом, мы построили программу <tex>q</tex>, удовлетворяющую ограничениям класса <tex>\mathrm{PP}</tex>. | ||
+ | |||
3. ... | 3. ... |
Версия 20:11, 30 мая 2012
Вероятностные вычисления — один из подходов в теории вычислительной сложности, в котором программы получают доступ к случайным битам. Мы рассмотрим классы сложности, для которых разрешающие программы могут делать односторонние, двусторонние ошибки или работать за полиномиальное время лишь в среднем случае.
Содержание
Основные определения
Определение: |
Вероятностная лента — бесконечная последовательность битов. Распределение битов на ленте подчиняется некоторому вероятностному закону (обычно считают, что вероятность нахождения | или в каждой позиции равна ).
Определение: |
Вероятностной машиной Тьюринга будем называть машину Тьюринга, имеющее доступ к вероятностной ленте. |
При интерпретации вероятностной машины Тьюринга как программы, обращение к очередному биту можно трактовать как вызов специальной функции random(). При этом также будем предполагать, что вероятностная лента является неявным аргументом для программы, т.е. , где — вероятностная лента.
В дальнейшем все вероятностные соображения будут относиться к пространству вероятностных лент , вход же программы будем считать фиксированным.
Здесь будет теорема о том, что утверждения, связанные с ВМТ, являются событиями.
Вероятностные сложностные классы
Определение: |
1) | (от zero-error probabilistic polynomial) — множество языков , для которых :
Определение: |
1) | (от randomized polynomial) — множество языков , для которых :
Заметим, что константа
в пункте 2 определения может быть заменена на любую другую из промежутка , поскольку требуемой вероятности можно добиться множественным запуском программы. Определим также как дополнение к .можно рассматривать как вероятностный аналог класса , предполагая, что вероятность угадать сертификат в случае его существования не менее .
Определение: |
1) | (от bounded probabilistic polynomial) — множество языков , для которых :
Аналогично сделанному выше замечанию, константу
можно заменить на любое число из промежутка . Замена константы на сделало бы данный класс равным .
Определение: |
1) | (от bounded probabilistic polynomial) — множество языков , для которых :
Соотношение вероятностных классов
Теорема: |
1.
2. 3. |
Доказательство: |
1. Утверждение q(x): c <- случайный сертификат (полиномиальной длины) return V(x, c) ? 1 : infair_coin() Необходимо удовлетворить условию .Пусть . В этом случае вернет и результат работы программы будет зависеть от нечестной монеты. Она вернет с вероятностью .Пусть . Тогда по формуле полной вероятности , где — вероятность угадать правильный сертификат. Заметим, что поскольку все сертификаты имеют полиномиальную длину и существует хотя бы один правильный сертификат, не более чем экспоненциально мала. Найдем из неравенства :; ; . Достаточно взять . Из сделанного выше замечания следует, что работу функции infair_coin() можно смоделировать с помощью полиномиального количества вызовов random(). Таким образом, мы построили программу , удовлетворяющую ограничениям класса .
|