Saya bergabung dengan diskusi agak terlambat, tetapi saya akan mencoba menjawab beberapa pertanyaan yang diajukan sebelumnya.
Pertama, seperti yang diamati oleh Aaron Sterling, penting untuk terlebih dahulu memutuskan apa yang kita maksud dengan angka "benar-benar acak", dan terutama jika kita melihat sesuatu dari kompleksitas komputasi atau perspektif komputabilitas.
Akan tetapi, saya berpendapat bahwa dalam teori kompleksitas, orang-orang terutama tertarik pada pseudo -randomness, dan pseudo -random generator, yaitu fungsi dari string ke string sehingga distribusi urutan output tidak dapat dipisahkan dari distribusi seragam oleh beberapa proses yang efisien (di mana beberapa arti dari efisien dapat dipertimbangkan, misalnya polytime computable, polinomial-size circuits dll). Ini adalah area penelitian yang indah dan sangat aktif, tetapi saya pikir sebagian besar orang akan setuju bahwa objek yang dipelajari tidak benar-benar acak, cukup bahwa mereka hanya terlihat acak (maka istilah "semu").
Dalam teori komputabilitas, sebuah konsensus telah muncul untuk apa yang seharusnya menjadi gagasan yang baik tentang "keacakan benar", dan memang gagasan keacakan Martin-Lof yang berlaku (yang lain telah diusulkan dan menarik untuk dipelajari tetapi tidak telanjang semua). properti bagus Martin-Lof memiliki keacakan). Untuk menyederhanakan masalah, kami akan mempertimbangkan keacakan untuk sekuens biner tak terbatas (objek lain seperti fungsi dari string ke string dapat dengan mudah dikodekan oleh urutan seperti itu).
Urutan biner tak terbatas adalah Martin-Löf acak jika tidak ada proses yang dapat dihitung (bahkan jika kami mengizinkan proses ini dapat dihitung dalam waktu tiga kali lipat atau lebih tinggi) dapat mendeteksi cacat keacakan.α
(1) Apa yang kita maksud dengan "kesalahan acak"? Bagian yang mudah: itu adalah satu set ukuran 0, yaitu properti yang hampir semua urutan tidak memiliki (di sini kita berbicara tentang Lebesgue mengukur yaitu ukuran di mana setiap bit memiliki probabilitas menjadi 0 secara independen dari semua lainnya bit). Contoh dari cacat semacam itu adalah "memiliki 1/3 nol nol tanpa gejala dan 2/3 nol", yang melanggar hukum angka besar. Contoh lain adalah "untuk setiap n, bit 2n pertama α terdistribusi sempurna (sebanyak nol sebagai yang)". Dalam hal ini hukum bilangan besar disahkan, tetapi bukan teorema batas pusat. Dll.1 / 20α
(2) Bagaimana suatu proses yang dapat dikomputasi menguji bahwa suatu urutan bukan milik satu set ukuran 0 tertentu? Dengan kata lain, set ukuran 0 apa yang dapat dijelaskan secara komputatif? Inilah tepatnya tes Martin-Löf. Tes Martin-Löf adalah prosedur yang dapat dikomputasi, yang diberi input k, dapat dihitung (yaitu, melalui mesin Turing dengan input ) menghasilkan urutan string w k , 0 , w k , 1 , ... sedemikian sehingga set U k urutan yang tak terbatas mulai dengan salah satu dari mereka w k , i memiliki ukuran paling 2 - kkwk , 0wk , 1Ukwk , saya2- k(jika Anda suka topologi, perhatikan bahwa ini adalah set terbuka di topologi produk untuk set urutan biner yang tak terbatas). Kemudian set memiliki ukuran 0 dan disebut sebagai Martin-LOF nullset . Kita sekarang dapat mendefinisikan keacakan Martin-Löf dengan mengatakan bahwa urutan biner tak terbatas α adalah Martin-Löf acak jika itu bukan milik nullset Martin-Löf . G = ⋂kUk0α
Definisi ini mungkin tampak teknis tetapi diterima secara luas sebagai definisi yang tepat karena beberapa alasan:
- itu cukup efektif, yaitu definisinya melibatkan proses yang dapat dihitung
- itu cukup kuat: properti "hampir pasti" yang mungkin Anda temukan dalam buku teks teori probabilitas (hukum angka besar, hukum iterasi logaritma, dll) dapat diuji dengan tes Martin-Löf (walaupun terkadang sulit untuk dibuktikan)
- telah diusulkan secara independen oleh beberapa orang menggunakan definisi yang berbeda (khususnya definisi Levin-Chaitin menggunakan kompleksitas Kolmogorov); dan fakta bahwa mereka semua mengarah ke konsep yang sama adalah petunjuk bahwa itu harus menjadi gagasan yang benar (sedikit seperti gagasan fungsi yang dapat dihitung, yang dapat didefinisikan melalui mesin Turing, fungsi rekursif, lambda-kalkulus, dll.)
- teori matematika di baliknya sangat bagus! lihat tiga buku unggulan Pengantar Kompleksitas Kolmogorov dan Penerapannya (Li dan Vitanyi), Keacakan dan Kompleksitas Algoritma (Downey dan Hirschfeldt) Komputasi dan Keacakan (Nies).
Seperti apakah urutan acak Martin-Löf? Nah, ambil koin yang seimbang sempurna dan mulai membalikkannya. Di setiap flip, tulis 0 untuk kepala dan 1 untuk ekor. Lanjutkan sampai akhir waktu. Seperti itulah urutan Martin-Löf :-)
Sekarang kembali ke pertanyaan awal: apakah ada cara yang dapat dihitung untuk menghasilkan urutan acak Martin-Löf? Secara intuitif jawabannya harus TIDAK , karena jika kita dapat menggunakan proses yang dapat dihitung untuk menghasilkan urutan , maka kita pasti dapat menggunakan proses yang dapat dihitung untuk menggambarkan singleton { α }, sehingga α tidak acak. Secara formal ini dilakukan sebagai berikut. Misalkan urutan α dapat dihitung. Pertimbangkan mengikuti tes Martin-LOF: untuk semua k , hanya output awalan sebuah k dari α panjang k , dan tidak ada lagi. Ini memiliki ukuran paling banyak (pada kenyataannya, tepatnya) 2 - kααααkSebuahkαk2- k, Dan persimpangan set seperti dalam definisi persis { α }. QED !!Ukα
Faktanya urutan acak Martin-Löf dapat dihitung dalam arti yang jauh lebih kuat: jika beberapa perhitungan oracle dengan oracle β (yang itu sendiri merupakan urutan biner tak terbatas) dapat menghitung α , maka untuk semua bit n , n - O ( 1 ) dari β diperlukan untuk menghitung n bit pertama dari α (ini sebenarnya adalah karakterisasi keacakan Martin-Löf, yang sayangnya jarang dinyatakan seperti dalam literatur).αβαnn - O ( 1 )βnα
Ok, sekarang bagian "edit" dari pertanyaan Joseph: Apakah ini masalah TM yang memiliki akses ke sumber acak (oracle?), Dapat menghitung fungsi yang tidak bisa dilakukan TM klasik?
Dari perspektif komputabilitas, jawabannya adalah "ya dan tidak". Jika Anda diberi akses ke sumber acak sebagai oracle (di mana output disajikan sebagai urutan biner tak terbatas), dengan probabilitas 1 Anda akan mendapatkan oracle acak Martin-Löf, dan seperti yang kita lihat sebelumnya, Martin-Löf acak menyiratkan non- dapat dihitung, sehingga cukup untuk menampilkan oracle itu sendiri! Atau jika Anda menginginkan fungsi , Anda dapat mempertimbangkan fungsi f yang untuk semua n memberi tahu Anda berapa banyak nol yang ada di antara n bit pertama dari oracle Anda. Jika oracle adalah Martin-Löf acak, fungsi ini tidak dapat dikomputasi.f: N → Nfnn
Tapi tentu saja Anda mungkin berpendapat bahwa ini curang: memang, untuk oracle yang berbeda kita mungkin mendapatkan fungsi yang berbeda, jadi ada masalah yang tidak dapat direproduksi. Oleh karena itu cara lain untuk memahami pertanyaan Anda adalah sebagai berikut: apakah ada fungsi yang tidak dapat dihitung, tetapi yang dapat "dihitung dengan probabilitas positif", dalam arti bahwa ada mesin Turing dengan akses ke oracle acak yang, dengan probabilitas positif (selama oracle), menghitung f . Jawabannya tidak, karena teorema Sacks yang buktinya cukup sederhana. Sebenarnya itu terutama telah dijawab oleh Robin Kothari: jika probabilitas untuk TM menjadi benar lebih besar dari 1/2, maka seseorang dapat mencari semua n di semua kemungkinan perhitungan oracle dengan input nffnndan temukan output yang mendapat "suara terbanyak", yaitu yang dihasilkan oleh seperangkat nubuat berukuran lebih dari 1/2 (ini dapat dilakukan secara efektif). Argumen bahkan meluas ke probabilitas yang lebih kecil: anggaplah output TM dengan probabilitas ϵ > 0 . Dengan teorema kepadatan Lebesgue, ada string berhingga σ sehingga jika kita memperbaiki bit pertama oracle menjadi tepat σ , dan kemudian mendapatkan bit lainnya secara acak, maka kita menghitung f dengan probabilitas setidaknya 0,99. Dengan mengambil σ seperti itu , kita dapat menerapkan argumen di atas lagi.fϵ > 0σσfσ