Eu acho que a pergunta que está sendo feita aqui é mais ou menos " existe um sentido no qual podemos substituir a sequência de bits aleatórios em um algoritmo por bits desenhados deterministicamente a partir de uma seqüência aleatória de Kolmogorov apropriadamente longa? " Essa é pelo menos a pergunta que tentarei responda! (A resposta curta é "Sim, mas somente se você amplificar a probabilidade de erro primeiro")
Sim...
Certamente podemos dizer algo aqui. Seja uma linguagem e seja um algoritmo que tome como entrada e uma sequência aleatória (a distribuição uniforme sobre ) st . Em outras palavras, é um algoritmo que erra com probabilidade no máximo .LAxr∈Uf(|x|){0,1}f(|x|)Pr[A(x,r)=L(x)]>1−ϵ(x)Aϵ(⋅)
Observe agora que, se fornece a resposta errada em , ou seja, , isso nos fornece alguns meios de descrever , em particular, podemos descrevê-la como -th string que faz com que erre emPara fazer isso, simplesmente criamos a máquina que possui , , um bit , e simplesmente enumera as opções de de até encontrar a ésima escolha de modo que .A(x,r)A(x,r)≠L(x)riAx.xAib=1⟺x∈Lr′{0,1}f(|x|)ir′A(x,r′)≠b
Portanto, agora que sabemos que podemos aproveitar uma má escolha de sequência aleatória em uma descrição, vamos observar algumas condições que são suficientes para transformar nossa descrição de em uma compactação. Para descrever , precisamos de bits suficientes para descrever , , o código do nosso procedimento (o código para e a rotina que descrevemos), fornecendo como descrição o comprimentorrxibA
|x|+|i|+O(1)=|x|+log2(2f(|x|)ϵ(x))+O(1)=|x|+f(|x|)−log(1/ϵ(x))+O(1).
Lembre-se de que é comprimento ; portanto, essa é uma compactação de se por exemplo, quando .rf(|x|)r
log(1/ϵ(x))=|x|+ω(1),
ϵ(x)=1/22|x|
Por fim, observe que se fosse uma sequência aleatória de Kolmogorov, não teríamos essa compactação, desde que a probabilidade de erro de seja suficientemente pequena, uma sequência aleatória de Kolmogorov no lugar da sequência de bits aleatórios fará com que responda corretamente!rAA
Observe que a única coisa que aproveitamos em é que sua probabilidade de erro é pequena. Não nos importamos se tiver um tempo de execução extremamente longo ou se tiver um ou dois erros.AAA
Trazendo isso de volta à questão de (ou ou ), isso diz que, desde que amplifiquemos a probabilidade de erro de nossos algoritmos, podemos usar cadeias aleatórias de Kolmogorov no lugar de seus bits aleatórios.RPcoRPBPP
... Mas somente se amplificarmos primeiro.
Uma pergunta de acompanhamento pode ser "posso fazer isso sem ampliar a probabilidade de erro?" Considere o seguinte algoritmo que decide e tem probabilidade de erro .A{0,1}∗1/2n
Na entrada :x
- Gere uma stringr∈{0,1}n
- Se , rejeite.r=x
- Aceitar.
Observe que, para cada escolha de , existe alguma opção de modo que erra em , ou seja, a escolha de que é , portanto, não podemos substituir a sequência aleatória de bits usada por por uma sequência aleatória de Kolmogorov sem amplificar é probabilidade de erro!rxAxr xA
Uma observação sobre a fonte: não tenho certeza se isso é novidade, mas incluí o primeiro argumento na redação do meu exame de qualificação, que estará disponível on-line depois que eu terminar de revisá-lo.