Класс ZPP — различия между версиями
| Строка 1: | Строка 1: | ||
| − | |||
| − | |||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
Версия 22:57, 4 июня 2012
| Определение: |
(от zero-error probabilistic polynomial) — множество языков , для которых :
|
— сложностный класс, такой что программы, удовлетворяющие его ограничениям, не могут делать ошибок, но работают за полиномиальное время только в среднем случае.
Напомним, что математическое ожидание является усреднением по вероятностным лентам, а не по входу .
| Теорема: | ||
. | ||
| Доказательство: | ||
|
Утверждение является очевидным, так как программы, удовлетворяющие ограничениям , также удовлетворяют ограничениям класса . Покажем, что . Для этого определим вспомогательный класс .
1. Сначала докажем, что . 1) . Пусть — случайная величина, равная времени работы программы для , . Запишем неравенство Маркова: . Подставим . Тогда, если запустить программу для с ограничением по времени , она не успеет завершиться с вероятностью, не превышающей . Опишем программу для . Она будет возвращать , если не успеет завершиться, а иначе — результат работы программы . Заметим, что работает полиномиальное время, так как ограничено некоторым полиномом по определению класса . 2) . Будем запускать программу для , пока не получим ответ, отличный от . Математическое ожидание количества запусков не превышает . Значит, новая программа будет в среднем работать за полиномиальное время, что и требуется для класса . 2. Теперь покажем, что . 1) . Достаточно вместо возвращать . 2) . Достаточно вместо возвращать . 3) . Пусть программа удовлетворяет ограничениям и ошибается на словах из языка с вероятностью не более , а программа удовлетворяет ограничениям и ошибается на словах не из языка с аналогичной вероятностью. Построим программу для : (x) if (x) = 0 return 0 if (x) = 1 return 1 return ?Вероятность вывести есть . | ||