Bisakah kita tidak menampilkan kompleksitas Kolmogorov?

28

Mari kita perbaiki pengkodean Turing-mesin yang bebas awalan dan universal Turing-machine U yang pada input (T,x) (dikodekan sebagai kode bebas-awalan dari T diikuti oleh x ) menghasilkan keluaran apa pun Tpada input x (mungkin keduanya berjalan selamanya). Tentukan kompleksitas Kolmogorov dari x , K(x) , sebagai panjang dari program terpendek p sehingga U(p)=x .

TxT(x)|x|xT(x)K(x)lim inf|x|T(x)=

Syaratnya perlu, karena

(a) jika, maka akan mudah untuk menghasilkan angka yang secara sepele berbeda dari K (x) karena lebih besar dari | x | + c_U ,T(x)|x|K(x)|x|+cU

(b) jika lim inf|x|T(x)<C diizinkan, maka kita dapat menampilkan 0 (atau konstanta lainnya) untuk hampir semua angka, dengan "untungnya" menebak paling banyak (Banyak angka) yang mengevaluasi ke 0 (ke beberapa konstanta lainnya) dan menghasilkan sesuatu yang lain. Kami bahkan dapat menjamin lim sup|x|T(x)= dengan mengeluarkan sesuatu seperti 2logn untuk x=2n .

Perhatikan juga bahwa pekerjaan kita akan mudah jika kita tahu bahwa T(x) tidak bersifat surjektif, tetapi sedikit yang diketahui tentang ini, jadi jawabannya mungkin bergantung pada U , meskipun saya ragu itu akan.

Saya tahu bahwa banyak hubungan dipelajari secara umum, tetapi

Adakah yang pernah mengajukan pertanyaan serupa di mana tujuan kami adalah memberikan algoritma yang tidak menghasilkan beberapa parameter?

Motivasi saya adalah masalah ini http://arxiv.org/abs/1302.1109 .

domotorp
sumber
5
Itu tergantung pada penyandian Anda, karena seperti yang disebutkan dalam topik pada surjectivity Anda tautkan, bisa jadi ini merupakan kasus bahwa hanya program panjang genap yang valid. Jadi untuk menjadikan pertanyaan Anda tidak sepele, Anda perlu memiliki lebih banyak hipotesis tentang penyandian. Kp
Denis
2
Untuk pertanyaan kedua Anda: ya. Dengan diberi bilangan bulat , misalkan menunjukkan mesin T-Fungsi diagonal non-rekursif (atau DNR) adalah fungsi sedemikian rupa sehingga untuk semua bilangan bulat , . (Yaitu, jika berhenti pada , maka , dan jika tidak dapat berubah-ubah.) Ini telah dipelajari sedikit baru-baru ini di computability / computable komunitas keacakan. Google "secara non-rekursif" untuk menemukan makalah tentang ini. M[M]Mf:NNM[M](M)f(M)[M]Mf(M)[M](M)f(M)
Joshua Grochow
1
@Denis: Saya pikir Anda salah. Menurut definisi saya tentang mesin Turing universal yang diberikan dalam paragraf pertama, semua panjang dapat menjadi program yang valid.
domotorp
3
Beberapa kali yang lalu saya berpikir (sia-sia) tentang versi yang tampaknya lebih sederhana: (dis) membuktikan bahwa untuk cukup besar , untuk semua . x0K(x)|x|/2xx0
Marzio De Biasi
1
@ Ricky: Tidak apa-apa, saya tidak memiliki batasan pada pengkodean mesin Turing, hanya pada program, yang dapat Anda baca di paragraf pertama.
domotorp

Jawaban:

7

Pertanyaannya dapat diulang kembali sebagai apakah , dan sebagaimana ditunjukkan Denis dalam komentar ini salah untuk beberapa penyandian. Berikut ini adalah pernyataan yang lebih lemah dan bukti percobaan yang tidak bergantung pada detail pengkodean apa pun, tetapi saya akan menganggap bahasa biner untuk kesederhanaan:liminf|x||T(x)K(x)|=0

Biarkan menjadi fungsi yang dapat memenuhi dan . Kemudian . Secara informal, jika ada target di sekitar kompleksitas Kolmogorov masing-masing string yang tumbuh lebar tanpa batas, tidak ada fungsi yang dapat dikomputasi yang menghindarinya.T:{0,1}N0T(x)|x|liminf|x|T(x)=liminf|x||T(x)K(x)|<

Untuk melihat ini, misalkan menjadi bit acak , yaitu dan . Untuk semua seperti acak itu ada. Juga mencatat bahwa ada jumlah tak terbatas nilai yang , ini mengikuti dari kondisi ditempatkan pada . Sekarang mari menjadi string terkecil sehingga . Jelas ada konstanta sehingga , karena danb 0 n < 2 b K ( n ) b b n b | { T ( x ) = b } | 2 b T x n th T ( x ) = b c 1 K ( x ) > b - c 1 K ( n ) b n x c 2nb0n<2bK(n)bbnb|{T(x)=b}|2bTxnthT(x)=bc1K(x)>bc1K(n)bndapat dihitung dari . Dan ada konstanta sehingga , karena juga dibatasi dari atas dengan hanya konstanta lebih dari , dan dapat dihitung dari . Kemudian , dan kami memiliki jumlah pilihan tak terbatas untuk (yang memiliki perkiraan kardinalitas minimal ), menghasilkan jumlah nilai tak hingga untuk , jadi kita selesai.xc2 K ( n ) b x n | K ( x ) - T ( x ) | < c 1 + c 2 b 2 b xK(x)<b+c2K(n)bxn|K(x)T(x)|<c1+c2b2bx

