Varian kompleksitas Kolmogorov yang dapat dihitung secara efisien

28

Kompleksitas awalan Kolmogorov (yaitu adalah ukuran program pembatasan-diri minimal yang menghasilkan x ) memiliki beberapa fitur bagus:K(x)x

  1. Ini sesuai dengan intuisi memberikan string dengan patters atau struktur kompleksitas yang lebih rendah daripada string tanpa.
  2. Hal ini memungkinkan kita untuk mendefinisikan kondisional kompleksitas , atau bahkan lebih baik K ( x | O ) untuk beberapa oracle O .K(x|y)K(x|O)O
  3. Ini adalah sub-aditif .K(x,y)K(x)+K(y)

Namun ia memiliki kelemahan yang mengerikan: mengembalikan diberikan x tidak dapat ditentukan.K(x)x

Saya bertanya-tanya apakah ada varian kompleksitas Kolmogorov menggunakan model komputasi yang dibatasi (baik dengan menggunakan bahasa yang lebih lemah daripada TM, atau menggunakan TM yang didukung sumber daya) yang mempertahankan fitur (1) dan (2) (fitur ( 3) apakah bonus, tetapi bukan keharusan) sambil dihitung secara efisien?K(x)

Motivasi untuk pertanyaan ini adalah untuk digunakan dalam studi simulasi berbagai model mainan evolusi. Jadi jawaban yang telah digunakan sebagai 'perkiraan kasar' untuk kompleksitas Kolmogorov dalam pekerjaan numerik sebelumnya lebih disukai. Namun, tujuannya bukan untuk sepenuhnya eksperimental, jadi bahasa / model-komputasi-komputasi yang relatif sederhana / bersih untuk lebih disukai, sehingga dimungkinkan untuk membuktikan beberapa teorema yang masuk akal tentang seberapa drastis K berbeda dari K dan pada string apa.KKK

Menghubungkan pertanyaan

Kompleksitas Kolmogorov dengan bahasa deskripsi yang lemah

Apakah ada gagasan yang masuk akal tentang algoritma aproksimasi untuk masalah yang tidak dapat ditentukan?

Artem Kaznatcheev
sumber

Jawaban:

10

Gzip. Cilibrasi dan Vitanyi memiliki artikel yang sangat bagus di mana mereka menggunakan gzip sebagai perkiraan kompleksitas Kolmogorov untuk melakukan pengelompokan. Clustering dengan Kompresi

Chad Brewbaker
sumber
1
bagaimana mereka mendefinisikan kompleksitas bersyarat?
Artem Kaznatcheev
1
Biarkan A dan B menjadi dua dokumen, dan AB menjadi keduanya. Mereka melihat rasio SIZE (gzip (A) + gzip (B)) dengan SIZE (gzip (AB)).
Chad Brewbaker
1
Orang harus sadar bahwa ada kerugian menggunakan gzip (dan sejenisnya) untuk memperkirakan kompleksitas Kolmogorov: bactra.org/notebooks/cep-gzip.html . Itu tidak mengatakan itu tidak berguna untuk mengelompokkan set data kehidupan nyata, tetapi ia mengatakan bahwa kegunaannya untuk set data kehidupan nyata memberitahu kita sesuatu tentang bagaimana set data berbeda dari, katakanlah, output dari generator nomor pseudorandom ...
Joshua Grochow
3

Saya lebih memikirkan pertanyaan saya, dan tiba pada solusi yang mungkin. Ini memiliki dua keterbatasan, hanya didefinisikan pada string dengan panjang (meskipun saya akan membahas ini lebih lanjut) dan tidak berbicara tentang mesin Turing universal, alih-alih mengikuti pertanyaan sebelumnya dan menggunakan model komputasi alternatif.n=2m


Pada dasarnya, kita dapat menginterpretasikan string dengan | x | = 2 m sebagai fungsi f x : { 0 , 1 } m{ 0 , 1 } . Maka ukuran kompleksitas kami K ( x ) adalah ukuran (jumlah tepi) dari diagram keputusan biner tereduksi unik (ROBDD; dengan pemesanan standar tetap) yang mewakili f x . Kondisi ini memuaskan [1]. Juga, karena ROBDD dapat dihitung dalam polinomial waktu dalam 2 mx|x|=2mfx:{0,1}m{0,1}K(x)fx2m, kami memiliki ukuran yang efisien.

