Creo que la pregunta que se hace aquí es más o menos " ¿hay algún sentido en el que podamos reemplazar la secuencia de bits aleatorios en un algoritmo con bits extraídos de manera determinista de una cadena aleatoria de Kolmogorov adecuadamente larga? " Esta es al menos la pregunta que intentaré ¡responder! (La respuesta corta es "Sí, pero solo si amplifica primero la probabilidad de error")
Si...
Ciertamente podemos decir algo aquí. Sea un lenguaje y sea A un algoritmo que tome como entrada xy una cadena aleatoria r ∈ U f ( | x | ) (la distribución uniforme sobre { 0 , 1 } f ( | x | ) ) st Pr [ A ( x , r ) = L ( x ) ] > 1 - ϵ ( x )LAxr∈Uf(|x|){0,1}f(|x|)Pr [ A ( x , r ) = L ( x )]>1−ϵ(x). En otras palabras, es un algoritmo que erra con probabilidad como máximo ϵ ( ⋅ ) .Aϵ(⋅)
Observe ahora que si da la respuesta incorrecta en ( x , r ) , es decir, A ( x , r ) ≠ L ( x ) , esto nos da algunos medios para describir r , en particular, podemos describirlo como el i -ésimo cadena que hace que A erre en x . Para hacer esto, simplemente hacemos la máquina que tiene codificados x , A , i , y un bit b = 1A(x,r)A ( x , r )≠L(x)riAx.xAi , y simplemente enumera las opciones de r ′ desde { 0 , 1 } f ( | x | ) hasta que encuentre la i -ésima opción de r ′ tal que A ( x , r ′ ) ≠ b .b=1⟺x ∈ Lr′{ 0 , 1 }F( | x | )yor′A ( x , r′) ≠ b
Entonces, ahora que sabemos que podemos aprovechar la mala elección de una cadena aleatoria en una descripción, observemos algunas condiciones que son suficientes para convertir nuestra descripción de en una compresión. Para describir r , requerimos suficientes bits para describir x , i , b , y luego el código para nuestro procedimiento (el código para A y la rutina que describimos), dando una descripción de la longitud | x | + | yo | + O ( 1 ) = | x | + log 2 ( 2 frrXyosiUNA
El | x | + | yo | +O(1)= | x | + log2( 2F( | x | )ϵ ( x ) ) + O ( 1 ) = | x |+ f( | x | ) - registro( 1 / ϵ ( x ) ) + O ( 1 ).
Recuerde que es longitud f ( | x | ) , por lo que esta es una compresión de r si log ( 1 / ϵ ( x ) ) = | x | + Ω ( 1 ) , por ejemplo, cuando ε ( x ) = 1 / 2 2 | x | .rF( | x | )r
Iniciar sesión( 1 / ϵ ( x ) ) = | x | + ω ( 1 ) ,
ε ( x ) = 1 / 22 | x |
Finalmente, observe que si fuera una cadena aleatoria de Kolmogorov, entonces no podríamos tener tal compresión, por lo que mientras la probabilidad de error de A sea suficientemente pequeña, una cadena aleatoria de Kolmogorov en lugar de la secuencia de bits aleatorios hará que A responda ¡correctamente!rUNAUNA
Tenga en cuenta que lo único que aprovechamos sobre es que su probabilidad de error es pequeña. No nos importa si A tiene un tiempo de ejecución extremadamente largo o si A tiene un error de uno o dos lados.UNAUNAUNA
Llevar esto a la cuestión de (o C O R P o B P P ), esto dice que mientras que amplifican la probabilidad de error de nuestros algoritmos, podemos utilizar cadenas aleatorias Kolmogorov en lugar de sus bits aleatorios.R Pc o R PB PPAG
... Pero solo si amplificamos primero.
Una pregunta de seguimiento puede ser "¿puedo hacer esto sin amplificar la probabilidad de error?" Considere el algoritmo siguiente que decide { 0 , 1 } * y tiene probabilidad de error de 1 / 2 n .UNA{ 0 , 1 }∗1 / 2norte
En la entrada :X
- r ∈ { 0 , 1 }norte
- r = x
- Aceptar.
rXUNAXr XUNA
Una nota sobre la fuente: no estoy seguro de si algo de esto es novedoso, pero incluí el primer argumento en mi escrito para mi examen de calificación que finalmente estará disponible en línea después de que termine de revisarlo.