Câu trả lời:
Để hiển thị một vấn đề đã hoàn tất NP, bạn cần:
Nói cách khác, đưa ra một số thông tin C
, bạn có thể tạo ra một thuật toán thời gian đa thức V
đó sẽ xác minh cho mỗi đầu vào có thể X
cho dù X
là trong phạm vi của bạn hay không.
Chứng minh rằng các vấn đề của bìa đỉnh (có nghĩa là, đối với một số đồ thị G
, có phải nó có một bộ đỉnh bìa kích thước k
như vậy mà mỗi cạnh trong G
có ít nhất một đỉnh trong trang bìa bộ ?) Là trong NP:
đầu vào của chúng tôi X
là một số đồ thị G
và một số con số k
(đây là từ định nghĩa vấn đề)
Lấy thông tin của chúng tôi C
để trở thành "bất kỳ tập hợp con nào có thể có của các đỉnh trong biểu đồ G
kích thước k
"
Sau đó, chúng ta có thể viết một thuật toán V
rằng, cho G
, k
và C
, sẽ trở lại cho dù đó là tập các đỉnh là một bìa đỉnh cho G
hay không, trong thời gian đa thức .
Sau đó, đối với mọi đồ thị G
, nếu tồn tại một số "tập hợp con có thể có của các đỉnh G
có kích thước k
" là một đỉnh bao phủ thì đó G
là trong NP
.
Lưu ý rằng chúng ta không cần tìm C
trong thời gian đa thức. Nếu chúng tôi có thể, vấn đề sẽ là `P.
Lưu ý rằng thuật toán V
nên làm việc cho tất cả các G
, đối với một số C
. Đối với mỗi đầu vào phải tồn tại thông tin có thể giúp chúng tôi xác minh xem đầu vào có nằm trong miền sự cố hay không. Có nghĩa là, không nên có đầu vào mà thông tin không tồn tại.
Điều này liên quan đến việc giải một bài toán NP-đầy đủ đã biết như SAT , tập hợp các biểu thức boolean ở dạng:
(A hoặc B hoặc C) và (D hoặc E hoặc F) và ...
trong đó biểu thức được thỏa mãn , tức là có một số cài đặt cho các boolean này, điều này làm cho biểu thức đúng .
Sau đó, giảm bài toán NP-đầy đủ thành bài toán của bạn trong thời gian đa thức .
Nghĩa là, được cung cấp một số đầu vào X
cho SAT
(hoặc bất kỳ vấn đề NP-complete nào bạn đang sử dụng), hãy tạo một số đầu vào Y
cho vấn đề của bạn, chẳng hạn như X
trong SAT nếu và chỉ khi Y
là vấn đề của bạn. Hàm f : X -> Y
phải chạy trong thời gian đa thức .
Trong ví dụ trên, đầu vào Y
sẽ là đồ thị G
và kích thước của bìa đỉnh k
.
Để có bằng chứng đầy đủ , bạn phải chứng minh cả hai:
đó X
là trong SAT
=> Y
trong vấn đề của bạn
and Y
in your problem => X
in SAT
.
Câu trả lời của marcog có một liên kết với một số vấn đề NP-đầy đủ khác mà bạn có thể giảm cho vấn đề của mình.
Chú thích: Ở bước 2 ( Chứng minh nó là NP-khó ), giảm một vấn đề NP-khó khác (không nhất thiết là NP-hoàn thành) thành vấn đề hiện tại, vì các bài toán NP-đầy đủ là một tập con của các bài toán NP-khó (đó là cũng trong NP).
Bạn cần giảm một vấn đề NP-Complete thành vấn đề bạn gặp phải. Nếu việc rút gọn có thể được thực hiện trong thời gian đa thức thì bạn đã chứng minh được rằng vấn đề của bạn là hoàn thành NP, nếu vấn đề đã ở NP, bởi vì:
Nó không dễ hơn bài toán NP-đầy đủ, vì nó có thể được rút gọn thành nó theo thời gian đa thức, điều này làm cho bài toán NP-Hard.
Xem phần cuối của http://www.ics.uci.edu/~eppstein/161/960312.html để biết thêm.
Để chứng minh rằng một bài toán L là hoàn toàn NP, chúng ta cần thực hiện các bước sau:
Đầu tiên, bạn chỉ ra rằng nó nằm trong NP.
Sau đó, bạn tìm thấy một bài toán khác mà bạn đã biết là NP hoàn chỉnh và chỉ ra cách bạn giảm bài toán NP Khó thành bài toán của bạn một cách đa thức.