Linear programming (LP) dalam P dan integer programming (IP) adalah NP-hard. Tetapi karena komputer hanya dapat memanipulasi angka dengan ketepatan yang terbatas, dalam praktiknya komputer menggunakan bilangan bulat untuk pemrograman linier. Karena itu, bukankah LP dan IP harus berada dalam kelas kompleksitas yang sama?
complexity-theory
polynomial-time
Sasha si Noob
sumber
sumber
Jawaban:
Saya tidak dapat berkomentar karena memerlukan 50 rep, tetapi ada beberapa kesalahpahaman yang tersebar, terutama komentar Raphael "Secara umum, domain yang berkelanjutan berarti tidak ada kekuatan kasar (dan tidak ada heuristik yang pintar untuk mempercepatnya)."
Ini benar-benar salah. Poin kuncinya adalah cembung. Kecuali beberapa kualifikasi kendala teknis, meminimalkan fungsi cembung (atau memaksimalkan fungsi cekung) pada set cembung pada dasarnya sepele, dalam arti konvergensi waktu polinomial.
Secara longgar, Anda bisa mengatakan ada korespondensi antara kecemburuan masalah dalam optimasi "matematis" dan kelayakan algoritma serakah dalam optimasi "ilmu komputer". Ini dalam arti bahwa keduanya memungkinkan metode pencarian lokal. Anda tidak akan pernah harus melacak kembali dalam algoritma serakah dan Anda tidak akan pernah harus menyesali arah keturunan dalam masalah optimasi cembung. Peningkatan lokal pada fungsi tujuan akan SELALU membawa Anda lebih dekat ke optimal global.
Ini tidak demikian dalam kasus non-cembung. Di sini, mungkin ada global minimum, tetapi beberapa minimum lokal yang akan selalu ditarik oleh algoritma penurunan lokal, dengan cara yang sama dilakukan oleh algoritma serakah ketika diterapkan pada masalah NP. Terkadang mereka menemukan optimal yang sebenarnya, sebagian besar waktu tidak.
sumber
Jawaban singkatnya: karena Anda dapat menggunakan Integer untuk mensimulasikan Boolean untuk SAT , tetapi ketika Anda tidak membatasi diri Anda dengan ini, maka Anda tidak dapat benar-benar mensimulasikan SAT. Anda akan mendapatkan jawaban yang layak, tetapi itu tidak lagi membawa arti dalam hal apa pun contoh SAT yang Anda coba simulasikan.
Jawaban sulit untuk ini adalah kita tidak tahu bahwa mereka tidak berada dalam kelas kompleksitas yang sama. Tidak ada yang memiliki bukti bahwa . Jika kita memahami alasan yang lebih dalam mengapa masalahnya sangat berbeda, itu akan mengharuskan kita memahami mengapa kelas kompleksitasnya berbeda, yang tidak kita lakukan.P≠NP
sumber
Alasan pemrograman linier adalah "efisien" adalah bahwa ruang solusi dapat diwakili oleh polihedron cembung tunggal. Jika seseorang mencoba untuk menemukan titik "tertinggi" pada polyhedron itu (orang dapat menerapkan transformasi linier untuk masalah pemrograman linier apa pun untuk membuat "tinggi" sesuai dengan jumlah yang akan dimaksimalkan), maka dari titik mana pun seseorang dapat melakukan perjalanan sepanjang sisi ke titik tertinggi tanpa harus pergi "menurun". Apa yang membuat pemrograman integer "sulit" adalah bahwa tidak ada ruang solusi kontinu, tetapi ada banyak ruang solusi terpisah , dan tidak ada cara untuk bekerja secara bertahap menuju solusi optimal.
sumber
Jawaban lainnya benar, tetapi saya merasa sedikit teknis. Misalkan Anda telah menyapu (meniadakan) sebuah matriks dan mencari solusi apa pun dan matriksnya terlihat seperti ini:
Dalam pemrograman lineair, sekarang Anda dapat mengatur kolom non-pivot (x5, x6) menjadi 0, dan mengatur x4 menjadi 0,5 dan menemukan solusi yang sepele. Dalam pemrograman integer, Anda tidak bisa hanya mengatur kolom non-pivot ke 0. Solusinya lebih sulit (NP-hard) untuk ditemukan. Perhatikan juga bahwa solusinya ada di , jadi ini tidak terkait langsung dengan presisi hingga / tak terbatas.Q
sumber