Saya mempelajari kompleksitas komputasi dan saya bertanya-tanya mengapa masalah NP-Complete (NPC) adalah kelas yang penting sama sekali. Saya merasa jelas mengapa kami tertarik untuk menunjukkan masalah NP yang diberikan adalah NP-hard.
Saya juga mengerti definisi NPC, dan bahwa menunjukkan masalah keputusan yang diberikan adalah NP-hard, mengetahui itu dalam NP, sebenarnya adalah sarana NPC.
Namun, yang tidak saya mengerti adalah: mengapa konsep ini sangat penting? Tentunya, jika kita menemukan algoritma NP-keras yang berjalan dalam waktu P (apakah yang ada di NP), kami telah menunjukkan bahwa .
Mengapa konsep ini begitu penting?
complexity-theory
np-complete
Amnestik
sumber
sumber
Jawaban:
Setidaknya ada beberapa alasan mengapa NPC menarik:
Dengan kata lain, NPC mungkin merupakan batas dari apa yang dapat kita harapkan dapat dipecahkan polinomial-waktu, akan terasa sulit untuk mencoba PSPACE = P (misalnya).
sumber
Dari sudut pandang seseorang yang menulis kode untuk mencari nafkah, memiliki keakraban yang baik dengan kelengkapan NP adalah penting untuk:
1. Mengenali saat Anda menggonggong pohon yang salah
Masalah NP-complete adalah yang paling mudah dari masalah NP-hard, namun sejauh yang kami tahu, butuh waktu yang eksponensial dengan ukuran input untuk menyelesaikan masalah keputusan seperti itu. Jadi, sebagai hal praktis jika Anda dapat menunjukkan bahwa masalah yang Anda coba selesaikan adalah NP-hard (biasanya dengan menunjukkan bahwa solusi yang efisien untuk itu juga akan memberikan solusi yang efisien untuk beberapa masalah NP-complete), Anda tahu bahwa Anda dapat berhenti mencari algoritma yang efisien untuk menyelesaikannya secara umum. Sebagai gantinya, Anda dapat memilih dari algoritma yang dikenal yang menjanjikan perkiraan yang baik untuk masalah optimasi NP-hard dan melanjutkan sisa proyek Anda.
2. Menemukan pohon yang tepat
Karena komputer sering digunakan untuk menyerang masalah NP-hard, pemecah khusus telah dikembangkan yang secara efisien dapat menyelesaikan beberapa contoh masalah NP-hard. Mengenali bahwa masalah Anda adalah NP-complete adalah langkah pertama menuju menemukan alat yang ada (SAT, ILP, SMT, CSP untuk beberapa nama) yang mungkin membantu Anda menemukan solusi yang tepat dalam beberapa kasus di mana Anda sebaliknya harus puas dengan suatu perkiraan.
sumber
"Tentunya, jika kita menemukan algoritma NP-hard yang berjalan dalam waktu P (apakah itu dalam NP), kami telah menunjukkan bahwa NP = P. Mengapa konsep ini sangat penting?"
Setiap masalah NP berkurang menjadi masalah NPC, tetapi tidak benar bahwa setiap masalah NP berkurang menjadi masalah NP-hard, jadi membuktikan algoritma NP-hard dalam P tidak membuktikan P = NP sama sekali. Akan tetapi, untuk masalah NPC, itulah yang berarti "mengurangi". Jadi, jika kita menemukan algoritma P untuk masalah NPC, maka, kita akan membuktikan bahwa P = NP.
sumber