Apakah kita memiliki kelas kompleksitas sehubungan dengan, katakanlah, kompleksitas kasus rata-rata? Sebagai contoh, apakah ada kelas kompleksitas (bernama) untuk masalah yang membutuhkan waktu polinomial yang diharapkan untuk memutuskan?
Pertanyaan lain mempertimbangkan kompleksitas kasus terbaik , dicontohkan di bawah ini:
Apakah ada kelas masalah (alami) yang keputusannya membutuhkan setidaknya waktu eksponensial?
Untuk memperjelas, mempertimbangkan beberapa EXP bahasa -Lengkap . Jelas, tidak semua instance memerlukan waktu eksponensial: Ada contoh yang dapat diputuskan bahkan dalam waktu polinomial. Jadi, kompleksitas kasus bukanlah waktu yang eksponensial.L L
EDIT: Karena beberapa ambiguitas muncul, saya ingin mencoba untuk lebih memperjelasnya. Dengan kompleksitas "kasus terbaik", maksud saya kelas kompleksitas yang kompleksitas masalahnya lebih rendah dibatasi oleh beberapa fungsi. Misalnya, definisikan BestE sebagai kelas bahasa yang tidak dapat diputuskan dalam waktu kurang dari eksponensial linear. Secara simbolis, misalkan menunjukkan mesin Turing yang berubah-ubah, dan , , dan adalah bilangan asli:c n 0 n
di mana menunjukkan waktu yang dibutuhkan sebelum berhenti pada input .M x
Saya menerima bahwa mendefinisikan kelas masalah seperti itu sangat aneh, karena kami mensyaratkan bahwa, setiap mesin Turing , terlepas dari kekuatannya, tidak dapat memutuskan bahasa dalam waktu kurang dari beberapa eksponensial linier.
Namun perhatikan bahwa rekanan polinomial-waktu ( BestP ) adalah alami, karena setiap mesin Turing memerlukan waktuuntuk setidaknya membaca inputnya.
PS: Mungkin, alih-alih menghitung sebagai "untuk semua mesin Turing ," kita harus membatasinya pada beberapa kelas mesin Turing yang telah ditentukan, seperti mesin Turing polinomial waktu. Dengan begitu, kita dapat mendefinisikan kelas seperti , yang merupakan kelas bahasa yang membutuhkan setidaknya waktu kuadratik untuk diputuskan pada mesin Turing polinomial waktu.B e s t ( n 2 )
PS2: Seseorang juga dapat mempertimbangkan rekan sirkuit-kompleksitas, di mana kami mempertimbangkan ukuran / kedalaman rangkaian terkecil untuk memutuskan bahasa.
sumber
Jawaban:
Meskipun saya tidak dapat menguraikan definisi Anda, Anda harus tahu bahwa hierarki waktu yang lebih kuat diketahui, khususnya hierarki waktu "hampir di mana-mana".
Berikut adalah pernyataan formal: untuk setiap kali terikat , ada bahasa dengan properti yang setiap algoritma deterministik yang mengenali harus berjalan dalam waktu asimtotik lebih besar daripada pada semua tetapi banyak input, untuk waktu cukup kecil . L ∈ T I M E [ T ( n ) ] L t ( n ) t ( n )T(n) L∈TIME[T(n)] L t(n) t(n)
"Cukup kecil" berarti .t(n)logt(n)≤o(T(n))
Misalkan kita memilih untuk contoh, dan memperoleh bahasa yang sulit . Kemudian, setiap algoritma yang mengenali dengan benar harus memakan waktu setidaknya pada semua input yang melewati panjang tertentu. Ini sepertinya yang Anda cari di kelas Anda BestE. L L 2 n / n 2T(n)=2n L L 2n/n2
Referensi:
sumber
Ada sejumlah kelas yang berusaha untuk mengatasi berbagai gagasan tentang kompleksitas kasus rata-rata. Di Complexity Zoo, beberapa kelas yang mungkin menarik bagi Anda adalah:
Rata-rata
HeurP
DistNP
(NP, P-samplable)
Arora / Barak mencakup banyak, kelas serupa (dalam Bab 18), mendefinisikan distP, distNP, dan sampNP.
Hubungan yang tepat antara semua kelas ini ditandai oleh Lima Dunia Impagliazzo, yang sebelumnya ditanyakan dalam pertanyaan lain .
Sejauh pertanyaan kompleksitas "kasus terbaik", saya tidak yakin saya cukup mengerti apa yang Anda maksud. Apakah Anda mencari EXP ?
Jika yang Anda maksud adalah kelas kompleksitas yang didefinisikan dalam hal run time kasus terbaik atas semua instance, ini bukan kompleksitas yang sangat baik untuk mengukur apriori, karena Anda hanya akan melihat kasus sepele dari masalah yang diberikan.
sumber
[Memperluas jawaban Ryan Williams dan menambahkan beberapa istilah pencarian untuk Anda] Gagasan Anda tentang kerumitan kasus terbaik sudah memiliki nama: kekerasan di mana-mana (ae), atau bi-imunitas. (Contoh Ryan adalah dari -bi-imunitas). Jika adalah kelas kompleksitas, maka bahasa adalah jika tidak ada himpunan bagian tak terbatas sedemikian rupa sehingga . adalah -bi-imun jika dan komplemennya adalahC L C L ′ ⊆ L L ′ ∈ C L C L ¯ L = Σ ∗ ∖ L C B e s t E ETIME[T(n)] C L C L′⊆L L′∈C L C L L¯¯¯¯=Σ∗∖L C -imun. Misalnya, tidak sulit untuk menunjukkan bahwa definisi Anda tentang setara dengan kelas set -bi-imun.BestE E
(Sejarah samping: gagasan kekebalan pertama kali dikembangkan oleh Post pada tahun 1944 dalam teori komputabilitas, jauh sebelum P bahkan didefinisikan. Post sebenarnya dianggap "set sederhana" - satu set sederhana jika komplemennya kebal. Untuk teori komputabilitas, kata "kebal" biasanya berarti "kebal terhadap set yang dapat dihitung." Dalam pengaturan itu, kekebalan setara dengan "kebal terhadap set ce" karena setiap set infinite berisi yang tidak dapat dihitung yang komputabel. Saya percaya makalah Post juga yang pertama kali memperkenalkan Gagasan tentang banyak-satu pengurangan, tetapi saya tidak bisa bersumpah untuk itu.)
sumber
Kasus yang berbeda lebih masuk akal ketika berbicara tentang algoritma, bukan masalah. Di sisi lain, kelas kompleksitas adalah tentang masalah, bukan algoritma. Oleh karena itu, kelas kompleksitas selalu menjadi kasus terburuk untuk algoritma apa pun karena definisi.
Dalam kompleksitas, tujuan Anda adalah untuk mengetahui jumlah sumber daya yang dibutuhkan untuk menyelesaikan setiap contoh masalah yang diberikan. Oleh karena itu, Anda tahu bahwa untuk setiap instance dan algoritma tertentu, Anda akan membutuhkan sumber daya tersebut dan tidak lebih.
Dalam analisis algoritme, tujuan Anda adalah memastikan algoritme Anda memiliki batas atas untuk sumber daya, dalam hal apa pun masalahnya. Batasan sepele adalah kelas kompleksitas masalah, karena tidak ada algoritma yang berguna (yang membuat langkah tidak tepat) membutuhkan waktu lebih lama dari itu. Namun, Anda dapat meningkatkan batasan yang diberikan spesifik algoritma.
Adapun kasus terbaik, sepele untuk setiap masalah untuk menemukan paling sedikit sumber daya yang dibutuhkan. Asumsikan bahwa input adalah panjang O (n) dan output dari panjang O (m). Maka TM M berikut ini selalu berjalan di O (n) + O (m) untuk kasus terbaik:
M {Input, Instance, Solution}
sumber
sumber