Sự khác biệt giữa NP, NP-Complete và NP-Hard là gì?


1107

Sự khác biệt giữa NP , NP-CompleteNP-Hard là gì?

Tôi biết nhiều tài nguyên trên web. Tôi muốn đọc những lời giải thích của bạn, và lý do là chúng có thể khác với những gì ở ngoài kia, hoặc có điều gì đó mà tôi không biết.

Câu trả lời:


1438

Tôi giả sử rằng bạn đang tìm kiếm các định nghĩa trực quan, vì các định nghĩa kỹ thuật đòi hỏi khá nhiều thời gian để hiểu. Trước hết, hãy nhớ một khái niệm cần thiết sơ bộ để hiểu những định nghĩa đó.

  • Vấn đề quyết định : Một vấn đề với câu trả lời hoặc không .

Bây giờ, chúng ta hãy định nghĩa các lớp phức tạp .

P

P là một lớp phức tạp đại diện cho tập hợp tất cả các vấn đề quyết định có thể được giải quyết trong thời gian đa thức .

Đó là, đưa ra một ví dụ của vấn đề, câu trả lời có hoặc không có thể được quyết định trong thời gian đa thức.

Thí dụ

Cho một đồ thị được kết nối G, các đỉnh của nó có thể được tô màu bằng hai màu sao cho không có cạnh nào là đơn sắc?

Thuật toán: bắt đầu với một đỉnh tùy ý, tô màu đỏ và tất cả các lân cận của nó màu xanh và tiếp tục. Dừng lại khi bạn hết các đỉnh hoặc bạn buộc phải tạo một cạnh có cả hai điểm cuối của nó có cùng màu.


NP

NP là một lớp phức tạp đại diện cho tập hợp tất cả các vấn đề quyết định mà các trường hợp trong đó câu trả lời là "có" có bằng chứng có thể được xác minh trong thời gian đa thức.

Điều này có nghĩa là nếu ai đó đưa cho chúng tôi một ví dụ về vấn đề và chứng chỉ (đôi khi được gọi là nhân chứng) cho câu trả lời là có, chúng tôi có thể kiểm tra xem nó có đúng trong thời gian đa thức hay không.

Thí dụ

Hệ số nguyên là trong NP. Đây là vấn đề đã cho các số nguyên nm, có một số nguyên fvới 1 < f < m, như vậy mà fchia n( flà một yếu tố nhỏ n)?

Đây là một vấn đề quyết định bởi vì câu trả lời là có hoặc không. Nếu ai đó đưa cho chúng tôi một ví dụ của vấn đề (vì vậy họ đưa cho chúng tôi số nguyên nm) và một số nguyên fvới 1 < f < m, và cho rằng đó flà một yếu tố của n(chứng chỉ), chúng tôi có thể kiểm tra câu trả lời trong thời gian đa thức bằng cách thực hiện phép chia n / f.


Hoàn thành NP

NP-Complete là một lớp phức tạp mà đại diện cho tập hợp tất cả các vấn đề Xtrong NP mà nó có thể giảm bất kỳ vấn đề NP khác Yđể Xtrong thời gian đa thức.

Theo trực giác điều này có nghĩa là chúng ta có thể giải quyết Ynhanh chóng nếu chúng ta biết cách giải quyết Xnhanh chóng. Chính xác, Ycó thể rút gọn thành X, nếu có một thuật toán thời gian đa thức fđể biến đổi các thể hiện ythành các Ythể x = f(y)hiện Xtrong thời gian đa thức, với thuộc tính mà câu trả lời ylà có, nếu và chỉ khi câu trả lời f(y)là có.

Thí dụ

3-SAT. Đây là vấn đề trong đó chúng tôi được cung cấp một kết hợp (AND) của các bất đồng 3 mệnh đề (OR), các câu lệnh có dạng

(x_v11 OR x_v21 OR x_v31) AND 
(x_v12 OR x_v22 OR x_v32) AND 
...                       AND 
(x_v1n OR x_v2n OR x_v3n)

trong đó mỗi biến x_vijlà một biến boolean hoặc phủ định của một biến từ danh sách xác định trước hữu hạn (x_1, x_2, ... x_n).

