Menggunakan kompleksitas Kolmogorov sebagai input “ukuran”


21

Katakanlah kita memiliki masalah komputasi, misalnya 3-SAT, yang memiliki seperangkat contoh masalah (mungkin input) . Biasanya dalam analisis algoritma atau teori kompleksitas komputasi, kami memiliki beberapa set dari semua input dengan panjang , dan fungsi yang memberikan waktu berjalan beberapa algoritma solusi pada input . Urutan waktu berjalan terburuk untuk kemudian I ( n ) = { w S : | w | = n } n T ( w ) A w A f n = maks w I ( n ) T ( w ) .S

I(n)={wS:|w|=n}
nT(w)AwA
fn=maxwI(n)T(w).

Sekarang mari kita mendefinisikan set

IK(n)={wS:K(w)=n}
dari semua input dengan kompleksitas Kolmogorov n , dan mari kita mendefinisikan urutan
fnK=1|IK(n)|wIK(n)T(w).
Di sini fK adalah urutan waktu berjalan rata-rata untuk A , kecuali jika "ukuran" input adalah kompleksitas Kolmogorov mereka, bukan panjangnya.

Apakah ada algoritma yang fn secara asimtotik berbeda nyata dari fnK ? Jika demikian, apakah ada masalah yang kompleksitas waktunya berubah ketika menggunakan cara analisis algoritma yang berbeda ini?


4
Pertanyaan bagus! Salah satu yang sering saya tanyakan - saya harap ini mendapat jawaban yang bagus. (Saya menambahkan tag parameter-kompleksitas b / c Anda dapat melihat ini sebagai pertanyaan tentang kompleksitas parameterisasi misalnya SAT, di mana parameternya adalah kompleksitas Kolmogorov.)
Joshua Grochow

3
String acak, alias kebanyakan string, memiliki kompleksitas Kolmogorov mendekati panjang aslinya. Untuk sebagian besar input fn=fnK Anda mungkin mendapatkan hasil yang lebih menarik jika Anda bertanya tentang kedalaman komputasi daripada kompleksitas Kolmogorov. google.com/…
Chad Brewbaker

2
Dengan mencampurkan beberapa contoh PARITY ke dalam bahasa yang sulit untuk membentuk S (mis. Dengan mengawali setiap instance dengan sedikit toggle yang menggambarkan dari bahasa mana instance tersebut berasal), maka fnK akan lebih kecil dari fn . Seberapa kecil tergantung pada kerapatan relatif.
András Salamon

1
Satu tempat di Vadhan ini catatan kuliah disini (Februari 19): people.seas.harvard.edu/~salil/cs221/spring10/lectures.html
ushul

1
@ AndrásSalamon, yeah, saya harap saya tidak terlalu ceroboh, tapi saya pikirpada dasarnya harus menjadi fungsi sibuk-berang-berang. nmaxw:K(w)=n|w|
usul

Jawaban:


14

