Материал из Викиконспекты
|
|
Строка 35: |
Строка 35: |
| Если слово <tex>x \notin L</tex>, то <tex>m_{\mathrm{RP_{weak}}}(x)</tex> всегда возвращает <tex>0</tex>. Тогда <tex>P(m_{\mathrm{RP}}(x) = 0) = 1</tex>, при <tex>x \notin L</tex>. Если хотя бы один вызов программы <tex>m_{\mathrm{RP_{weak}}}(x)</tex> вернёт <tex>1</tex>, то слово <tex>x \in L</tex>. Вероятность ошибки программы <tex>m_{\mathrm{RP}}</tex> равна <tex>(1-\frac{1}{q(|x|)})^k</tex>, то есть программа <tex>m_{\mathrm{RP_{weak}}}</tex> ошиблась на всех вызовах. <tex>k</tex> надо выбрать таким, что вероятность ошибки программы <tex>m_{\mathrm{RP}}</tex> при <tex>x \in L</tex> была меньше <tex>\frac {1}{2}</tex>. Получается неравенство <tex>(1-\frac{1}{q(|x|)})^k < \frac{1}{2}</tex>. Логарифмируя, получаем: <tex>k\ ln(1-\frac{1}{q(|x|)}) < ln(\frac{1}{2})</tex>. Разложив логарифм в ряд Тейлора, получаем <tex>k(-\frac{1}{q(|x|)} + o(\frac{1}{q(|x|)})) < -ln(2)</tex>. Отсюда <tex>k > q(|x|)ln(2)</tex>.<br/> | | Если слово <tex>x \notin L</tex>, то <tex>m_{\mathrm{RP_{weak}}}(x)</tex> всегда возвращает <tex>0</tex>. Тогда <tex>P(m_{\mathrm{RP}}(x) = 0) = 1</tex>, при <tex>x \notin L</tex>. Если хотя бы один вызов программы <tex>m_{\mathrm{RP_{weak}}}(x)</tex> вернёт <tex>1</tex>, то слово <tex>x \in L</tex>. Вероятность ошибки программы <tex>m_{\mathrm{RP}}</tex> равна <tex>(1-\frac{1}{q(|x|)})^k</tex>, то есть программа <tex>m_{\mathrm{RP_{weak}}}</tex> ошиблась на всех вызовах. <tex>k</tex> надо выбрать таким, что вероятность ошибки программы <tex>m_{\mathrm{RP}}</tex> при <tex>x \in L</tex> была меньше <tex>\frac {1}{2}</tex>. Получается неравенство <tex>(1-\frac{1}{q(|x|)})^k < \frac{1}{2}</tex>. Логарифмируя, получаем: <tex>k\ ln(1-\frac{1}{q(|x|)}) < ln(\frac{1}{2})</tex>. Разложив логарифм в ряд Тейлора, получаем <tex>k(-\frac{1}{q(|x|)} + o(\frac{1}{q(|x|)})) < -ln(2)</tex>. Отсюда <tex>k > q(|x|)ln(2)</tex>.<br/> |
| <tex>\mathrm{RP} \subset \mathrm{RP_{strong}}\colon</tex><br/> | | <tex>\mathrm{RP} \subset \mathrm{RP_{strong}}\colon</tex><br/> |
− | Доказательство аналогично предыдущему пункту. В этом случае <tex>k</tex> необходимо выбрать таким, что должно выполняться неравенство <tex>(\frac{1}{2})^k < \frac{1}{q(|x|)}</tex>. Прологарифмировав и сократив на <tex>ln(\frac{1}{2})</tex>, получаем, что <tex>k > q(|x|)</tex>. | + | Доказательство аналогично предыдущему пункту. В этом случае <tex>k</tex> необходимо выбрать таким, что должно выполняться неравенство <tex>(\frac{1}{2})^k < 1 - \frac{1}{2^{q(|x|)}} \Leftrightarrow k > -log_{2}(1-\frac{1}{2^{q(|x|)}})</tex>. Разложив в ряд Тейлора получаем, что <tex>-log_{2}(1-\frac{1}{2^{q(|x|)}}) = \frac{1}{ln(2)2^{q(|x|)}} = \frac{(1+q(|x|))^{ln(\frac{1}{2})}}{ln(2)} < \frac{1+q(|x|)}{ln(2)}</tex>. То есть <tex>k</tex> надо взять больше, чем <tex>\frac{1+q(|x|)}{ln(2)}</tex>. |
| }} | | }} |
| | | |
| == См. также == | | == См. также == |
| *[[Вероятностные вычисления. Вероятностная машина Тьюринга]] | | *[[Вероятностные вычисления. Вероятностная машина Тьюринга]] |
Версия 22:45, 23 мая 2012
Определения
Определение: |
Сложностный класс [math]\mathrm{RP}[/math] состоит из языков [math]L[/math] таких, что существует программа [math]m[/math], которая работает за полиномиальное время, и:
- [math]x \notin L \Rightarrow P(m(x) = 0) = 1[/math];
- [math]x \in L \Rightarrow P(m(x) = 1) \geq \frac{1}{2}[/math].
|
Определение: |
Сложностный класс [math]\mathrm{RP_{weak}}[/math] состоит из языков [math]L[/math] таких, что существует программа [math]m[/math], которая работает за полиномиальное время, и:
- [math]x \notin L \Rightarrow P(m(x) = 0) = 1[/math];
- [math]x \in L \Rightarrow P(m(x) = 1) \geq \frac{1}{q(|x|)}[/math], где [math]q(|x|)[/math] — некоторый полином, [math]q(|x|) \geq 1[/math].
|
Определение: |
Сложностный класс [math]\mathrm{RP_{strong}}[/math] состоит из языков [math]L[/math] таких, что существует программа [math]m[/math], которая работает за полиномиальное время, и:
- [math]x \notin L \Rightarrow P(m(x) = 0) = 1[/math];
- [math]x \in L \Rightarrow P(m(x) = 1) \geq 1 - \frac{1}{2^{q(|x|)}}[/math], где [math]q(|x|)[/math] — некоторый полином, [math]q(|x|) \geq 1[/math].
|
Теорема об эквивалентности определений
Теорема: |
[math]\mathrm{RP}=\mathrm{RP_{weak}}=\mathrm{RP_{strong}}[/math] |
Доказательство: |
[math]\triangleright[/math] |
[math]\mathrm{RP_{strong}} \subset \mathrm{RP}\colon[/math]
Рассмотрим язык [math]L \in \mathrm{RP_{strong}}[/math]. Этому языку соответсвует программа [math]m_{\mathrm{RP_{strong}}}[/math]. Для доказательства утверждения необходимо написать программу [math]m_{\mathrm{RP}}[/math], которая будет удолетворять ограничениям сложностного класса [math]\mathrm{RP}[/math]. В качестве программы [math]m_{\mathrm{RP}}[/math] можно взять программу [math]m_{\mathrm{RP_{strong}}}[/math], так как [math]1 - \frac{1}{2^p} \geq \frac{1}{2} \Leftrightarrow p \geq 1[/math]. То есть программа [math]m_{\mathrm{RP_{strong}}}[/math] удолетворяет ограничениям сложностного класса [math]\mathrm{RP}[/math].
[math]\mathrm{RP} \subset \mathrm{RP_{weak}}\colon[/math]
Доказательство такое же, как в предыдущем пункте.
[math]\mathrm{RP_{weak}} \subset \mathrm{RP}\colon[/math]
Рассмотрим язык [math]L \in \mathrm{RP_{weak}}[/math]. Этому языку соответсвует программа [math]m_{\mathrm{RP_{weak}}}[/math]. Для доказательства утверждения необходимо написать программу [math]m_{\mathrm{RP}}[/math], которая будет удолетворять ограничениям сложностного класса [math]\mathrm{RP}[/math].
[math]m_{\mathrm{RP}}(x)[/math]
for [math]i = 1 \ldots k[/math] // [math]k[/math] будет определено позже
if [math]m_{\mathrm{RP_{weak}}}(x)[/math]
then return [math]1[/math]
return [math]0[/math]
Если слово [math]x \notin L[/math], то [math]m_{\mathrm{RP_{weak}}}(x)[/math] всегда возвращает [math]0[/math]. Тогда [math]P(m_{\mathrm{RP}}(x) = 0) = 1[/math], при [math]x \notin L[/math]. Если хотя бы один вызов программы [math]m_{\mathrm{RP_{weak}}}(x)[/math] вернёт [math]1[/math], то слово [math]x \in L[/math]. Вероятность ошибки программы [math]m_{\mathrm{RP}}[/math] равна [math](1-\frac{1}{q(|x|)})^k[/math], то есть программа [math]m_{\mathrm{RP_{weak}}}[/math] ошиблась на всех вызовах. [math]k[/math] надо выбрать таким, что вероятность ошибки программы [math]m_{\mathrm{RP}}[/math] при [math]x \in L[/math] была меньше [math]\frac {1}{2}[/math]. Получается неравенство [math](1-\frac{1}{q(|x|)})^k \lt \frac{1}{2}[/math]. Логарифмируя, получаем: [math]k\ ln(1-\frac{1}{q(|x|)}) \lt ln(\frac{1}{2})[/math]. Разложив логарифм в ряд Тейлора, получаем [math]k(-\frac{1}{q(|x|)} + o(\frac{1}{q(|x|)})) \lt -ln(2)[/math]. Отсюда [math]k \gt q(|x|)ln(2)[/math].
[math]\mathrm{RP} \subset \mathrm{RP_{strong}}\colon[/math]
Доказательство аналогично предыдущему пункту. В этом случае [math]k[/math] необходимо выбрать таким, что должно выполняться неравенство [math](\frac{1}{2})^k \lt 1 - \frac{1}{2^{q(|x|)}} \Leftrightarrow k \gt -log_{2}(1-\frac{1}{2^{q(|x|)}})[/math]. Разложив в ряд Тейлора получаем, что [math]-log_{2}(1-\frac{1}{2^{q(|x|)}}) = \frac{1}{ln(2)2^{q(|x|)}} = \frac{(1+q(|x|))^{ln(\frac{1}{2})}}{ln(2)} \lt \frac{1+q(|x|)}{ln(2)}[/math]. То есть [math]k[/math] надо взять больше, чем [math]\frac{1+q(|x|)}{ln(2)}[/math]. |
[math]\triangleleft[/math] |
См. также