Mặc dù đối với một số vấn đề phổ biến, nó thực sự đúng, tôi nghĩ cả hai giả định là - tùy thuộc vào những gì bạn xác định là một vấn đề tối ưu hóa - không đúng.
Đầu tiên một số định nghĩa: hầu hết các vấn đề tối ưu hóa không phải là một phần của NP . Ví dụ cho vấn đề Knapsack : người ta không thể khai thác tính không xác định để xây dựng túi có giá trị nhất, đơn giản vì các nhánh không xác định khác nhau không có bộ nhớ dùng chung. NP cũng được định nghĩa là "có thể kiểm chứng đa thức" (xác minh chứng chỉ) [1, p. 34]
. Trong trường hợp này, chứng chỉ là ví dụ một túi : một chuỗi bit trong đó nếu bit thứ i được đặt, nó ngụ ý mục thứ i là một phần của túi. Bạn thực sự có thể kiểm tra trong thời gian đa thức nếu túi đó có giá trị hơn ngưỡng nhất định (đây là biến thể quyết định), nhưng bạn không thể - theo như chúng tôi biết - dựa trên một túi duy nhất, (số lượng đa thức của túi), quyết định xem túi đó có giá trị nhất trong tất cả các túi có thể. Đó là một sự khác biệt quan trọng giữa ví dụ NP và EXP : trong EXP , bạn có thể liệt kê tất cả các túi có thể và làm sổ sách kế toán về túi nào là tốt nhất.
Các biến thể quyết định những vấn đề tối ưu hóa là trong một số trường hợp một phần của NP , chúng ta cần thực hiện một sự phân biệt rõ ràng giữa các hương vị tối đa hóa và hương vị quyết định . Trong quyết định, câu hỏi là: " Đưa ra một vấn đề tối ưu hóa, và một tiện ích bị ràng buộc, có một giải pháp với một tiện ích lớn hơn hoặc bằng ràng buộc đó " (hoặc sửa đổi một chút cho vấn đề tối thiểu hóa).
Tôi cũng cho rằng bởi NP bạn có nghĩa là (giả) một phần của NP đó không phải là một phần của P . Nếu P = NP , tất nhiên NP-đầy đủ vẫn tồn tại, nhưng nó sẽ bằng P (chỉ trùng với P đối với một số khái niệm giảm, như giảm nhiều lần một đa thức của @ AndrásSalamon), điều đó không ấn tượng ( và sẽ giảm " khoảng cách " bạn nêu trong câu hỏi của bạn).
Tôi ngày càng nhận thấy rằng hầu hết các vấn đề riêng biệt là NP-đầy đủ.
Bây giờ chúng tôi đã sắp xếp ra: có rất nhiều vấn đề tối ưu hóa trong P : vấn đề đường đi ngắn nhất , vấn đề dòng chảy tối đa (đối với công suất tích phân), cây bao trùm tối thiểu và khớp tối đa . Mặc dù những vấn đề này có thể trông "tầm thường để giải quyết" với bạn, đây vẫn là những vấn đề tối ưu hóa, và trong nhiều trường hợp, việc xây dựng (và chứng minh tính đúng đắn) không dễ dàng như vậy. Vì vậy, yêu cầu không giữ tất cả các vấn đề riêng biệt là NP-đầy đủ. Do P không bằng NP , do đó, các vấn đề này không thể hoàn thành NP .
ΣPi
Trong khi đó tối ưu hóa các vấn đề liên tục hầu như luôn luôn dễ dàng đạt được.
Một vấn đề liên tục phổ biến đó là NP-hard là lập trình bậc hai .
x⃗
x⃗ T⋅Q⋅x⃗ 2+c⃗ T⋅x⃗
A⋅x⃗ ≤b⃗
Trên thực tế lập trình tuyến tính từ lâu đã được coi là NP-hard , nhưng với heuristic thực hiện rất tốt ( phương pháp Simplex ). Thuật toán Karmarkar của tuy nhiên là trong P .
Từ thời điểm vấn đề tối ưu hóa liên quan đến các đối tượng không lồi, nói chung sẽ khó - nếu không nói là không thể - để tìm ra một thuật toán hiệu quả.
Tài liệu tham khảo
[1]
Độ phức tạp tính toán, một cách tiếp cận hiện đại , Sanjeev Arora và Boaz Barak