Myślę, że pytanie, które tu zadano, jest z grubsza „ czy istnieje sens, w którym możemy zastąpić sekwencję losowych bitów w algorytmie bitami narysowanymi deterministycznie z odpowiednio długiego losowego ciągu Kołmogorowa? ”. To jest przynajmniej pytanie, które spróbuję odpowiedź! (Krótka odpowiedź brzmi „Tak, ale tylko wtedy, gdy najpierw zwiększysz prawdopodobieństwo błędu”)
Tak...
Z pewnością możemy tu coś powiedzieć. Niech będzie jakimś językiem i niech będzie algorytmem, który przyjmuje jako dane wejściowe i ciąg losowy (rozkład równomierny w ) st . Innymi słowy, jest algorytmem, który z prawdopodobieństwem błądzi co najwyżej .LAxr∈Uf(|x|){0,1}f(|x|)Pr[A(x,r)=L(x)]>1−ϵ(x)Aϵ(⋅)
Zauważ teraz, że jeśli daje złą odpowiedź na tj. , daje to nam pewne sposoby opisania , w szczególności możemy opisać to jako -ty ciąg, który powoduje błąd naAby to zrobić, po prostu tworzymy maszynę, która ma na stałe zakodowane , , i trochę , i po prostu wylicza opcje z aż znajdzie ty wybór taki, że .A(x,r)A(x,r)≠L(x)riAx.xAib=1⟺x∈Lr′{0,1}f(|x|)ir′A(x,r′)≠b
Teraz, gdy wiemy, że możemy wykorzystać zły wybór losowego ciągu znaków do opisu, zwróćmy uwagę na pewne warunki, które wystarczą, aby zamienić nasz opis na kompresję. Aby opisać , potrzebujemy wystarczającej liczby bitów, aby opisać , , , a następnie kod dla naszej procedury (kod i procedura, którą opisaliśmy), podając jako opis długościrrxibA
|x|+|i|+O(1)=|x|+log2(2f(|x|)ϵ(x))+O(1)=|x|+f(|x|)−log(1/ϵ(x))+O(1).
Przypomnij sobie, że jest długością , więc jest to kompresja if na przykład, gdy .rf(|x|)r
log(1/ϵ(x))=|x|+ω(1),
ϵ(x)=1/22|x|
Na koniec zauważ, że gdyby był losowym ciągiem Kołmogorowa, to nie moglibyśmy mieć takiej kompresji, tak długo, jak prawdopodobieństwo błędu jest wystarczająco małe, losowy ciąg Kołmogorowa zamiast sekwencji losowych bitów spowoduje, że odpowie poprawnie!rAA
Zauważ, że jedyną rzeczą, którą wykorzystujemy w jest to, że prawdopodobieństwo błędu jest niewielkie. Nie obchodzi nas, czy ma wyjątkowo długi czas działania, czy ma jeden lub dwustronny błąd.AAA
Wracając do pytania o (lub lub ), mówi to, że dopóki zwiększamy prawdopodobieństwo błędu naszych algorytmów, możemy używać losowych ciągów Kołmogorowa zamiast ich losowych bitów.RPcoRPBPP
... Ale tylko jeśli najpierw wzmocnimy.
Kolejne pytanie może brzmieć „czy mogę to zrobić bez zwiększania prawdopodobieństwa błędu?” Rozważmy następujący algorytm który decyduje i ma prawdopodobieństwo błędu .A{0,1}∗1/2n
Na wejściu :x
- Wygeneruj ciągr∈{0,1}n
- Jeśli , odrzuć.r=x
- Zaakceptować.
Zauważ, że dla każdego wyboru istnieje pewien wybór taki, że błędnie na , a mianowicie wybór który jest , więc nie możemy zastąpić losowej sekwencji bitów używanych przez ciągiem losowym Kołmogorowa bez wzmocnienia to prawdopodobieństwo błędu!rxAxr xA
Uwaga na temat źródła: nie jestem pewna, czy którykolwiek z tych tekstów jest nowatorski, ale w piśmie napisałem pierwszy argument do mojego egzaminu kwalifikacyjnego, który ostatecznie będzie dostępny online po zakończeniu przeglądu.