Có thể chỉ ra rằng mọi vấn đề NP đều có thể giảm xuống còn 3-SAT . Bằng chứng về điều này là kỹ thuật và yêu cầu sử dụng định nghĩa kỹ thuật của NP ( dựa trên các máy Turing không xác định ). Điều này được gọi là định lý Cook .

Điều làm cho các vấn đề hoàn thành NP trở nên quan trọng là nếu có thể tìm thấy thuật toán thời gian đa thức xác định để giải quyết một trong số chúng, mọi vấn đề NP đều có thể giải quyết được trong thời gian đa thức (một vấn đề để thống trị tất cả).


NP-cứng

Theo trực giác, đây là những vấn đề ít nhất là khó khăn như các vấn đề hoàn thành NP . Lưu ý rằng các vấn đề NP-hard không phải ở NPchúng không phải là vấn đề quyết định .

Định nghĩa chính xác ở đây là một vấn đề Xlà NP-hard, nếu có một vấn đề hoàn chỉnh NP Y, như vậy Ycó thể giảm xuống Xtrong thời gian đa thức .

Nhưng vì bất kỳ vấn đề hoàn thành NP nào cũng có thể được giảm xuống thành bất kỳ vấn đề hoàn thành NP nào khác trong thời gian đa thức, tất cả các vấn đề hoàn thành NP có thể được giảm xuống thành bất kỳ vấn đề NP-hard nào trong thời gian đa thức. Sau đó, nếu có một giải pháp cho một vấn đề NP-hard trong thời gian đa thức, thì có một giải pháp cho tất cả các vấn đề NP trong thời gian đa thức.

Thí dụ

Các vấn đề ngăn chặn là một vấn đề NP-hard. Đây là vấn đề đưa ra một chương trình Pvà đầu vào I, nó sẽ dừng lại? Đây là một vấn đề quyết định nhưng nó không nằm trong NP. Rõ ràng là bất kỳ vấn đề NP-đầy đủ có thể được giảm xuống vấn đề này. Một ví dụ khác, bất kỳ vấn đề NP-đầy đủ là NP-hard.

Vấn đề NP-Complete yêu thích của tôi là vấn đề Minesweeper .


P = NP

Đây là một vấn đề nổi tiếng nhất trong khoa học máy tính và là một trong những câu hỏi nổi bật quan trọng nhất trong khoa học toán học. Trên thực tế, Viện Clay đang cung cấp một triệu đô la cho một giải pháp cho vấn đề này ( bài viết của Stephen Cook trên trang web của Clay khá tốt).

Rõ ràng P là tập con của NP. Câu hỏi mở là liệu các vấn đề NP có giải pháp thời gian đa thức xác định hay không. Người ta tin rằng họ không. Dưới đây là một bài viết nổi bật gần đây về vấn đề mới nhất (và tầm quan trọng) của vấn đề P = NP: Trạng thái của vấn đề P so với NP .

Cuốn sách hay nhất về chủ đề này là Máy tính và Khả năng thu hút của Garey và Johnson.


32
@Paul Fisher: Tôi sẽ chỉ ra rằng SAT có thể giảm bớt vấn đề tạm dừng trong thời gian đa thức. Xem xét thuật toán sau: được đưa ra làm đầu vào cho một mệnh đề Itrên ncác biến, thử tất cả các 2^nphép gán có thể cho các biến và dừng lại nếu một cái thỏa mãn mệnh đề và nếu không thì nhập một vòng lặp vô hạn. Chúng tôi thấy rằng thuật toán này dừng lại khi và chỉ khi Ilà thỏa đáng. Do đó, nếu chúng ta có một thuật toán thời gian đa thức để giải bài toán tạm dừng thì chúng ta có thể giải SAT trong thời gian đa thức. Do đó, vấn đề tạm dừng là NP-hard.
jason

6
@Jason - Bạn không thể giảm một vấn đề có thể quyết định thành một vấn đề không thể giải quyết theo cách đó. Các vấn đề có thể quyết định phải dẫn đến một câu trả lời dứt khoát có hoặc không để được coi là có thể quyết định. Vấn đề dừng không có câu trả lời dứt khoát có hoặc bây giờ vì một câu trả lời tùy ý có thể ném bất kỳ giải pháp nào vào một vòng lặp.
rjzii

