Baru-baru ini, saya melalui pengalaman menyenangkan yang menyakitkan dengan menjelaskan secara informal konsep kompleksitas komputasi kepada seorang programmer otodidak berbakat muda, yang tidak pernah mengambil kursus formal dalam algoritma atau kompleksitas sebelumnya. Tidak mengherankan, banyak gagasan yang tampak aneh pada awalnya tetapi masuk akal dengan beberapa contoh (PTIME, tidak bisa ditawar, tidak dapat dikomputasi) , sementara yang lain tampak lebih alami (klasifikasi masalah melalui pengurangan, waktu dan ruang sebagai sumber daya, analisis asimptotik) . Semuanya berjalan dengan baik sampai saya tidak sengaja mengakui bahwa SATdapat dipecahkan secara efisien * dalam praktek ... Dan begitu saja, saya kehilangan mereka. Tidak masalah seberapa meyakinkan saya mencoba untuk memperdebatkan teori, anak itu yakin bahwa itu semua matematika omong kosong buatan yang seharusnya tidak dia pedulikan. Baik...
¯ \ _ (ツ) _ / ¯
Tidak, saya tidak patah hati, saya juga tidak benar-benar peduli dengan apa yang dia pikirkan, itu bukan inti dari pertanyaan ini. Percakapan kami membuat saya memikirkan pertanyaan yang berbeda,
Seberapa banyak saya benar-benar tahu tentang masalah yang secara teoretis tidak dapat dipecahkan (kompleksitas waktu superpolinomial) tetapi secara praktis dapat dipecahkan (melalui heuristik, perkiraan, pemecah SAT, dll.)?
Saya menyadari, tidak banyak. Saya tahu bahwa ada beberapa pemecah SAT yang sangat efisien yang memecahkan masalah besar secara efisien, bahwa Simplex bekerja dengan baik dalam praktiknya, dan mungkin beberapa masalah atau algoritma. Bisakah Anda membantu saya melukis gambar yang lebih lengkap? Masalah yang terkenal atau bahkan kelas masalah apa yang termasuk dalam kategori ini?
TL; DR: Apa masalah yang bisa dipecahkan secara kontra-intuitif dalam praktik? Apakah ada sumber daya (diperbarui) untuk membaca lebih lanjut? Apakah kita memiliki karakterisasi untuk mereka? Dan, akhirnya, sebagai pertanyaan diskusi umum, bukan?
EDIT # 1: Dalam mencoba menjawab pertanyaan diskusi terakhir saya tentang karakterisasi seperti itu , saya diperkenalkan dengan analisis algoritma yang lebih lancar, sebuah konsep yang diperkenalkan oleh Daniel Spielman dan Shang-Hua Teng dalam [1] yang terus-menerus menyisipkan antara kasus terburuk dan analisis algoritma kasus-rata-rata. Ini bukan karakterisasi yang dibahas di atas, tetapi menangkap konsep yang sama, dan menurut saya itu menarik.
[1] Spielman, Daniel A., dan Shang-Hua Teng. "Analisis algoritma yang dihaluskan: Mengapa algoritma simpleks biasanya membutuhkan waktu polinomial." Jurnal ACM (JACM) 51, no. 3 (2004): 385-463.