Untuk memenuhi persyaratan [2], kita harus memodifikasi BDD standar dengan mengizinkan tipe khusus pada node. Biasanya node diberi label oleh indeks , kami akan menyertakan simpul oracle khusus. Untuk K ( x | y ) di mana | y | = 2 m kami akan mengizinkan node khusus dalam BDD sebagai berikut:i{1,...,m}K(x|y)|y|=2m

a|a|=miaify(a)K(x|x)=2K(x|y)K(x)y

[Catatan: tidak jelas apakah kompleksitas bersyarat masih dapat dihitung secara efisien :(]

Secara konvensional, kami juga memiliki sub-aditivitas karena membangun OBDD untuk kita dapat memiliki kueri untuk bit pertama dan pada 0 pergi ke ROBDD untuk x dan pada 1 ke ROBDD untuk y . Jadi, kita memiliki K ( x . Y ) K ( x ) + K ( y ) .x.y0x1yK(x.y)K(x)+K(y)


K(x)x|x|=2m|y|=2lm>lK(x.y)=K(x)+K(y)

Sayangnya ada juga beberapa batasan dengan pendekatan saya. Kami tidak bisa melangkah lebih jauh dari OBDD, jika kami mempertimbangkan pohon keputusan minimal atau hanya BDD maka kami akan mengambil masalah yang tidak bisa ditanggulangi yang dibahas dalam jawaban ini . Bahkan untuk pemesanan variabel dari OBDD tampaknya ada hasil yang tidak dapat dipraktikkan . Jadi sepertinya OBDD adalah batas dari pendekatan kompleksitas-Kolmogorov yang tidak begitu mirip dengan standar ini.

Artem Kaznatcheev
sumber
2

Saya bukan ahli, tetapi jika Anda membutuhkan ukuran kompleksitas praktis untuk string, Anda dapat melihat ke ukuran T-kompleksitas Titchener .

Lihat situs web Titchener untuk pengantar cepat; nya makalah dapat didownload dalam format pdf .

Abstrak - Ukuran baru kompleksitas string untuk string terbatas disajikan berdasarkan proses produksi string hierarki rekursif tertentu . Dari batas maksimal, kami menyimpulkan hubungan antara kompleksitas dan konten informasi total. Artikel lengkap ...

Saya menemukan beberapa makalah tentang implementasi praktis juga (lihat misalnya " Algoritma T-dekomposisi Cepat ")

Marzio De Biasi
sumber
2

Pada dasarnya, hampir semua mesin pembelajaran atau metode kompresi adalah perkiraan untuk kompleksitas Kolmogorov:

  • p(x)logp(x)
  • nK(x)n+sCsCx

Dengan demikian, Anda bisa mencari pola dengan kompresor atau distribusi probabilitas dan semakin baik kompres data Anda, semakin baik batas atas Anda untuk K (x). Pastikan untuk menambahkan ukuran kompresor itu sendiri ke ukuran data yang dikompresi untuk mendapatkan perkiraan.

K(x)

K(x)K

Anda juga dapat menggunakan batas waktu untuk mendefinisikan kelas model Anda, yang mengarahkan Anda ke jawaban Suresh. Pada dasarnya, jika Anda berasumsi bahwa sumber data Anda memiliki kompleksitas waktu polinomial, dan Anda mencoba semua mesin polinomial Turing untuk mengompresnya, Anda dapat yakin bahwa Anda telah secara akurat memperkirakan kompleksitas Kolmogorov. Ini mungkin masih tidak praktis, tetapi untuk batas waktu yang lebih rendah, Anda mungkin dapat menghitung campuran Bayesian penuh, dari perkiraan yang baik untuk itu.

Untuk detail teknis, lihat makalah ini . Penafian: Saya salah satu penulis.

K(x)K(x)

Peter
sumber
-1

Anda sedang mencari kompleksitas Kolmogorov terbatas sumber daya. Anda bisa mulai dengan makalah ini dan cabang keluar.

Suresh Venkat
sumber
2
terima kasih atas tautannya ke makalah, saya menyebutkan kompleksitas sumber daya terbatas dalam pertanyaan, tetapi ada minat yang benar-benar dalam langkah-langkah yang dapat dihitung secara efisien. Sepertinya kertas menunjukkan bahwa 'string acak' untuk model ini sesuai dengan set kompleksitas tinggi. Ini menunjukkan bahwa menentukan kompleksitas string dalam model ini tidak dapat dihitung secara efisien, bukan?
Artem Kaznatcheev