11
@Rob: Vâng, tôi có thể. Định nghĩa về giảm có thể không yêu cầu rằng vấn đề được giảm để có thể giải quyết được. Điều này đúng cho cả hai mức giảm một hoặc giảm Turing.
jason

5
@Rob: Vâng, được thôi, nếu bạn muốn tiếp tục điều này. Đầu tiên, "Quyết định" không đồng bộ với "vấn đề quyết định" như bạn đã sử dụng. "Có thể quyết định" có nghĩa là, có một "phương pháp hiệu quả" để xác định câu trả lời. "Phương pháp hiệu quả", tất nhiên, có một định nghĩa kỹ thuật. Hơn nữa, "decidable" cũng có thể được định nghĩa theo "các hàm tính toán". Vì vậy, vấn đề tạm dừng là một vấn đề quyết định ("Chương trình này có dừng lại không?" Là một câu hỏi có / không) nhưng nó không thể giải quyết được; không có phương pháp hiệu quả để xác định liệu một trường hợp của vấn đề tạm dừng có dừng lại hay không.
jason

21
Sử dụng vấn đề Dừng như một "ví dụ kinh điển" của vấn đề NP-hard là không chính xác. Điều này giống như nói: "Thái Bình Dương là một ví dụ cổ điển của một hồ cá nước mặn."
Michael

261

Tôi đã nhìn xung quanh và thấy nhiều lời giải thích dài. Dưới đây là một biểu đồ nhỏ có thể hữu ích để tóm tắt:

Lưu ý mức độ khó tăng từ trên xuống dưới: mọi NP có thể giảm xuống NP-Complete và mọi NP-Complete đều có thể giảm xuống NP-Hard , tất cả chỉ trong thời gian P (đa thức).

Nếu bạn có thể giải quyết một loại vấn đề khó hơn trong thời gian P, điều đó có nghĩa là bạn đã tìm ra cách giải quyết tất cả các vấn đề dễ dàng hơn trong thời gian P (ví dụ: chứng minh P = NP, nếu bạn tìm ra cách giải quyết bất kỳ vấn đề NP-Complete nào trong P thời gian).

Giới thiệu
| Loại vấn đề | Có thể kiểm chứng trong thời gian P | Có thể giải quyết trong thời gian P | Tăng độ khó
Giới thiệu |
| P | Vâng | Vâng | |
| NP | Vâng | Có hay không * | |
| Hoàn thành NP | Vâng | Không biết | |
| NP-cứng | Có hay không ** | Không biết *** | |
Giới thiệu

Ghi chú trên Yeshoặc Nomục:

  • * Một vấn đề NP cũng là P có thể giải quyết được trong thời gian P.
  • ** Một vấn đề NP-Hard cũng là NP-Complete có thể kiểm chứng được trong thời gian P.
  • *** Có thể xảy ra sự cố NP-Complete (tất cả đều là tập hợp con của NP-hard). Phần còn lại của NP khó thì không.

Tôi cũng thấy sơ đồ này khá hữu ích trong việc xem tất cả các loại này tương ứng với nhau như thế nào (chú ý nhiều hơn đến nửa bên trái của sơ đồ).


Tôi có một nghi ngờ liên quan đến câu trả lời của bạn. Tôi đã hỏi nó trong một câu hỏi riêng biệt, nhưng tôi được yêu cầu đăng nó ở đây. Bạn có thể vui lòng giúp tôi ở đây? stackoverflow.com/questions/21005651/
hy

Không biết liệu các vấn đề NP-đầy đủ có thể giải quyết được trong thời gian đa thức hay không. Ngoài ra, các bài toán hoàn thành NP là NP-hard, vì vậy một số bài toán NP-hard có thể kiểm chứng được trong thời gian đa thức, và một số cũng có thể giải quyết được thời gian đa thức.
Falk Hüffner

Bảng này không chính xác và tự mâu thuẫn. Ngay cả khi bạn cho rằng NP! = P, chưa được chứng minh, nó vẫn không chính xác. Ví dụ, lớp NP-Hard bao gồm các vấn đề NP-Complete; do đó, bảng của bạn tuyên bố rằng các vấn đề NP-Complete đồng thời có thể kiểm chứng được trong thời gian đa thức và không thể kiểm chứng được trong thời gian đa thức.
Michael

3
@ FalkHüffner Cảm ơn, bảng đã được cập nhật (là lỗi khi dịch từ sơ đồ Venn).
Johnson Wong

