Материал из Викиконспекты
Определение: |
[math]\mathrm{ZPP}[/math] (от zero-error probabilistic polynomial) — множество языков [math]L[/math], для которых [math]\exists p \forall x[/math]:
- [math]\operatorname{P}(p(x) \ne [x \in L]) = 0[/math];
- [math]\operatorname{E}[\operatorname{T}(p, x)] = poly(|x|)[/math].
|
[math]\mathrm{ZPP}[/math] — сложностный класс, такой что программы, удовлетворяющие его ограничениям, не могут делать ошибок, но работают за полиномиальное время только в среднем случае.
Напомним, что математическое ожидание является усреднением по вероятностным лентам, а не по входу [math]x[/math].
Для данного класса существует и другое определение. Ниже мы покажем, что оба определения эквивалентны.
Определение: |
[math]\mathrm{ZPP}_1[/math] — множество языков [math]L[/math], для которых [math]\exists p \forall x[/math]:
- [math]p(x) \in \{0, 1, ?\}[/math];
- [math]p(x) \ne \enskip? \Rightarrow p(x) = [x \in L][/math];
- [math]\operatorname{P}(p(x) = \enskip?) \le 1/2[/math];
- [math]\forall r \operatorname{T}(p, x) \le poly(|x|).[/math]
|
Утверждение: |
[math]\mathrm{ZPP} = \mathrm{ZPP}_1[/math]. |
[math]\triangleright[/math] |
1. [math]\mathrm{ZPP} \subset \mathrm{ZPP}_1[/math].
Пусть [math]X[/math] — случайная величина, равная времени работы программы [math]p[/math] для [math]\mathrm{ZPP}[/math], [math]X \gt 0[/math]. Запишем неравенство Маркова:
[math]\operatorname{P}(X \gt k \operatorname{E}[X]) \le 1/k[/math].
Подставим [math]k = 2[/math]. Тогда, если запустить программу [math]p[/math] для [math]\mathrm{ZPP}[/math] с ограничением по времени [math]2E[X][/math], она не успеет завершиться с вероятностью, не превышающей [math]1/2[/math]. Опишем программу [math]q[/math] для [math]\mathrm{ZPP}_1[/math]. Она будет возвращать [math]?[/math], если [math]p[/math] не успеет завершиться, а иначе — результат работы программы [math]p[/math]. Заметим, что [math]q[/math] работает полиномиальное время, так как [math]E[X][/math] ограничено некоторым полиномом по определению класса [math]\mathrm{ZPP}[/math].
2. [math]\mathrm{ZPP_1} \subset \mathrm{ZPP}[/math].
Будем запускать программу [math]p[/math] для [math]\mathrm{ZPP_1}[/math], пока не получим ответ, отличный от [math]?[/math]. Математическое ожидание количества запусков [math]p[/math] не превышает [math]\sum\limits_{k = 0}^\infty \frac{k}{2^k} = 2[/math]. Значит, новая программа будет в среднем работать за полиномиальное время, что и требуется для класса [math]\mathrm{ZPP}[/math]. |
[math]\triangleleft[/math] |
Литература