Làm thế nào để chứng minh rằng một bài toán là hoàn thành NP?


108

Tôi có vấn đề với việc lên lịch. Tôi cần chứng minh rằng vấn đề là NP hoàn chỉnh. Phương pháp chứng minh NP hoàn chỉnh là gì?


Đọc "Giảm thiểu giữa các vấn đề tổ hợp" của Karp.
Paul Hankin

Câu trả lời:


146

Để hiển thị một vấn đề đã hoàn tất NP, bạn cần:

Cho thấy nó đang ở NP

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ể Xcho dù Xlà trong phạm vi của bạn hay không.

Thí dụ

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 knhư vậy mà mỗi cạnh trong Gcó ít nhất một đỉnh trong trang bìa bộ ?) Là trong NP:

  • đầu vào của chúng tôi Xlà một số đồ thị Gvà 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 đồ Gkích thước k"

  • Sau đó, chúng ta có thể viết một thuật toán Vrằng, cho G, kC, sẽ trở lại cho dù đó là tập các đỉnh là một bìa đỉnh cho Ghay 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 Gcó kích thước k" là một đỉnh bao phủ thì đó Glà trong NP.

Lưu ý rằng chúng ta không cần tìm Ctrong 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 Vnê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.

Chứng minh nó là NP Khó

Đ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 Xcho 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 Ycho vấn đề của bạn, chẳng hạn như Xtrong SAT nếu và chỉ khi Ylà vấn đề của bạn. Hàm f : X -> Yphải chạy trong thời gian đa thức .

Trong ví dụ trên, đầu vào Ysẽ là đồ thị Gvà 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:

  • đó Xlà trong SAT=> Ytrong vấn đề của bạn

  • and Yin your problem => Xin 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).


7
Tôi tự hỏi nếu có dữ liệu bị thiếu hoặc một lý do vòng tròn đằng sau điều này. Ý tôi là làm thế nào để 'chứng minh' một vấn đề nằm trong NP mà không đề cập đến vấn đề khác 'đã có trong NP'? Nó giống như nói "nó được làm bằng sắt vì một phần của nó được biết đến là sắt", đó không phải là một bằng chứng bằng sắt.
Hernán Eche

6
Theo như tôi nhớ, có một định lý được gọi là định lý Cook-Levin nói rằng SAT là NP-đầy đủ. Bằng chứng đó khá phức tạp hơn một chút so với những gì tôi đã nêu ở trên và tôi không nghĩ rằng tôi có thể giải thích nó theo cách của mình.
Laila Agaev

4
Nói chính xác hơn, Định lý Cook-Levin nói rằng SAT là NP-đầy đủ: bất kỳ vấn đề nào trong NP có thể được rút gọn theo thời gian đa thức bằng máy Turing xác định thành vấn đề xác định xem công thức Boolean có thỏa mãn hay không (SAT). Vì vậy, đó là phần còn thiếu mà bạn đang hỏi. Nếu bạn tra cứu định lý trên Wikipedia thì có một cách chứng minh, và bạn có thể tham khảo định lý trong phần chứng minh của mình. Điều đó nói rằng, giảm SAT thành một vấn đề nhất định là cách tôi được dạy để chứng minh NP-Completeness.
Laila Agaev

Vì vậy, câu hỏi của tôi kết thúc là nếu SAT có thể được giải quyết bằng đa thức tức là vấn đề P = NP .. Cảm ơn câu trả lời của bạn.
Hernán Eche

Bạn có thể vui lòng giải thích lý do tại sao chúng tôi không thể giảm một vấn đề khó NP thành vấn đề chúng tôi muốn, trong bước thứ hai? Nó có phải là một bài toán NP-hoàn thành không?
MLT

23

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.


2
+1 ai đó giải thích dễ hiểu. thay vì nói một loạt các tham chiếu đến các từ khóa mà tôi khó hiểu.
ColacX

22
Câu đầu tiên là back-to-phía trước: bạn cần phải giảm các vấn đề được biết đến NP-đầy đủ để vấn đề của riêng bạn. Điều này cho thấy rằng bài toán của bạn ít nhất cũng khó như bài toán NP-đầy đủ đã biết. Phần (b) cũng không chính xác: nếu bạn đã tìm thấy mức giảm thì bạn đã biết rằng vấn đề của bạn là NP-khó; câu hỏi duy nhất là liệu nó có nằm trong NP hay không (một số vấn đề, như Vấn đề tạm dừng, thì không). Iff nó là NP-hard và trong NP, sau đó là NP-complete (tức là "NP-hoàn chỉnh" cụ thể hơn "NP-cứng").
j_random_hacker

1
Tôi sẽ không nói a) dẫn đến mâu thuẫn, vì chúng ta không biết rằng P! = NP.
Chiel ten Brinke

8

Để 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:

  1. Chứng minh bài toán L của bạn thuộc NP (nghĩa là đã đưa ra một giải pháp mà bạn có thể xác minh nó trong thời gian đa thức)
  2. Chọn một bài toán NP-đầy đủ đã biết L '
  3. Mô tả thuật toán f biến đổi L 'thành L
  4. Chứng minh rằng thuật toán của bạn là đúng (về mặt hình thức: x ∈ L 'nếu và chỉ khi f (x) ∈ L)
  5. Chứng minh rằng thuật toán f chạy trong thời gian đa thức

7

Đầ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.


Không. Bạn cần phải chứng minh rằng bạn có thể giảm từ một bài toán hoàn chỉnh NP thành bài toán NP để chứng minh tính đầy đủ NP VÀ chứng minh nó hoàn toàn ở trong NP. NP khó không đi vào điều này, trừ khi bạn không thể chứng minh nó trong NP.
mrmemio29

6
  1. Làm quen với tập hợp con các bài toán NP Hoàn thành
  2. Chứng minh Độ cứng NP: Giảm một trường hợp tùy ý của một bài toán hoàn chỉnh NP thành một trường hợp của bài toán của bạn. Đây là phần lớn nhất của chiếc bánh và nơi mà sự quen thuộc với các bài toán NP Complete trả giá. Việc giảm bớt sẽ khó hơn hoặc ít hơn tùy thuộc vào vấn đề NP Complete mà bạn chọn.
  3. Chứng minh rằng vấn đề của bạn nằm trong NP: thiết kế một thuật toán có thể xác minh trong thời gian đa thức xem một ví dụ có phải là giải pháp hay không.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.