1
@PeterRaeves Tất cả các vấn đề hoàn thành NP là NP-hard, theo định nghĩa: NP-Complete = (NP và NP-hard). Điều ngược lại là không đúng: có những vấn đề (chẳng hạn như Sự cố dừng) trong NP-hard không hoàn toàn trong NP. "NP (không thể giải được trong thời gian đa thức)" - đó không phải là ý nghĩa của NP. NP là "Không xác định-đa thức". Tất cả các vấn đề trong P cũng nằm trong NP. Cho dù nghịch đảo là đúng là nổi tiếng không rõ.
Jim Balter

73

Đây là một câu trả lời rất không chính thức cho câu hỏi được hỏi.

3233 có thể được viết là tích của hai số khác lớn hơn 1 không? Có cách nào để đi bộ một con đường xung quanh tất cả Bảy cây cầu của Königsberg mà không cần đi cầu nào hai lần không? Đây là những ví dụ về các câu hỏi có chung một đặc điểm. Có thể không rõ ràng làm thế nào để xác định câu trả lời một cách hiệu quả, nhưng nếu câu trả lời là "có", thì sẽ có một cách ngắn gọn và nhanh chóng để kiểm tra bằng chứng. Trong trường hợp đầu tiên, một nhân tố không tầm thường là 51; trong lần thứ hai, một tuyến đường để đi bộ các cây cầu (phù hợp với các ràng buộc).

Một vấn đề quyết định là một tập hợp các câu hỏi có hoặc không có câu trả lời chỉ khác nhau trong một tham số. Giả sử vấn đề COMPOSITE = {"Là nhỗn hợp": nlà số nguyên} hay EULERPATH = {"Đồ thị Gcó đường dẫn Euler không?": GLà đồ thị hữu hạn}.

Bây giờ, một số vấn đề quyết định cho vay hiệu quả, nếu không phải là thuật toán rõ ràng. Euler đã phát hiện ra một thuật toán hiệu quả cho các vấn đề như "Bảy cây cầu của Königsberg" hơn 250 năm trước.

Mặt khác, đối với nhiều vấn đề quyết định, không rõ ràng làm thế nào để có câu trả lời - nhưng nếu bạn biết thêm một số thông tin, thì rõ ràng làm thế nào để chứng minh rằng bạn đã có câu trả lời đúng. COMPOSITE là như thế này: Phân chia thử nghiệm là thuật toán rõ ràng và rất chậm: để tính một số có 10 chữ số, bạn phải thử một số thứ như 100.000 ước số có thể. Nhưng nếu, chẳng hạn, có ai đó nói với bạn rằng 61 là số chia của 3233, thì phép chia dài đơn giản là một cách hiệu quả để thấy rằng chúng đúng.

NP lớp phức tạp là lớp các vấn đề quyết định trong đó các câu trả lời 'có' được nêu ngắn gọn, nhanh chóng kiểm tra bằng chứng. Giống như COMPOSITE. Một điểm quan trọng là định nghĩa này không nói lên điều gì về mức độ khó của vấn đề. Nếu bạn có một cách chính xác, hiệu quả để giải quyết vấn đề quyết định, chỉ cần viết ra các bước trong giải pháp là đủ chứng minh.

Nghiên cứu thuật toán tiếp tục, và các thuật toán thông minh mới được tạo ra mọi lúc. Một vấn đề bạn có thể không biết làm thế nào để giải quyết hiệu quả ngày hôm nay có thể có một giải pháp hiệu quả (nếu không rõ ràng) vào ngày mai. Trên thực tế, các nhà nghiên cứu phải mất đến năm 2002 để tìm ra giải pháp hiệu quả cho COMPOSITE! Với tất cả những tiến bộ này, người ta thực sự phải tự hỏi: Có phải đây là một chút về việc có bằng chứng ngắn chỉ là một ảo ảnh? Có lẽ mọi vấn đề quyết định cho vay bằng chứng hiệu quả có một giải pháp hiệu quả? Không ai biết .

