A resposta de Vor fornece a definição padrão. Deixe-me tentar explicar a diferença um pouco mais intuitivamente.
Seja um algoritmo de tempo polinomial probabilístico de erro limitado para uma linguagem L que responda corretamente com probabilidade pelo menosML. Sejaxp≥12+δx a entrada o tamanho da entrada.n
O que distingue uma arbitrária algoritmo de um B P P algoritmo é a diferença positiva entre a probabilidade de aceitar x ∈ G e a probabilidade de aceitação x ∉ L . PPBPPx∈Lx∉LO essencial de é que a diferença seja pelo menos n - O ( 1 ) . Vou tentar explicar por que essa distinção é significativa e nos permite considerar B P P como algoritmos eficientes (mesmo conjecturados como iguais a PBPPn−O(1)B P PP) enquanto é considerado ineficiente (na verdade, P P contém N P ). Tudo isso vem dessa lacuna.P PP PN P
Vamos começar olhando para mais cuidado.P P
Observe que, se um algoritmo usar no máximo bits aleatórios durante sua execução e a probabilidade de erro for menor que 2 - r ( n ) , a probabilidade de erro será realmente 0 , não haverá escolha de bits aleatórios que farão o algoritmo responda incorretamente.r ( n )2- r ( n )0 0
Além disso, um algoritmo com tempo de execução não pode usar mais que t ( n ) bits aleatórios, portanto, se o erro de um algoritmo probabilístico com pior tempo de execuçãot ( n )t ( n ) for melhor quet ( n )
Com um argumento semelhante, podemos mostrar que o caso em que a diferença entre a probabilidade de aceitar um e a probabilidade de aceitar um x ∉ L é muito pequena é semelhante ao caso em que não temos quase nenhuma diferença, como em P caso P.x ∈ Lx∉LPP
Vamos agora avançar para .BPP
Em algoritmos probabilísticos, podemos aumentar a probabilidade de responder corretamente. Digamos que desejamos aumentar a probabilidade de correção para para, digamos, probabilidade de erro ϵ = 2 - n (erro exponencialmente pequeno).1−ϵϵ=2−n
A idéia é simples: execute várias vezes e pegue a resposta da maioria.M
Quantas vezes devemos executar para obter a probabilidade de erro no máximo ϵ ? Θ ( δ - 1 lg ϵ ) vezes. A prova é dada na parte inferior desta resposta.MϵΘ(δ−1lgϵ)
Agora, vamos considerar que os algoritmos que estamos discutindo precisam ter tempo polinomial. Isso significa que não podemos executar mais do que polinomialmente muitas vezes. Em outras palavras, Θ ( δ - 1 ln ϵ ) = n O ( 1 ) , ou mais simplesmenteMΘ(δ−1lnϵ)=nO(1)
δ−1lgϵ=nO(1)
Essa relação categoriza os algoritmos probabilísticos de erro limitado em classes, dependendo de sua probabilidade de erro. Não existe diferença entre a probabilidade de erro ser sendo 2 - n ou uma constante positiva (isto é, não muda com n ) ouϵ2−nn. Podemos passar de um desses para os outros enquanto permanecemos dentro do tempo polinomial.12−nO(1)
No entanto, se é muito pequeno, digamos, 0 , 2 - n , ou mesmo n - ω ( 1 ) , então não temos uma maneira de aumentar a probabilidade de correção e reduzindo a probabilidade de erro suficientemente para entrar B P P .δ02−nn−ω(1)BPP
O ponto principal aqui é que, em , podemos reduzir eficientemente a probabilidade de erro exponencialmente, para termos quase certeza das respostas e é isso que nos leva a considerar essa classe de algoritmos como algoritmos eficientes. A probabilidade de erro pode ser reduzida tanto que uma falha de hardware é mais provável ou até um meteoro que cai no computador é mais provável do que cometer um erro pelo algoritmo probabilístico.BPP
Isso não é verdade para , não conhecemos nenhuma maneira de reduzir a probabilidade de erro e ficamos quase como se estivéssemos respondendo jogando uma moeda para obter a resposta (não somos completamente, as probabilidades não são metade e metade, mas está muito próximo dessa situação).PP
Esta secção fornece a prova de que a obtenção de probabilidade de erro quando começamos com um algoritmo com gap ( 1ϵdevemos executarMΘ(δ-1lgϵ)vezes.(12−δ,12+δ)M Θ(δ−1lgϵ)
Seja o algoritmo que executa M por k vezes e depois responde de acordo com a resposta da maioria. Por uma questão de simplicidade, vamos supor que k seja ímpar para que não tenhamos laços.NkMkk
Considere o caso em que . O caso x ∉ L é semelhante. Então
P r { M ( x ) aceita } = p ≥x∈Lx∉L
Para analisar a probabilidade de correção deNk, precisamos estimar a probabilidade que a maioria daskexecuções aceita.
Pr{M(x) accepts}=p≥12+δ
Nkk
Deixe- ser 1 se o i th prazo aceita e ser 0 se ele rejeita. Observe que cada execução é independente das outras, pois elas usam bits aleatórios independentes. Assim, X i s são variáveis aleatórias booleanas independentes, onde
E [ X i ] = P r { X i = 1 } = P r { M ( x ) aceita } = p ≥ 1Xii0Xi
E[Xi]=Pr{Xi=1}=Pr{M(x) accepts}=p≥12+δ
Seja . Precisamos estimar a probabilidade que a maioria aceita, ou seja, a probabilidade de que Y ≥ kY=Σki=1Xi .Y≥k2
Pr{Nk(x) accepts}=Pr{Y≥k2}
Como fazer isso? Podemos usar o limite de Chernoff, que indica a concentração de probabilidade próxima ao valor esperado. Para qualquer variável aleatória com valor esperado μ , temosZμ
Pr{|Z−μ|>αμ}<eα24μ
o que diz que a probabilidade de que esteja α µ longe do valor esperado µ diminui exponencialmente à medida que α aumenta. Vamos usá-lo para limitar a probabilidade de Y < kZαμμα .Y<k2
E[Y]=E[Σki=1Xi]=Σki=1E[Xi]=kp≥k2+kδ
Y<k2|Y−(k2+kδ)|>kδ que é suficiente. Nós temos
Pr{|Y−kp|>αkp}<e−α24kp
ααkp=kδα=δp≤2δ2δ+1.
Therefore we have
Pr{Y<k2}≤Pr{|Y−(k2+kδ)|>kδ}≤Pr{|Y−kp|>αkp}<e−α24kp
and if you do the calculations you will see that
α24kp≤δ24δ+2k=Θ(kδ)
we have
Pr{Y<k2}<e−Θ(kδ)
We want the error to be at most ϵ, so we want
e−Θ(kδ)≤ϵ
or in other words
Θ(δ−1lgϵ)≤k
One essential point here is that in the process we will use many more random bits and also the running time will increase, i.e. the worst-case running-time of Nk will be roughly k times the running-time of M.
Here the mid point of the gap was 12. But in general this doesn't need to be the case. We can adopt a similar method for other values by taking other fractions in place of majority for accepting.