Algoritmos Probabilísticos, Parte 4: Classes de Complexidade

Ricardo Araujo
3 min readNov 22, 2020

--

Algoritmos Probabilísticos são formalizados por Máquinas de Turing Probabilísticas. Uma Máquina de Turing Probabilística é uma Máquina de Turing Determinística, mas que possui acesso a uma fonte de aleatoriedade. A uso de um modelo de computação diferente leva a classes de complexidade próprias para Algoritmos Probabilísticos.

A classe PP (Probabilistic Polynomial Time), como o nome indica, é a equivalente da classe P para algoritmos probabilísticos: um problema pertence a classe PP se existe uma Máquina de Turing Probabilística que fornece uma solução para qualquer instância do problema em tempo polinomial com probabilidade de erro menor que 1/2 — isto é, se o algoritmo responder SIM, a resposta é NÃO com probabilidade menor que 1/2, e vice-versa. Esta probabilidade pode depender do tamanho da entrada.

Naturalmente, P ⊂ PP pois basta a Máquina de Turing Probabilística não utilizar a fonte de aleatoriedade para se tornar Determinística. NP também está em PP, pois é possível construir um algoritmo probabilístico que soluciona SAT (que sabemos ser NP-Completo). Isso não deve ser compreendido como “máquinas probabilísticas são mais capazes que não-determinísticas”, pois a classe PP exige muito pouco das soluções — basta que tenham uma probabilidade pouca coisa maior do que completamente aleatória de retornar uma decisão correta, seja para SIM ou NÃO. De fato, o algoritmo probabilístico para SAT exigiria uma quantidade de execuções exponenciais para obter algum tipo de resposta útil.

A classe BPP (Bounded-Error Probabilistic Polynomial Time) coloca limites mais estritos nos erros, de forma que se um problema pertence a classe BPP, então há uma solução eficaz na forma de um algoritmo probabilístico. Um problema pertence a BPP se a probabilidade de erro na resposta é no máximo 1/3 (este valor é arbitrário e pode ser alterado, desde que menor ou igual a 1/2). Esta probabilidade não pode depender do tamanho da entrada. Esta última exigência é a que distingue BPP da classe PP e permite que se reduza o erro exponencialmente executando o algoritmo múltiplas vezes.

Problemas em BPP possuem algoritmos de Monte Carlo eficientes para solucioná-los.

Sabe-se que P está contido em BPP, mas há problemas em BPP que não se sabe se estão em P. No entanto, acredita-se que P=BPP principalmente devido ao fato de ter-se encontrado ao longo dos anos algoritmos determinísticos eficientes para muitos problemas BPP. A relação entre BPP e NP não é bem conhecida, mas acredita-se que NP não está contida em BPP — do contrário, haveria algoritmos probabilísticos eficientes para solucionar problemas NP-Completos, mas nenhum é conhecido.

A classe RP (Randomized Polynomial Time) é um sub-conjunto da BPP. Um problema pertence a RP se existe uma Máquina de Turing Probabilística que executa em tempo polinomial e que (i) se a resposta para uma instância for NÃO, então o algoritmo sempre retorna NÃO; (ii) se a resposta for SIM, então o algoritmo retorna SIM com probabilidade de pelo menos 1/2 (e NÃO caso contrário). Isto é, a classe RP contém problemas que possuem algoritmos Monte Carlo com viés para NÃO.

Já a classe co-RP inverte a exigência, sempre retornando SIM quando a resposta for SIM, enquanto quando a resposta for NÃO a resposta possui uma probabilidade de estar errada. Os problemas em co-RP possuem algoritmos Monte Carlo com viés para SIM.

Tanto RP como co-RP estão contidos em BPP. P está contido na intersecção de RP e co-RP. Se for provado que BPP=P, então todas estas classes são a mesma.

Por fim, a classe ZPP (Zero-error Probabilistic Polynomial Time) contém problemas para os quais existe uma Máquina de Turing Probabilística que sempre retorna a solução correta em tempo médio polinomial. É, portanto, a classe de problemas para os quais existe um algoritmo Las Vegas que os soluciona.

ZPP é exatamente a interseção entre RP e co-RP. P está contido em ZPP e é possível que estas duas sejam iguais.

Conjectura-se que o gráfico abaixo representa a relação entre estas classes probabilísticas.

Diversos círculos representando diferentes classes de complexidade. O círculo representando a classe PP contém as classes BQP, que por sua vez contém a classe BPP. A classe BPp contém as classes RP, coRP, ZPP e P. A classe ZPP está na intersecção entre RP e coRP. A classe P está contida na classe ZPP.
A classe BQP será vista em outro momento. Fonte: Wikipedia.

Incluindo as classes P, NP, NPC e co-NP:

Círculos representando diferentes classes de complexidade. Semelhante à imagem anterior, mas inclui a classe P, NP, co-NP e NP-Completo. A classe NP inclui as classes RP, ZPP e P. A classe co-NP inclui as classes co-RP, ZPP e P. A classe NP-Completo está contida em NP e não possui intersecções com outras classes aqui representadas.
Fonte

--

--

Ricardo Araujo

Computer Science professor at UFPel. Machine Learning and Artificial Intelligence practitioner and researcher.