Có lẽ đóng góp lớn nhất cho lĩnh vực này đi kèm với việc phát hiện ra một loại vấn đề NP đặc biệt. Bằng cách chơi xung quanh với các mô hình mạch để tính toán, Stephen Cook đã tìm ra một vấn đề quyết định của giống NP có thể chứng minh là khó hoặc khó hơn mọi vấn đề NP khác. Một giải pháp hiệu quả cho vấn đề thỏa mãn boolean có thể được sử dụng để tạo ra một giải pháp hiệu quả cho bất kỳ vấn đề nào khác trong NP. Ngay sau đó, Richard Karp đã chỉ ra rằng một số vấn đề quyết định khác có thể phục vụ cùng một mục đích. Những vấn đề này, theo một nghĩa nào đó, những vấn đề "khó nhất" trong NP, được gọi là các vấn đề hoàn thành NP .

Tất nhiên, NP chỉ là một lớp các vấn đề quyết định. Nhiều vấn đề không được nêu một cách tự nhiên theo cách này: "tìm các yếu tố của N", "tìm đường đi ngắn nhất trong biểu đồ G truy cập mọi đỉnh", "đưa ra một tập các phép gán biến làm cho biểu thức boolean sau đúng". Mặc dù người ta có thể nói một cách không chính thức về một số vấn đề như vậy là "trong NP", nhưng về mặt kỹ thuật điều đó không có ý nghĩa nhiều - chúng không phải là vấn đề quyết định. Một số trong những vấn đề này thậm chí có thể có cùng loại sức mạnh như một vấn đề hoàn chỉnh NP: một giải pháp hiệu quả cho những vấn đề (không quyết định) này sẽ dẫn trực tiếp đến một giải pháp hiệu quả cho bất kỳ vấn đề NP nào. Một vấn đề như thế này được gọi là NP-hard .


67

P (Polynomial Time): Như tên gọi của nó, đây là những vấn đề có thể được giải quyết trong thời gian đa thức.

NP (Thời gian không xác định-đa thức): Đây là những vấn đề quyết định có thể được xác minh trong thời gian đa thức. Điều đó có nghĩa là, nếu tôi cho rằng có một giải pháp thời gian đa thức cho một vấn đề cụ thể, bạn yêu cầu tôi chứng minh điều đó. Sau đó, tôi sẽ cung cấp cho bạn một bằng chứng mà bạn có thể dễ dàng xác minh trong thời gian đa thức. Những loại vấn đề được gọi là vấn đề NP. Lưu ý rằng, ở đây chúng tôi không nói về việc có một giải pháp thời gian đa thức cho vấn đề này hay không. Nhưng chúng ta đang nói về việc xác minh giải pháp cho một vấn đề nhất định trong thời gian đa thức.

NP-Hard: Đây ít nhất cũng khó như các vấn đề khó nhất trong NP. Nếu chúng ta có thể giải quyết các vấn đề này trong thời gian đa thức, chúng ta có thể giải quyết bất kỳ vấn đề NP nào có thể tồn tại. Lưu ý rằng những vấn đề này không nhất thiết là vấn đề NP. Điều đó có nghĩa là, chúng tôi có thể / không thể xác minh giải pháp cho những vấn đề này trong thời gian đa thức.

NP-Complete: Đây là những vấn đề cả NP và NP-Hard. Điều đó có nghĩa là, nếu chúng ta có thể giải quyết các vấn đề này, chúng ta có thể giải quyết bất kỳ vấn đề NP nào khác và các giải pháp cho các vấn đề này có thể được xác minh trong thời gian đa thức.


Vì vậy, bạn chỉ quyết định sao chép các định nghĩa từ đâu đó?
Arun Satyarth

1
Câu trả lời có ý nghĩa!
Konstantin

2
@ArunSatyarth Từ đâu?
ý nghĩa-vấn đề

3
Câu trả lời hay nhất vì nó ngắn gọn, sử dụng thuật ngữ vừa đủ, có câu người bình thường (không khó đọc những thứ chính xác nhất có thể), và đáng ngạc nhiên là câu trả lời duy nhất viết ra những gì N đại diện.
ý nghĩa-vấn đề

62

Ngoài các câu trả lời tuyệt vời khác, đây là lược đồ điển hình mà mọi người sử dụng để hiển thị sự khác biệt giữa NP, NP-Complete và NP-Hard:

nhập mô tả hình ảnh ở đây


