Tại sao không phải là vấn đề ba lô được bao gồm trong danh mục của thuật toán lập trình tuyến tính mặc dù thực tế là câu lệnh vấn đề Knapsack có vẻ tương tự như các vấn đề trong lập trình tuyến tính.?Tại sao giải quyết Knapsack probl. không được coi là lập trình tuyến tính?
Trả lời
Ba lô có thể được viết dưới dạng chương trình số nguyên tuyến tính. Không giống như lập trình tuyến tính bình thường, vấn đề này yêu cầu các biến trong giải pháp là số nguyên. Lập trình tuyến tính được biết là có thể giải được trong thời gian đa thức, trong khi lập trình tuyến tính nguyên là NP-complete.
Bài tập cho người đọc: cho thấy 3SAT có thể được giảm xuống thành lập trình tuyến tính số nguyên.
Thông tin bên lề: có các thuật toán xấp xỉ cho các vấn đề như MAX-3SAT (một biến thể của 3SAT mà chúng tôi muốn tối đa hóa số mệnh đề thỏa mãn). Trước tiên, bạn viết MAX-3SAT làm một chương trình tuyến tính số nguyên. Sau đó, bạn thư giãn nó thành chương trình tuyến tính, bằng cách xóa giới hạn số nguyên. Sau đó, bạn giải quyết chương trình tuyến tính trong thời gian đa thức. Cuối cùng, với thực x i ∈ [0,1], bạn tròn họ số nguyên, hoặc tạo ra giải pháp số nguyên ngẫu nhiên y i nơi khả năng của y i = 1 là x i.
Như là một bổ sung: http://stackoverflow.com/q/3128001/395857 –
Điều đáng lưu ý là nói chung nó thường tương đối dễ dàng để giảm vấn đề NP cho ILP. –
- 1. Tại sao Redis được coi là CP?
- 2. Giải phương trình tuyến tính
- 3. Giải phương trình tuyến tính
- 4. động Lập trình và Ứng dụng Knapsack
- 5. R để giải quyết các vấn đề lập trình tuyến tính
- 6. R.styleable không thể giải quyết được, tại sao?
- 7. Tại sao Hibernate STRING không thể được giải quyết?
- 8. Tại sao Ninject không giải quyết các thuộc tính được bảo vệ trong lớp cơ sở?
- 9. Tại sao sizeof được coi là toán tử?
- 10. Tại sao javascript: void (0) được coi là có hại?
- 11. Tại sao mergesort không phải là động lập trình
- 12. Tại sao mảng Java này được coi là hai chiều?
- 13. Tại sao mã này được giải quyết thành sự thật?
- 14. Tại sao những từ này được coi là từ dừng?
- 15. Tại sao enums được coi là loại hợp chất?
- 16. Tại sao HTTP/SOAP được coi là "dày"
- 17. Tại sao các lập trình viên C# không được ruby làm lập trình viên java là
- 18. Làm cách nào để chọn trình giải mã lập trình tuyến tính nguyên?
- 19. Nếu SOAP bây giờ được coi là overengineered trên REST tại sao không WCF?
- 20. Tại sao GHCi không thể giải quyết loại [[]]?
- 21. Tại sao Visual Studio 2010 không giải quyết một ngoại lệ chưa được xử lý?
- 22. Tại sao MPI được coi là khó hơn bộ nhớ chia sẻ và Erlang được coi là dễ dàng hơn, khi cả hai đều thông điệp qua?
- 23. Tại sao không hiển thị được coi là một chuyển đổi trong haskell?
- 24. System.Web.Extensions Assembly không thể được giải quyết
- 25. Tại sao "0D0" được coi là số trong SQL Server 2008?
- 26. Tại sao quá trình xây dựng quá tải này giải quyết không chính xác?
- 27. nhibernate, không thể giải quyết thuộc tính
- 28. Tại sao Date.yfter được tính là Date.today?
- 29. Mẹo Haskell/tại sao không quy mô này tuyến tính?
- 30. Tại sao bằng cách sử dụng Đếm với IQueryable được coi là không khả thi
@ yes123 Trong lập trình tuyến tính, đó là các ràng buộc tuyến tính, không phải thời gian. – fgb