Pertimbangkan fungsi paritas (atau fungsi lain yang bergantung pada semua / sebagian bit input). Untuk fungsi paritas, . Jadi Di sisi lain, f n = Θ ( n ) . f K n = Θ ( 1T(w)=Θ(|w|)

fn=Θ(n).
fnK=Θ(1|IK(n)|w:K(w)=n|w|)Ω(12nmaxw:K(w)=n|w|).

Perhatikan bahwa . Dengan demikian dan . Demikian pula, ; dengan demikian “tumbuh sangat cepat”. Selain itu, tidak sulit untuk melihat bahwa tidak ada dihitung atas menuju .maks w : K ( w ) = n | w | 2 2 Ω ( n ) f K n2 2 Ω ( n ) / 2 nK ( 2 2 2 n ) = O ( n ) f K nK(22n)=O(n)

maxw:K(w)=n|w|22Ω(n)
fnK22Ω(n)/2nK(222n)=O(n)f K nfnK222Ω(n)/2nfnK

9

Mengingat minat pada pertanyaan ini, saya pikir mungkin akan membantu untuk menunjukkan secara lebih eksplisit alasan mengapa kita tidak perlu terkejut sama sekali dengan jawaban itu dan mencoba memberikan arahan untuk penyempurnaan pertanyaan. Ini mengumpulkan dan memperluas beberapa komentar. Saya minta maaf jika ini "jelas"!

Pertimbangkan sekumpulan string kompleksitas Kolmogorov : Paling banyak ada string seperti itu, karena ada deskripsi panjang . Tetapi perhatikan bahwa set ini tidak dapat ditentukan untuk umum (jika tidak, kita dapat menghitung hanya dengan mengulangi dari ke dan memeriksa keanggotaan dalam ). Selanjutnya, fungsi tumbuh sangat cepat. Ini adalah varian dari fungsi sibuk-berang-berang: apa output terpanjang oleh Mesin Turing dengan panjang deskripsin

JK(n)={w:K(w)=n}.
2n2nnnK(w)n=1|w|JK(n)
gK(n)=maxwJK(n)|w|
n? Jika ini tumbuh lebih lambat dari beberapa fungsi yang dapat dihitung, kita dapat memutuskan masalah penghentian: Diberikan TM , bangun yang mensimulasikan dan mencetak pada setiap langkah. Jika panjang deskripsi adalah , maka: berhenti paling banyak pada langkah ; atau tidak berhenti.MMM1MnMgK(n)M

Sekarang, untuk pertanyaan Andrew, kita memiliki , di mana adalah bahasa aslinya. Jadi satu-satunya cara untuk menghindari mengandung input sangat besar dalam adalah jika hanya berisi string yang sangat tidak dapat dikompresi. (Perhatikan bahwa, jika tidak, kita dapat sepenuhnya mengabaikan perbedaan antara kasus terburuk dan analisis kasus rata-rata di sini, karena kita rata-rata lebih dari string, tetapi ukuran string terbesar tumbuh lebih cepat daripada fungsi komputabel . )IK(n)=SJK(n)SIK(n)nS2nn

Saya merasa bahwa ada kemungkinan tidak mungkin untuk membangun setiap trivial (yaitu tak terbatas) yang hanya berisi string uncompressible, namun adalah decidable. Tapi saya tidak tahu. Namun, mudah-mudahan ini memberikan intuisi mengapa kita tidak harus berharap untuk kebanyakan bahasa memiliki tumbuh lebih lambat dari fungsi komputasi.SfnK

Untuk mundur sedikit, pertanyaannya adalah membandingkan kinerja pada input panjang ke kinerja pada input yang dapat dikompresi dengan panjang . Tetapi kami memiliki gagasan kompresi yang jauh lebih mudah ditelusuri (dan kurang kuat) daripada Kompleksitas Kolmogorov. Sebuah cara sederhana adalah dengan memberikan rangkaian ukuran , yang pada input nomor biner menghasilkan th sedikit . Perhatikan bahwa di sini blowup dalam ukuran input paling banyak bersifat eksponensial (rangkaian ukuran memiliki paling banyak input yang mungkin).nnnbbwn2n

Jadi kita dapat mengulangi pertanyaan dengan membiarkan Dan mendefinisikan analog. Alasan untuk harapan di sini adalah bahwa sebagian besar string memerlukan rangkaian yang hampir sebesar string itu sendiri, dan tidak ada string yang lebih besar daripada rangkaian yang dibutuhkan secara eksponensial. Mungkin dalam kasus ini kita bisa menemukan bahasa di mana dan mirip tanpa .

IC(n)={wS:the smallest circuit implicitly specifying w has size n}.
fnCfnfnC

Pertanyaan yang cukup dekat hubungannya adalah kompleksitas bahasa implisit seperti IMPLICIT_SAT adalah lengkap-NEXP, dan biasanya versi implisit masalah NP-lengkap adalah NEXP-lengkap. Memutuskan IMPLICIT_SAT setidaknya semudah hanya menggunakan sirkuit untuk menuliskan semua , lalu menjalankan algoritme untuk SAT pada . Jadi jika untuk SAT, maka ini sepertinya dekat dengan memberikan bukti bahwa IMPLICIT_SAT dalam kasus rata-rata hampir secepat dapat ditentukan seperti SAT dalam kasus terburuk. Tapi saya tidak tahu bagaimana orang akan secara langsung membandingkan gagasan Anda dengan bahasa implisit karena gagasan "sirkuit terkecil untukw w f C n = Θ ( f n ) w

IMPLICIT_SAT={circuits C:C implicitly specifies w,wSAT}.
wwfnC=Θ(fn)w"tidak ikut bermain untuk bahasa implisit.

Semoga ini bermanfaat / menarik!

Saya tidak yakin dengan buku teks yang menyebutkan masalah implisit, tetapi di sini ada beberapa catatan kuliah: http://people.seas.harvard.edu/~salil/cs221/spring10/lec8.pdf


|JK(n)|=2n ? Tetapi tidak setiap deskripsi minimal.
Andrew

1
@AndrewMacFie, benar, harus "paling banyak". Akan memperbaiki.
usul

Terima kasih telah menambahkan jawaban ini :) Kedengarannya seperti untuk algoritma apa pun untuk 3-SAT, akan tumbuh cepat. fnK
Andrew

4

SSLn2nnfnK2fn


Perhatikan bahwa jawaban Yury mencakup yang satu ini, dan juga memastikan bahwa "bisa berada di wilayah".
András Salamon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.