1
Có chứng minh rằng có tồn tại một vấn đề trong NP-Hard không có trong NP-Complete không? Bởi vì hình ảnh này cho thấy nó. Cảm ơn bạn.
Hilder Vitor Lima Pereira

9
@VitorLima có, vd: các vấn đề hoàn thành EXPSPACE là NP-hard nhưng được chứng minh là không hoàn thành NP.
Franck Dernoncourt

2
Ok, cảm ơn bạn. Tôi tìm thấy một số tài liệu tham khảo nói về nó. Ví dụ: cái này: Princeton.edu/~achaney/tmve/wiki100k/docs/NP-hard.html
Hilder Vitor Lima Pereira

47

Cách dễ nhất để giải thích NP v. Và như vậy mà không đi sâu vào kỹ thuật là so sánh "các vấn đề từ" với "các vấn đề trắc nghiệm".

Khi bạn đang cố gắng giải quyết một "vấn đề từ ngữ", bạn phải tìm giải pháp từ đầu. Khi bạn đang cố gắng giải quyết "vấn đề trắc nghiệm", bạn có một lựa chọn: hoặc giải quyết nó như bạn sẽ là "vấn đề từ ngữ", hoặc cố gắng đưa ra từng câu trả lời cho bạn và chọn câu trả lời phù hợp.

Điều thường xảy ra là "bài toán trắc nghiệm" dễ hơn nhiều so với "bài toán đố" tương ứng: thay thế câu trả lời của thí sinh và kiểm tra xem chúng có phù hợp có thể đòi hỏi ít nỗ lực hơn so với tìm câu trả lời đúng từ đầu không.

Bây giờ, nếu chúng ta đồng ý nỗ lực mất thời gian đa thức "dễ dàng" thì lớp P sẽ bao gồm "các vấn đề từ dễ" và NP lớp sẽ bao gồm "các vấn đề dễ lựa chọn".

Bản chất của P v. NP là câu hỏi: "Có bất kỳ vấn đề trắc nghiệm dễ dàng nào không dễ dàng như các vấn đề từ ngữ" không? Đó là, có vấn đề nào dễ dàng xác minh tính hợp lệ của một câu trả lời nhất định nhưng việc tìm ra câu trả lời đó từ đầu có khó không?

Bây giờ chúng tôi hiểu trực giác NP là gì, chúng tôi phải thử thách trực giác của mình. Nó chỉ ra rằng có "vấn đề trắc nghiệm", theo một cách nào đó, khó nhất trong tất cả chúng: nếu ai đó tìm ra giải pháp cho một trong những vấn đề "khó nhất trong tất cả" thì người ta có thể tìm ra giải pháp cho TẤT CẢ Vấn đề NP! Khi Cook phát hiện ra điều này 40 năm trước, nó đã đến như một sự ngạc nhiên hoàn toàn. Những vấn đề "khó nhất trong tất cả" được gọi là NP-hard. Nếu bạn tìm thấy "giải pháp cho vấn đề từ" cho một trong số họ, bạn sẽ tự động tìm "giải pháp cho vấn đề từ" cho mỗi "vấn đề trắc nghiệm dễ dàng"!

Cuối cùng, các vấn đề hoàn thành NP là những vấn đề đồng thời là NP và NP-hard. Theo sự tương tự của chúng tôi, chúng đồng thời "dễ như các vấn đề trắc nghiệm" và "khó nhất trong số chúng là các vấn đề từ ngữ".


18

Các vấn đề hoàn thành NP là những vấn đề cả NP-Hard và NP lớp phức tạp. Do đó, để chỉ ra rằng bất kỳ vấn đề nào được đưa ra là NP-đầy đủ, bạn cần chỉ ra rằng vấn đề nằm ở NP và đó là NP-hard.

Các vấn đề nằm trong lớp phức tạp NP có thể được giải quyết một cách không xác định trong thời gian đa thức và một giải pháp khả thi (nghĩa là chứng chỉ) cho một vấn đề trong NP có thể được xác minh tính chính xác trong thời gian đa thức.

Một ví dụ về giải pháp không xác định cho vấn đề k-clique sẽ là một cái gì đó như:

1) chọn ngẫu nhiên k nút từ biểu đồ

2) xác minh rằng các nút k này tạo thành một cụm.

Chiến lược trên là đa thức về kích thước của đồ thị đầu vào và do đó, bài toán k-clique nằm trong NP.