Implikasinya adalah bahwa untuk beberapa , sering tak terhingga. Jadi bisa dikatakan kita tidak bisa mengeluarkan sesuatu yang bukan kompleksitas Kolmogorov! T ( x ) = K ( x ) + ccZT(x)=K(x)+c

Dan Brumleve
sumber
1
Bagus, saya pikir ini harus berhasil. Tentu saja, mungkin tidak ada string dengan , jadi mungkin Anda ingin meminta , kan? f ( x ) bf(x)=bf(x)b
domotorp
1
Itu harus sehingga dapat dihitung dari . Jadi, saya kira kita perlu memilih sehingga atau lebih memetakannya. Agaknya, anggapan-anggapan tersebut seharusnya menyiratkan ada banyak yang tak terhingga banyaknya (walaupun saya tidak begitu melihatnya saat ini). (Sejauh yang saya tahu, asumsi tersebut belum digunakan dengan cara lain.)n x b , n b 2 b + 1 bf(x)=bnxb,n b2b+1b
Emil Jeřábek mendukung Monica
1
Ya, memang ini yang dibutuhkan. Tetapi buktinya mudah dengan kontradiksi - jika selalu jika , maka dengan melihat rentang apa pun , kita dapat menyimpulkan bahwa setidaknya string dipetakan ke , dengan demikian tak terhingga banyaknya, yang bertentangan dengan . b > b 0 b 0 < b B B - b 0b 0 lim inf = <2bb>b0b0<bBBb0b0lim inf=
domotorp
Apa yang dibicarakan Denis tidak berlaku pada cara saya mendefinisikan universalitas pada baris pertama pertanyaan saya. Ucapannya juga sepele, saya tidak tahu mengapa begitu banyak orang yang telah mengangkat komentarnya. Namun sayang, juga jawaban Peter yang salah menerima begitu banyak upvotes, saya kehilangan kepercayaan pada situs ini ...
domotorp
Tidak masalah bagaimana TM disandikan, selama kriteria saya tentang TM universal terpenuhi, jadi komentar Denis tidak benar. Jika itu dinyatakan sebagai komentar tentang model lain, maka itu akan menjadi hal yang berbeda. Bagaimanapun, alih-alih merenungkan ini, mari kita coba untuk melihat apakah kami dapat memperkuat ide Anda ...
domotorp
3

Saya pikir berikut ini berfungsi. Saya akan menggunakan untuk kompleksitas KolmogorovC(x)

  • Beri batas waktu (katakanlah, beberapa fungsi eksponensial dari panjang program input), dan panggil hasilnya . Jika suatu program melebihi timebound, memasuki loop tak terbatas.UU t U ttUtUt
  • Biarkan menjadi program terpendek untuk pada . Perhatikan bahwa dapat dihitung.x t C tCt(x)xtCt
  • Biarkan mengembalikan , kecuali nilai ini sama dengandi mana case return 0. Kecuali adalah output dari program kosong, di mana case return 1.C t ( x ) + 1 | x | xT(x)Ct(x)+1|x|x
  • Karena , akan selalu berbeda dari . Logika pada langkah sebelumnya menangani kasus tepi.T ( x ) C ( x )C(x)Ct(x)T(x)C(x)
  • Ut berfungsi sebagai kode untuk semua string, sehingga memiliki batas infinity inferior.
Peter
sumber
beberapa komentar, teori KC dalam interpretasi alternatif (tetapi setara) menyatakan sebagai berikut: Hampir semua string sudah dalam representasi optimal mereka ( wrt ke model yang diberikan) kecuali banyak string yang dapat didenumerasi yang dapat diubah menjadi representasi optimal (minimum) wrt ke model perhitungan yang diberikan (atau TM). Dalam hal ini hampir setiap program menghasilkan representasi string yang optimal, tetapi ini tidak diketahui (atau dapat dihitung) a-priori
Nikos M.
Mengapa Anda memiliki? T(x)|x|
domotorp
@domotorp Secara teknis kami memiliki mana adalah panjang dari program cetak terpendek. Tentu saja, konstanta ini juga ada untuk (dan pada kenyataannya, kecuali jika program cetak benar-benar lambat, konstanta yang sama). c C ( x )T(x)|x|+ccC(x)
Peter
Tapi inilah yang membuat seluruh pertanyaan menarik! Saya bisa meminta fungsi apa pun alih-alih, misalnya, , satu-satunya tujuan saya adalah menghilangkan solusi yang serupa dengan milik Anda. | x | / 2 + 99|x||x|/2+99
domotorp
@domotrop saya mengerti, jadi Anda ingin memaksa untuk tidak menjadi upperbound ke . Itu lebih menarik ...C ( x )T(x)C(x)
Peter