Konstanta Chaitin normal?

9

Menurut sumber ini, konstanta Chaitin Ω itu normal.

Setiap probabilitas penghentian adalah bilangan real normal dan transendental yang tidak dapat dihitung, yang berarti bahwa tidak ada algoritma untuk menghitung digitnya. Memang, setiap probabilitas penghentian adalah acak Martin-Löf, yang berarti tidak ada algoritma apa pun yang dapat dengan andal menebak angka-angkanya.

Sumber (Wikipedia)

Selanjutnya, definisi normal adalah bahwa setiap digit terjadi dengan probabilitas yang sama 1/b. Dan bahwa setiap duet digit terjadi dengan probabilitas dan setiap kembar tiga terjadi dengan probabilitas dan seterusnya.1/b21/b3

Omega Chaitin dihitung melalui

Ω=phalts2|p|

Menulis dalam biner, kami memperoleh daftar 0 dan 1. Misalnya,Ω

2^-1=0.1 +
2^-2=0.01 +
2^-3=0.001 +
~skip 2^-4 as it does not halt
2^-5=0.00001 +
...
=\Omega
=0.11101...

Jelas, kita dapat melihat bahwa posisi masing-masing bit sesuai dengan keadaan terputusnya program panjang yang sesuai dengan bit.

Inilah yang saya perjuangkan

Jika memang normal, maka itu berarti bahwa tepat 50% dari program berhenti dan tepatnya 50% tidak. Ini tampaknya sangat berlawanan dengan intuisi.Ω

Sebagai contoh, misalkan saya membuat program java dengan menggabungkan satu karakter secara acak. Mayoritas dari mereka, saya kira lebih dari 99,99% bahkan tidak akan dikompilasi. Apakah ini tidak berarti bahwa setidaknya 99,99% dari mereka tidak akan berhenti? Bagaimana kita membenarkan bahwa setengah akan berhenti dan setengah lagi tidak, karena normal.Ω

Atau apakah wikipedia salah tentang normal?Ω

