Saya pikir pertanyaan yang diajukan di sini kira-kira " apakah ada perasaan di mana kita dapat mengganti urutan bit acak dalam suatu algoritma dengan bit yang diambil secara deterministik dari string acak Kolmogorov yang panjang? " Ini setidaknya pertanyaan yang akan saya coba untuk menjawab! (Jawaban singkatnya adalah "Ya, tetapi hanya jika Anda memperbesar probabilitas kesalahan terlebih dahulu")
Iya...
Kita tentu bisa mengatakan sesuatu di sini. Biarkan menjadi beberapa bahasa dan biarkan menjadi algoritma yang mengambil input dan string acak (distribusi seragam lebih dari ) st . Dengan kata lain, adalah algoritma yang keliru dengan probabilitas paling banyak .A x r ∈ U f ( | x | ) { 0 , 1 } f ( | x | ) Pr [ A ( x , r ) = L ( x ) ] > 1 - ϵ ( x ) A ϵ ( ⋅ )L.SEBUAHxr ∈ Uf( | x|){0,1}f( | x | )Pr [ A ( x , r ) = L ( x ) ] > 1 - ϵ (x)Aϵ (⋅)
Perhatikan sekarang bahwa jika memberikan jawaban yang salah pada yaitu, , ini memberi kita beberapa cara untuk menggambarkan , khususnya, kita dapat menggambarkannya sebagai -th string yang menyebabkan salah padaUntuk melakukan ini, kita cukup membuat mesin yang memiliki kode , , , dan sedikit , dan hanya menyebutkan pilihan dari sampai menemukan pilihan ke- dari sedemikian rupa sehingga .( x , r ) A ( x , r ) ≠ L ( x ) r i A x .A( x , r)A ( x , r ) ≠ L ( x)rsayaSEBUAHx.A i b = 1xSEBUAHsayar ′ { 0 , 1 } f ( | x | ) i r ′ A ( x , r ′ ) ≠ bb=1⟺x ∈ Lr′{ 0 , 1 }f( | x | )sayar′A ( x , r′) ≠ b
Jadi sekarang kita tahu bahwa kita dapat memanfaatkan menjadi pilihan string acak yang buruk menjadi deskripsi, mari kita amati beberapa kondisi yang cukup untuk mengubah deskripsi menjadi kompresi. Untuk menggambarkan , kita memerlukan bit yang cukup untuk menggambarkan , , , dan kemudian kode untuk prosedur kita (kode untuk dan rutin yang kita uraikan), memberikan sebagai deskripsi panjang | x | + | saya | + O ( 1 ) = | x | + log 2 ( 2 fr x i b ArrxsayabSEBUAH
| x | + | saya | +O(1)= | x | + log2( 2f( | x | )ϵ ( x ) ) + O ( 1 ) = | x | + f( | x | ) - log( 1 / ϵ ( x ) ) + O ( 1 ) .
Ingat bahwa adalah panjang f ( | x | ) , jadi ini adalah kompresi r if log ( 1 / ϵ ( x ) ) = | x | + ω ( 1 ) , misalnya, ketika .rf( | x | )r
catatan( 1 / ϵ ( x ) ) = | x | + ω ( 1 ) ,
ε ( x ) = 1 / 22 | x |
Akhirnya, amati bahwa jika adalah string acak Kolmogorov, maka kita tidak dapat memiliki kompresi seperti itu, sehingga selama probabilitas kesalahan cukup kecil, string acak Kolmogorov menggantikan urutan bit acak akan menyebabkan menjawab benar!A ArSEBUAHSEBUAH
Perhatikan bahwa satu-satunya hal yang kami manfaatkan tentang adalah probabilitas kesalahannya kecil. Kami tidak peduli jika memiliki waktu yang sangat lama atau jika memiliki kesalahan satu atau dua sisi.A ASEBUAHSEBUAHSEBUAH
Membawa ini kembali ke pertanyaan (atau atau ), ini mengatakan bahwa selama kita memperbesar probabilitas kesalahan dari algoritma kita, kita dapat menggunakan string acak Kolmogorov sebagai ganti bit acak mereka.c o R P B P PR PcoRPBPP
... Tetapi hanya jika kita memperkuat dulu.
Pertanyaan tindak lanjut mungkin adalah "bisakah saya melakukan ini tanpa memperbesar kemungkinan kesalahan?" Pertimbangkan algoritma berikut yang menentukan dan memiliki probabilitas kesalahan .{ 0 , 1 } * 1 / 2 nA{0,1}∗1/2n
Pada input :x
- Hasilkan stringr∈{0,1}n
- Jika , tolak.r=x
- Menerima.
rxAxr xA
Catatan tentang sumber: Saya tidak yakin apakah ini novel, tapi saya memasukkan argumen pertama dalam langganan saya untuk ujian kualifikasi saya yang akhirnya akan tersedia online setelah saya selesai merevisinya.