Pertimbangkan tugas algoritmik berikut:
Input: bilangan bulat positif , bersama dengan faktorisasi utamanya
Cari: bilangan bulat positif yang meminimalkan , tunduk pada batasan bahwa
Apa kompleksitas masalah ini? Apakah ada algoritma waktu polinomial? Apakah ini NP-hard?
Masalah ini pada dasarnya bertanya: dari semua padatan persegi panjang yang volumenya dan yang dimensinya bilangan bulat, yang mana yang memiliki luas permukaan paling kecil?
Masalah ini diajukan oleh Dan Meyer, dengan judul Masalah Matematika yang Tidak Dapat Dipecahkan oleh 1.000 Guru Matematika . Sejauh ini tidak ada guru matematika yang bekerja dengannya menemukan algoritma yang masuk akal untuk masalah ini. Dalam konteksnya, definisi "masuk akal" agak tidak tepat, tetapi sebagai ilmuwan komputer kita dapat mengajukan pertanyaan yang lebih tepat tentang kompleksitas masalah ini.
Pendekatan yang jelas adalah untuk menghitung semua kemungkinan untuk , tetapi itu membutuhkan waktu yang eksponensial. Komentator di blog Dan Meyer telah mengusulkan banyak algoritma kandidat efisien yang sayangnya semuanya ternyata tidak benar. Martin Strauss menyarankan bahwa masalah ini agaknya mengingatkan pada 3-partisi , tetapi saya tidak dapat melihat pengurangan.
Izinkan saya juga menjernihkan beberapa kesalahpahaman yang saya lihat di komentar / jawaban:
Anda tidak dapat mengurangi dari 3-partisi hanya dengan mengganti setiap angka dengan kekuatannya , karena fungsi objektif dari kedua masalah berbeda. Pengurangan yang jelas tidak bekerja.
Tidak benar bahwa solusi optimal melibatkan memilih salah satu dari untuk menjadi pembagi terdekat dari ke . Saya melihat banyak orang yang berasumsi ini adalah kasus, tetapi pada kenyataannya, itu tidak benar. Ini sudah dibantah pada posting blog Dan Meyer. Sebagai contoh, pertimbangkan ; , dan 4 membagi 68, jadi Anda mungkin berpikir bahwa setidaknya satu dari harus 4; Namun, itu tidak benar. Solusi optimal adalah , , . Contoh tandingan lain adalah , , tetapi solusi optimalnya adalah , , . ( Mungkin benar bahwa untuk semua , solusi optimal melibatkan membuat setidaknya satu dari sama dengan pembagi terkecil dari lebih besar dari atau pembagi terbesar lebih kecil dari - Saya tidak punya contoh tandingan sekarang - tetapi jika Anda berpikir pernyataan ini benar, itu akan memerlukan bukti. Anda benar-benar tidak dapat menganggap itu benar.)z = 2x , y , z n 3 √ 3 √
"Jadikan dengan ukuran yang sama" tampaknya tidak selalu menghasilkan jawaban optimal dalam semua kasus; lihat posting blog Dan Meyer untuk contoh-contoh tandingan. Atau, setidaknya, untuk beberapa interpretasi yang masuk akal dari frasa "buat mereka kira-kira berukuran sama", ada contoh tandingan yang menunjukkan bahwa strategi ini sebenarnya tidak optimal. Jika Anda ingin mencoba beberapa strategi semacam itu, pastikan bahwa Anda menyatakan klaim secara tepat dan kemudian berikan bukti matematika yang cermat.
Waktu berjalan tidak polinomial. Agar masalah ini berada di P, waktu berjalan harus polinomial dalam panjang input . Panjang input adalah sesuatu seperti , bukan . Algoritma brute-force yang jelas dapat dibuat untuk berjalan dalam waktu atau , tetapi itu eksponensial dalam dan dengan demikian dianggap sebagai algoritma waktu eksponensial. Jadi itu tidak membantu.lg n n O ( n 3 ) O ( n 2 ) lg n