Alexandre H. Tremblay
sumber
2
Selamat datang di situs ini! Jika Anda menempatkan LaTeX Anda di antara dolar alih-alih backticks, kami akan dapat membaca outputnya, bukan sumbernya.
David Richerby
1
Dan untuk pecahan \ frac {1} {b ^ 2} memberi 1b2 dari pada 1/b2.
Evil
Saya percaya bahwa Omega Chaitin didefinisikan untuk pengkodean Mesin Turing bebas awalan , bukan untuk pengkodean sewenang-wenang. Jika demikian, saya pikir intuisi normal kita tentang apa yang merupakan TM "acak" mungkin tidak begitu andal.
mhum
1
@mhum Anda dapat menyandikan ulang program apa pun ke pengkodean bebas awalan dengan menambahkan 1 di antara setiap bit dari program asli, lalu menghentikannya dengan 0. Kemudian mesin Turing membaca setiap bit kedua hingga menemukan terminating 0. Ini membiarkan kode java utuh tetapi membuatnya awalan gratis. Karena itu masalahnya tetap ada.
Alexandre H. Tremblay
"Jika Ω memang normal, maka itu berarti bahwa tepat 50% dari program berhenti dan tepatnya 50% tidak. Ini tampaknya sangat berlawanan dengan intuisi." Ini berarti bahwa, tanpa gejala, setengah dari program berhenti. Ini bukan kontra-intuitif. Meskipun mungkin perlu upaya untuk menemukan program penghentian (yaitu Anda menekan string 0 di Ω), begitu Anda menemukannya, Anda akan memiliki serangkaian program penghentian yang sangat panjang untuk mengikutinya (yaitu string yang sama panjang dari 1's), misalnya program yang secara fungsional adalah program yang sama tetapi dengan banyak komentar berlebihan yang ditempelkan (semacam lemma pemompaan).
Marcel Besixdouze

Jawaban:

9

Berbeda dengan contoh Anda, konstanta Chaitin tidak didefinisikan sebagai berikut:

Ω=n:nth program halts2n.

Sebagai gantinya, ada satu set Π{0,1}dari program yang diizinkan yang bebas awalan (tidak ada string adalah awalan dari string lain). Setiap program diΠlegal (ini meniadakan contoh Java Anda). Jika program pengkodean di unary maka memang demikian halnyanProgram th memiliki panjang n, dan kemudian definisi Anda tentang Ωbekerja. Tetapi untuk pengkodean lainnya, definisiΩ adalah

Ω=pΠ:p halts2|p|,
dimana |p| adalah panjang dari string biner p. Ketidaksetaraan Kraft menunjukkan hal itupΠ2|p|1.

Konstanta Chaitin secara algoritmik acak : kompleksitas (awalan) Kolmogorov yang pertaman bit adalah nO(1). Untuk menunjukkan ini, perhatikan dulu ituΩn, pertama n bit Ω, cukup untuk menentukan apakah suatu program panjang n (di bawah pengkodean Π) berhenti atau tidak. Memang, sebagai pecahan,ΩnΩ<Ωn+2n. Jalankan semua program secara paralel, dan kapan sajap berhenti, tambahkan 2|p| ke beberapa counter C(diinisialisasi pada nol). AkhirnyaCΩn (sejak CΩdari bawah). Pada titik ini, jika program input panjangn tidak berhenti, maka Anda tahu bahwa itu tidak berhenti, karena sebaliknya ΩC+2nΩn+2n.

Mengingat ini, anggap itu untuk beberapa K>0 dan tak terhingga banyaknya n, Anda bisa menghitung Ωn menggunakan nKbit. Untuk masing-masingn, Anda dapat menemukan string yang kompleksitas Kolmogorov lebih besar dari n, dengan mempertimbangkan output dari semua program penghentian yang paling panjang n. Cukup besarK, hasilnya adalah program panjang paling banyak n untuk menghitung string yang kompleksitas Kolmogorovnya lebih dari n. Kontradiksi ini membuktikan hal itu bagi sebagian orangK, kompleksitas Kolmogorov dari Ωn setidaknya nK.

Keacakan algoritma dari Ωmenyiratkan, khususnya, bahwa frekuensi 0s dan 1s dalam ekspansi binernya cenderung 1/2. Sungguh, anggap itu untuk beberapa (rasional)ϵ>0 ada banyak sekali tak terhingga n sedemikian sehingga fraksi 1s di Ωn paling banyak 1/2ϵ. Karena hanya ada paling banyak2h(1/2ϵ)n string dengan paling banyak 1/2ϵ banyak 1, kita bisa kompres Ωn untuk ukuran h(1/2ϵ)n+2logn+Cϵ (konstan Cϵ tergantung pada ϵ karena program perlu tahu ϵ). Namun ininω(1), bertentangan dengan keacakan algoritmik dari Ω.

Yuval Filmus
sumber
Terima kasih atas jawaban yang sangat lengkap. Saya berjuang dengan paragraf pertama dan saya minta maaf untuk itu tidak melewati tengkorak saya. Jika kita hanya mengambil program-program java yang dikompilasi, kemudian mengkodekannya ke unary, apakah itu berarti setengah dari mereka akan berhenti?
Alexandre H. Tremblay
@ AlexandreH.Tremblay Ya, itulah implikasinya. Untuk lebih lanjut, saya merekomendasikan buku teks tentang kompleksitas Kolmogorov, seperti Li dan Vitanyi.
Yuval Filmus
Bisakah Anda membuat mesin Turing sedemikian rupa sehingga termasuk kompiler java? Bayangkan ini. Pertama, daftarkan semua string karakter yang mungkin dihasilkan secara acak dari yang terpendek hingga terpanjang. Kedua, menyandikan string ini secara unary. Ketiga, masukkan string unary ke mesin Turing sebagai input. Mesin Turing memeriksa apakah input dikompilasi di Jawa. Jika ya, ia menjalankannya dan setengahnya akan berhenti dan setengahnya tidak. Jika tidak dikompilasi, maka loop selamanya (while (true) {};). Tidakkah ini akan mengubah rasio penghentian / tidak putus? Saya telah membaca Li dan Vitanyi minggu lalu, tetapi saya perlu membacanya lagi;).
Alexandre H. Tremblay
Saya menduga bahwa penyandian yang tidak sesuai dengan cara yang Anda sarankan tidak akan diterima . Misalnya, dalam pengkodean unary (bahkan yang sederhana) Anda tidak akan dapat membuat program dengan overhead konstan. Saya akan memeriksa Li dan Vitanyi untuk daftar properti yang harus dipenuhi oleh komputer universal yang dapat diterima. Ini akan menjadi bagian dari definisi kompleksitas Kolmogorov.
Yuval Filmus
Halo, dapatkah Anda merekomendasikan bagian Li dan Vitanyi tempat informasi ini ada. Saya membaca buku itu untuk kedua kalinya dan tidak dapat menemukannya.
Alexandre H. Tremblay
0

Kesalahan Anda ada pada baris berikut:

Jika Ω memang normal, maka itu berarti bahwa tepat 50% dari program berhenti dan tepatnya 50% tidak.

Nggak. Bukan itu arti "normal". Atau, dengan kata lain: Definisikand0(n) menjadi jumlah bit yang merupakan 0, di pertama n bit dari ekspansi basis-2 dari Ω. Mengatakan ituΩadalah yang normal menyiratkan bahwa

limnd0(n)n=1/2.

Dengan kata lain, "normal" adalah gagasan asimptotik. Ini berarti bahwa ketika Anda melihat cukup jauh ke dalam bitΩ, rata-rata sekitar setengahnya adalah 0. (Demikian pula, sekitar setengah dengan menjadi 1.)

Namun, ini tidak mengatakan apa-apa tentang beberapa bit pertama Ω. Misalnya, tidak ada implikasi bahwa ekspansi binerΩ dimulai dengan 0,01 ... atau apa pun - dan tidak ada implikasinya Ω dekat dengan 1/2. Ωmungkin mendekati 0, atau mendekati 1, atau di mana saja di antaranya; itu tidak bertentangan dengan normal, dan menjadi normal tidak menyiratkan apa pun tentang seberapa besarΩ adalah.

DW
sumber
Catat itu Ωadalah probabilitas bahwa mesin Turing acak berhenti di bawah distribusi yang sangat aneh. OP tertarik pada distribusi seragam (dalam arti tertentu). Jadi tidak ada yang menyiratkan hal ituΩdekat dengan 1/2.
Yuval Filmus