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 ) .
Sekarang mari kita mendefinisikan set
dari semua input dengan kompleksitas Kolmogorov , dan mari kita mendefinisikan urutan
Di sini adalah urutan waktu berjalan rata-rata untuk , kecuali jika "ukuran" input adalah kompleksitas Kolmogorov mereka, bukan panjangnya.
Apakah ada algoritma yang secara asimtotik berbeda nyata dari ? Jika demikian, apakah ada masalah yang kompleksitas waktunya berubah ketika menggunakan cara analisis algoritma yang berbeda ini?
cc.complexity-theory
kolmogorov-complexity
parameterized-complexity
succinct
analysis-of-algorithms
Andrew
sumber
sumber
Jawaban:
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 | )
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 n ≥ 2 2 Ω ( n ) / 2 n → ∞ K ( 2 … 2 2 n ) = O ( n ) f K nK( 22n) = O ( n )
sumber
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
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 . )sayaK( n ) = S∩ JK( n ) S sayaK( n ) n S 2n n
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.S fKn
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).n n n b b w n 2n
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 .
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
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
sumber
sumber