Ich denke, die Frage, die hier gestellt wird, lautet ungefähr: " Gibt es einen Sinn, in dem wir die Folge von Zufallsbits in einem Algorithmus durch Bits ersetzen können, die deterministisch aus einer entsprechend langen Kolmogorov-Zufallszeichenfolge gezogen wurden? " Dies ist zumindest die Frage, die ich versuchen werde Antworten! (Die kurze Antwort lautet "Ja, aber nur, wenn Sie zuerst die Fehlerwahrscheinlichkeit erhöhen")
Ja...
Wir können hier sicherlich etwas sagen. Sei eine Sprache und sei ein Algorithmus, der als Eingabe und eine zufällige Zeichenkette (die gleichmäßige Verteilung über ) st . Mit anderen Worten, ist ein Algorithmus, der höchstens mit Wahrscheinlichkeit fehlerhaft ist .A x r ∈ U f ( | x | ) { 0 , 1 } f ( | x | ) Pr [ A ( x , r ) = L ( x ) ] > 1 - ϵ ( x ) A ϵ ( ⋅ )LAxr∈Uf(|x|){0,1}f(|x|)Pr[A(x,r)=L(x)]>1−ϵ(x)Aϵ(⋅)
Beachten Sie nun, dass wenn die falsche Antwort auf dh , dies uns ein Mittel zur Beschreibung von , insbesondere können wir es als -te Zeichenfolge, die bewirkt, dass auf fehlerhaft istDazu machen wir einfach die Maschine, die , , und ein Bit fest codiert hat , und einfach die Auswahl von aus bis es die te Wahl von so dass .( x , r ) A ( x , r ) ≤ L ( x ) r i A x . x A i b = 1A(x,r)A(x,r)≠L(x)riAx.xAir ' { 0 , 1 } f ( | x | ) i r ' A ( x , r ' ) ≠ bb=1⟺x∈Lr′{0,1}f(|x|)ir′A(x,r′)≠b
Nachdem wir nun wissen, dass wir eine schlechte Wahl einer zufälligen Zeichenfolge in eine Beschreibung umsetzen können, wollen wir einige Bedingungen beobachten, die ausreichen, um unsere Beschreibung von in eine Komprimierung umzuwandeln. Um zu beschreiben , benötigen wir genügend Bits, um , , und dann den Code für unsere Prozedur (den Code für und die von uns beschriebene Routine) zu beschreiben, wobei die Länger x i b A | x | + | i | + O ( 1 ) = | x | + log 2 ( 2 f ( | x | ) ϵ ( x ) ) + O ( 1 ) = | x | + f ( | x | ) - log ( 1 / ϵ (rrxibA
|x|+|i|+O(1)=|x|+log2(2f(|x|)ϵ(x))+O(1)=|x|+f(|x|)−log(1/ϵ(x))+O(1).
Denken Sie daran, dass die Länge ist. Dies ist also eine Komprimierung von wenn z. B. wenn .f ( | x | ) r log ( 1 / ϵ ( x ) ) = | x | + Ω ( 1 ) , ε ( x ) = 1 / 2 2 | x |rf(|x|)r
log(1/ϵ(x))=|x|+ω(1),
ϵ(x)=1/22|x|
Beachten Sie schließlich, dass wenn eine Kolmogorov-Zufallszeichenfolge wäre, wir keine solche Komprimierung haben könnten. Solange die Fehlerwahrscheinlichkeit von ausreichend klein ist, bewirkt eine Kolmogorov-Zufallszeichenfolge anstelle der Folge von Zufallsbits, dass antwortet korrekt!A A.rAA
Beachten Sie, dass das einzige, was wir an , die geringe Fehlerwahrscheinlichkeit ist. Es ist uns egal, ob eine extrem lange Laufzeit hat oder ob einen ein- oder zweiseitigen Fehler hat.A A.AAA
Wenn wir dies auf die Frage von (oder oder ) , heißt es, dass wir, solange wir die Fehlerwahrscheinlichkeit unserer Algorithmen , Kolmogorov-Zufallszeichenfolgen anstelle ihrer Zufallsbits verwenden können.c o R P B P P.RPcoRPBPP
... aber nur wenn wir zuerst verstärken.
Eine Folgefrage könnte lauten: "Kann ich dies tun, ohne die Fehlerwahrscheinlichkeit zu erhöhen?" Betrachten Sie den folgenden Algorithmus der und eine Fehlerwahrscheinlichkeit von 1/2 .{ 0 , 1 } * 1 / 2 nA{0,1}∗1/2n
Bei Eingabe :x
- Generieren Sie eine Zeichenfolger∈{0,1}n
- Wenn , ablehnen.r=x
- Akzeptieren.
Beachten Sie, dass es für jede Wahl von eine Auswahl von so dass auf fehlerhaft ist , nämlich die Wahl von , die , so dass wir die zufällige Folge von Bits, die von verwendet werden, nicht durch eine Kolmogorov-Zufallszeichenfolge ersetzen können, ohne sie zu verstärken es ist Fehlerwahrscheinlichkeit!x A x r x A.rxAxr xA
Ein Hinweis zur Quelle: Ich bin mir nicht sicher, ob dies neu ist, aber ich habe das erste Argument in meine Beschreibung für meine Eignungsprüfung aufgenommen, die nach Abschluss der Überarbeitung online verfügbar sein wird.