Lưu ý rằng tất cả các vấn đề có thể giải quyết được trong thời gian đa thức cũng nằm trong NP.

Cho thấy một vấn đề là NP-hard thường liên quan đến việc giảm từ một số vấn đề NP-hard khác sang vấn đề của bạn bằng cách sử dụng ánh xạ thời gian đa thức: http://en.wikipedia.org/wiki/Redraction_(complexity)


Không phải tôi thấy bất cứ điều gì trong câu trả lời này là không chính xác, nhưng tôi không biết tại sao nó lại được chấp nhận. Nó không thực sự cung cấp nhiều cho những gì OP yêu cầu. Nó không thực sự khác biệt so với những giải thích tiêu chuẩn về những vấn đề này và không có bất kỳ lời giải thích rõ ràng nào về những gì tạo ra những vấn đề này trong các lớp này. Không đáng để downvote, nhưng chắc chắn không đáng để trả lời chấp nhận.
San Jacinto

18

Tôi nghĩ rằng chúng ta có thể trả lời ngắn gọn hơn nhiều. Tôi đã trả lời một câu hỏi liên quan và sao chép câu trả lời của tôi từ đó

Nhưng trước tiên, một vấn đề NP-hard là một vấn đề mà chúng ta không thể chứng minh rằng một giải pháp thời gian đa thức tồn tại. Độ cứng NP của một số "vấn đề-P" thường được chứng minh bằng cách chuyển đổi một vấn đề NP-hard đã được chứng minh thành "vấn đề-P" trong thời gian đa thức.

Để trả lời phần còn lại của câu hỏi, trước tiên bạn cần hiểu những vấn đề NP-hard nào cũng hoàn thành NP. Nếu một vấn đề NP-hard thuộc về NP, thì đó là NP-Complete. Để thuộc về NP, một vấn đề cần phải là

(i) một vấn đề quyết định,
(ii) số lượng giải pháp cho vấn đề phải là hữu hạn và mỗi giải pháp nên có độ dài đa thức và
(iii) đưa ra một giải pháp độ dài đa thức, chúng ta có thể nói liệu câu trả lời cho vấn đề là có / không

Bây giờ, thật dễ dàng để thấy rằng có thể có nhiều vấn đề NP-hard không thuộc về NP và khó giải quyết hơn. Lấy ví dụ trực quan, phiên bản tối ưu hóa của nhân viên bán hàng du lịch nơi chúng tôi cần tìm lịch trình thực tế khó hơn phiên bản quyết định của nhân viên bán hàng du lịch nơi chúng tôi chỉ cần xác định liệu lịch trình có độ dài <= k có tồn tại hay không.


5

Có những câu trả lời thực sự hay cho câu hỏi đặc biệt này, vì vậy không có lý do gì để viết lời giải thích của riêng tôi. Vì vậy, tôi sẽ cố gắng đóng góp với một nguồn tài nguyên tuyệt vời về các lớp phức tạp tính toán khác nhau.

Đối với ai đó nghĩ rằng độ phức tạp tính toán chỉ là về P và NP, đây là tài nguyên toàn diện nhất về các vấn đề phức tạp tính toán khác nhau. Ngoài các vấn đề được OP yêu cầu, nó đã liệt kê khoảng 500 loại vấn đề tính toán khác nhau với các mô tả hay và danh sách các tài liệu nghiên cứu cơ bản mô tả về lớp học.


3

Theo tôi hiểu, một vấn đề khó np không "khó" hơn một vấn đề hoàn thành np . Trong thực tế, theo định nghĩa, mọi vấn đề hoàn thành np là:

  1. trong NP
  2. khó khăn

nhập mô tả hình ảnh ở đây

- Giới thiệu. đến các thuật toán (3ed) của Cormen, Leiserson, Rivest và Stein, trg 1069


3
Hiểu biết của bạn là không chính xác. Định nghĩa về NP-Complete của bạn là chính xác nhưng không ảnh hưởng đến tuyên bố đầu tiên của bạn. Tất cả các vấn đề trong NP-hard ít nhất cũng khó như các vấn đề trong NP- Complete; một số (ví dụ: Vấn đề dừng, cực kỳ khó và en.wikipedia.org/wiki/EXPSPACE ) khó hơn nhiều.
Jim Balter

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.