Hay muchos problemas en los que sabemos de un algoritmo aleatorio eficiente, y no sabemos de ningún algoritmo determinista que podamos probar que sea eficiente. Sin embargo, esto puede reflejar deficiencias en nuestra capacidad para probar cosas sobre la complejidad en lugar de cualquier diferencia fundamental.
Según su comentario , parece que quería preguntar si existe algún problema cuando existe un algoritmo aleatorio eficiente, y podemos demostrar que no existe un algoritmo determinista de eficiencia comparable. No sé de tal problema.
De hecho, hay motivos razonables para sospechar que es probable que tales problemas no existan. Heurísticamente, la existencia de tal problema probablemente significaría que la criptografía segura es imposible. Eso parece un resultado bastante inverosímil.
¿Cuál es la conexión, preguntas? Bueno, considere cualquier algoritmo aleatorio que resuelva algún problema de manera eficiente. Se basa en monedas aleatorias: bits aleatorios obtenidos de una fuente aleatoria verdadera. Ahora supongamos que tomamos un generador pseudoaleatorio de calidad criptográfica y reemplazamos la fuente aleatoria verdadera con la salida del generador pseudoaleatorio. Llame al algoritmo resultante A ' . Tenga en cuenta que A ' es un algoritmo determinista y su tiempo de ejecución es aproximadamente la misma que una .AA′A′A
Además, si el PRNG criptográfico es seguro, heurísticamente deberíamos esperar que sea un buen algoritmo si A es:A′A
Por ejemplo, si es un algoritmo de Las Vegas (siempre genera la respuesta correcta y termina rápidamente con alta probabilidad), entonces A ' será un algoritmo determinista bastante bueno (siempre genera la respuesta correcta y termina rápidamente para la mayoría de las entradas) .AA′
Como otro ejemplo, si es un algoritmo de Monte Carlo (tiempo de ejecución determinista, y genera la respuesta correcta con una probabilidad de al menos 1 - ε ), entonces A será un algoritmo determinista bastante bueno (tiempo de ejecución determinista, y genera la respuesta correcta) en una fracción 1 - ε de todas las entradas).A′1−εA1−ε
Por lo tanto, si el PRNG criptográfico es seguro y hay un algoritmo aleatorio eficiente, obtienes un algoritmo determinista que es bastante bueno. Ahora hay muchas construcciones de PRNG criptográficos que se garantiza que son seguras si se cumplen ciertos supuestos criptográficos. En la práctica, esos supuestos criptográficos se creen ampliamente: al menos, el comercio y las transacciones seguras dependen de que sean ciertos, por lo que aparentemente estamos dispuestos a apostar grandes sumas de dinero a que existe una criptografía segura. La única forma en que esta transformación puede fallar es si el PRNG criptográfico no existe, lo que a su vez implica que la criptografía segura es imposible. Si bien no tenemos ninguna prueba de que este no sea el caso, parece un resultado poco probable.
Detalles de la construcción: así es como funciona . En la entrada x , se deriva una semilla para el PRNG criptográfica como una función de x (por ejemplo, por hashing x ), y luego simula A ( x ) , utilizando la salida del PRNG criptográfica como las monedas para A . Por ejemplo, una instanciación específica sería establecer k = SHA256 ( x ) , luego usar k como semilla para AES256 en modo contador, o alguna otra PRNG criptográfica. Podemos probar las declaraciones anteriores bajo el modelo de oráculo aleatorio.A′xxxA(x)Ak=SHA256(x)k
Si no está satisfecho con la idea de que pueda generar resultados incorrectos en una pequeña fracción de las entradas, eso puede abordarse. Si repites A ' varias veces y tomas un voto mayoritario, la probabilidad de error disminuye exponencialmente rápido en el número de iteraciones. Por lo tanto, iterando un número constante de veces, se puede obtener la probabilidad de error ε para estar por debajo de 1 / 2 256 , lo que significa las posibilidades de que se ejecuta a través de una entrada xA′A′ε1/2256xdonde el algoritmo genera la respuesta incorrecta son muy pequeñas (menos que las posibilidades de ser alcanzado por un rayo varias veces seguidas). Además, con la construcción que di anteriormente, las posibilidades de que un adversario pueda encontrar una entrada donde A ' da la respuesta incorrecta pueden hacerse muy pequeñas, ya que eso requeriría romper la seguridad del hash SHA256. (Técnicamente, esto requiere que el modelo de oráculo aleatorio se justifique, por lo que significa que A debe ser elegido para ser "independiente" de SHA256 y no codificar en él los cálculos relacionados con SHA256, pero casi todos los algoritmos del mundo real satisfarán ese requisito .)xA′A
Si desea una base teórica más fuerte, se puede iterar Θ ( n ) veces, y obtener la probabilidad de error a estar por debajo de 1 / 2 n , donde n es la longitud de la entrada x . Ahora la fracción de n entradas -bit donde A ' da una respuesta incorrecta es estrictamente menor que 1 / 2 n . Pero solo hay 2 n posibles entradas de n bits, y en cada una A es correcta o incorrecta, por lo que se deduce que no hay entrada donde A 'A Θ(n)1/2nnxnA′1/2n2nnAA′es incorrecto: es correcto en todas las entradas, y esto se cumple incondicionalmente. Si A corre en el tiempo t ( n ) , entonces A ' corre en el tiempo Θ ( n ⋅ t ( n ) ) , entonces A ' es un poco más lento que A pero no demasiado lento. Este es el contenido de la prueba de Adleman de que BPP está contenido en P / poli. Para fines prácticos, esto probablemente sea exagerado, pero si le gustan las pruebas limpias que evitan los supuestos criptográficos o si lo aborda desde la perspectiva de un teórico, entonces puede que le guste más esta versión.A′At(n)A′Θ(n⋅t(n))A′A
Para obtener más detalles sobre las últimas consideraciones teóricas y problemas adicionales en los que conocemos un algoritmo aleatorio eficiente pero no conocemos ningún algoritmo determinista que podamos probar que sea eficiente, consulte /cstheory//q/31195 / 5038
En resumen: para cualquier problema en el que conocemos un algoritmo aleatorio eficiente, también conocemos un algoritmo determinista que probablemente sea eficiente en la práctica, pero en la actualidad no sabemos cómo demostrar que es eficiente. Una posible interpretación es que simplemente no somos muy buenos para probar cosas sobre algoritmos.