NP-đầy đủ trong khoa học máy tính là gì?


429

Một vấn đề NP-đầy đủ là gì? Tại sao nó là một chủ đề quan trọng trong khoa học máy tính?


5
Bạn có thể quan tâm đến câu trả lời cho câu hỏi này: stackoverflow.com/questions/111307/ Kẻ
Dan Dyer

1
Chà, tôi quyết định viết câu trả lời của riêng mình vì tôi không thích cách trình bày câu trả lời được chấp nhận và bao gồm một liên kết đến câu hỏi P = NP.
grom

1
Có một bài giảng arsdigita rất hay về toán học rời rạc giải thích vấn đề NP- Complete là gì. 50 phút đầu tiên chủ yếu là về đại số boolean. Vì vậy, hãy nhảy ngay đến đầu phút 53 nếu bạn chỉ quan tâm đến các khái niệm về P, NP, tính đầy đủ NP, vấn đề thỏa mãn và giảm boolean.
davitenio

1
Chúng tôi sẽ không bao giờ biết vì với một số tiền lớn, nó sẽ không bao giờ hoàn thành;)
Pete Alvin

1
Tôi rất thích và thực sự khuyên bạn nên kiểm tra giải thích video này: youtube.com/watch?v=YX40hbAHx3s
Maksym Ovsianikov

Câu trả lời:


209

NP là viết tắt của thời gian đa thức không xác định .

Điều này có nghĩa là vấn đề có thể được giải quyết trong thời gian đa thức bằng cách sử dụng máy Turing không xác định (như máy Turing thông thường nhưng cũng bao gồm chức năng "lựa chọn" không xác định). Về cơ bản, một giải pháp phải được kiểm tra trong thời gian poly. Nếu đó là trường hợp và một vấn đề NP đã biết có thể được giải quyết bằng cách sử dụng vấn đề đã cho với đầu vào được sửa đổi (vấn đề NP có thể được giảm xuống thành vấn đề đã cho) thì vấn đề là NP đã hoàn tất.

Điều chính để tránh xa một vấn đề hoàn chỉnh NP là nó không thể được giải quyết trong thời gian đa thức theo bất kỳ cách nào đã biết. NP-Hard / NP-Complete là một cách cho thấy rằng một số loại vấn đề nhất định không thể giải quyết được trong thời gian thực tế.

Chỉnh sửa: Như những người khác đã lưu ý, thường có các giải pháp gần đúng cho các vấn đề NP-Complete. Trong trường hợp này, giải pháp gần đúng thường đưa ra một xấp xỉ gần đúng bằng cách sử dụng ký hiệu đặc biệt cho chúng ta biết mức độ gần đúng của nó.


2
"... một vấn đề NP có thể được giảm xuống thành vấn đề nhất định ..." - một hạn chế quan trọng đối với việc giảm là nó phải là đa thức xác định.
Rafał Dowgird

2
Ký hiệu O () là ký hiệu toán học chung được sử dụng ở mọi nơi: thuật toán xấp xỉ thực sự được trao cho độ chính xác của O () - tra cứu bất kỳ tài liệu thuật toán gần đúng nào trên arxiv.org
Ying Xiao

1
Để làm rõ một chút, các vấn đề NP đang tham khảo các máy Turing không xác định. Vẫn chưa biết liệu một vấn đề hoàn chỉnh NP có thể được giải quyết trong thời gian đa thức trên máy Turing xác định hay không.
rjzii

1
@Yuval: Chỉ để làm cho nó rõ ràng. Những gì bạn đã có trước đó là hoàn toàn sai (trừ khi P = NP). Từ nhận xét của bạn tôi có cảm giác rằng bạn nghĩ cả hai phiên bản đều đúng. Nếu không, tôi xin lỗi.

33
Câu trả lời này không đầy đủ và dễ hiểu, và tôi không thể hiểu tại sao nó có quá nhiều sự ủng hộ.
nbro

428

NP là gì?

NP là tập hợp tất cả các vấn đề quyết định (câu hỏi có câu trả lời có hoặc không) mà câu trả lời 'có' có thể được xác minh trong thời gian đa thức (O (n k ) trong đó n là kích thước của vấn đề và k là một hằng số) bởi một máy Turing xác định . Thời gian đa thức đôi khi được sử dụng như định nghĩa nhanh hay nhanh .

P là gì?

P là 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 bằng máy Turing xác định . Vì chúng có thể được giải trong thời gian đa thức, chúng cũng có thể được xác minh trong thời gian đa thức. Do đó P là tập con của NP.

Là gì NP-đầy đủ ?

Một vấn đề x trong NP cũng nằm trong NP-Complete khi và chỉ khi mọi vấn đề khác trong NP có thể nhanh chóng (tức là trong thời gian đa thức) chuyển thành x.

Nói cách khác:

  1. x nằm trong NP và
  2. Mọi vấn đề trong NP đều có thể giảm xuống x

Vì vậy, điều khiến NP-Complete trở nên thú vị là nếu bất kỳ một trong những vấn đề NP-Complete được giải quyết nhanh chóng, thì tất cả các vấn đề NP đều có thể được giải quyết nhanh chóng.

Xem thêm bài đăng "P = NP?", Và tại sao nó lại là một câu hỏi nổi tiếng như vậy?

Là gì NP-cứng ?

NP-Hard là những vấn đề ít nhất cũng khó như những vấn đề khó nhất trong NP. Lưu ý rằng các vấn đề NP-Complete cũng là NP-hard. Tuy nhiên, không phải tất cả các vấn đề NP-hard đều là NP (hoặc thậm chí là vấn đề quyết định), mặc dù có NPtiền tố. Đó là NP trong NP-hard không có nghĩa là thời gian đa thức không xác định . Vâng, điều này là khó hiểu, nhưng cách sử dụng của nó là cố thủ và không có khả năng thay đổi.


4
"Đó là NP trong NP-hard không có nghĩa là không đa thức" <- NP trong NP-đầy đủ (hoặc bất cứ nơi nào khác) cũng không có nghĩa là không đa thức.
sepp2k

1
Cảm ơn sepp2k đã sửa chữa. Tôi muốn nói nó không có nghĩa là NP (tức là thời gian đa thức không xác định).
grom

1
Tôi nghĩ rằng câu trả lời của bạn đơn giản hóa nhiều hoặc nhiều hơn những người khác trong chủ đề này. Nhưng đây vẫn là một vấn đề rất khó đối với tôi để nắm bắt ... Đoán đó là lý do tại sao họ trả tiền cho các thuật toán lớn.
SoftwareSavant

3
Về NP: Tôi nghĩ nó nên là: Vấn đề có thể được giải quyết bằng máy Turing không điều kiện. (nonderter hành chứ không phải da liễu)
hqt

2
@hqt Những gì tôi viết là chính xác .. Lưu ý từ "đã xác minh". Bạn cũng đúng, NP có thể được giải trong thời gian đa thức bằng máy Turing không xác định
grom

32

NP-Complete có nghĩa là một cái gì đó rất cụ thể và bạn phải cẩn thận nếu không bạn sẽ hiểu sai định nghĩa. Đầu tiên, một vấn đề NP là một vấn đề có / không sao cho

  1. Có bằng chứng thời gian đa thức cho mọi trường hợp của vấn đề với câu trả lời "có" rằng câu trả lời là "có" hoặc (tương đương)
  2. Tồn tại một thuật toán đa thức thời gian (có thể sử dụng các biến ngẫu nhiên) có xác suất trả lời là "không" nếu câu trả lời cho một trường hợp của vấn đề là "có" và sẽ nói "không" 100% thời gian nếu câu trả lời là không." Nói cách khác, thuật toán phải có tỷ lệ âm tính giả dưới 100% và không có giá trị dương.

Một vấn đề X là NP-Complete nếu

  1. X nằm trong NP và
  2. Đối với bất kỳ vấn đề Y nào trong NP, có một "rút gọn" từ Y thành X: thuật toán thời gian đa thức biến đổi bất kỳ trường hợp nào của Y thành một thể hiện của X sao cho câu trả lời cho thể hiện Y là "có" nếu và chỉ nếu câu trả lời X-dụ là "có".

Nếu X là NP hoàn chỉnh và tồn tại thuật toán xác định, thời gian đa thức có thể giải quyết chính xác tất cả các trường hợp của X (0% dương tính giả, 0% âm tính giả), thì mọi vấn đề trong NP đều có thể được giải quyết trong đa thức xác định- thời gian (bằng cách giảm xuống X).

Cho đến nay, không ai nghĩ ra thuật toán đa thức thời gian xác định như vậy, nhưng không ai chứng minh được điều đó không tồn tại (có một triệu đô la cho bất kỳ ai có thể làm được: đó là vấn đề P = NP ). Điều đó không có nghĩa là bạn không thể giải quyết một trường hợp cụ thể của vấn đề NP-Complete (hoặc NP-Hard). Điều đó chỉ có nghĩa là bạn không thể có thứ gì đó sẽ hoạt động đáng tin cậy trong tất cả các trường hợp của một vấn đề giống như cách bạn có thể sắp xếp một cách đáng tin cậy một danh sách các số nguyên. Bạn rất có thể có thể đưa ra một thuật toán sẽ hoạt động rất tốt trên tất cả các trường hợp thực tế của bài toán NP-Hard.


1
Tôi không thích khoe khoang, nhưng tôi khá tự hào về thuật toán thời gian đa thức xác định mà tôi đã chứng minh là không tồn tại. ;)
Kyle Cronin

20
Tôi đã phát hiện ra một bằng chứng thực sự tuyệt vời về điều này, mà nhận xét này quá hẹp để chứa;)
quick_dry

Điều kiện # 2 là một tuyên bố của P =? NP, không phải là định nghĩa chuẩn về tính đầy đủ của NP. Nó phải là: tồn tại một thuật toán đa thời gian xác định có thể biến đổi bất kỳ trường hợp NP X nào khác thành một thể hiện Y của vấn đề này , câu trả lời cho Y là "có" nếu và chỉ khi câu trả lời cho X là "có".
Chris Conway

"Bạn phải cẩn thận nếu không bạn sẽ hiểu sai định nghĩa" - như đã được chứng minh bằng chính câu trả lời này. Câu trả lời này là một phần đúng nhưng nó chắc chắn không nên được chấp nhận.
Lập trình viên Windows

29

Về cơ bản các vấn đề của thế giới này có thể được phân loại thành

         1) Vấn đề không thể giải quyết 2) Vấn đề khó hiểu 3) Vấn đề NP 4) Vấn đề P


         1) Điều đầu tiên là không có giải pháp cho vấn đề. 2) Thứ hai là thời gian theo cấp số nhân (đó là O (2 ^ n) ở trên). 3) Thứ ba được gọi là NP. 4) Thứ tư là vấn đề dễ dàng.


P: đề cập đến một giải pháp cho vấn đề Thời gian đa thức.

NP: đề cập đến thời gian đa thức để tìm giải pháp. Chúng tôi không chắc chắn không có giải pháp Thời gian đa thức, nhưng một khi bạn cung cấp giải pháp, giải pháp này có thể được xác minh trong Thời gian đa thức.

NP Complete: đề cập đến Thời gian đa thức chúng ta vẫn chưa tìm ra giải pháp, nhưng nó có thể được xác minh trong Thời gian đa thức. Vấn đề NPC trong NP là vấn đề khó khăn hơn, vì vậy nếu chúng tôi có thể chứng minh rằng chúng tôi có giải pháp P cho vấn đề NPC thì vấn đề NP có thể được tìm thấy trong giải pháp P.

NP Hard: đề cập đến Polynomial Time vẫn chưa tìm ra giải pháp, nhưng chắc chắn là không thể xác minh được trong Polynomial Time. Vấn đề NP Hard vượt qua khó khăn NPC.


Vui mừng khi thấy câu trả lời này, phần phân loại khá biểu cảm cho toàn bộ khái niệm. Tôi nghĩ vấn đề tương tác là vấn đề NP.
PeerNet

22

NP-Complete là một lớp các vấn đề.

Lớp học Pbao gồm những vấn đề có thể giải quyết được trong thời gian đa thức . Ví dụ, chúng có thể được giải trong O (n k ) cho một số k không đổi, trong đó n là kích thước của đầu vào. Nói một cách đơn giản, bạn có thể viết một chương trình sẽ chạy trong thời gian hợp lý .

Lớp học NPbao gồm những vấn đề có thể kiểm chứng được trong thời gian đa thức. Đó là, nếu chúng ta được cung cấp một giải pháp tiềm năng, thì chúng ta có thể kiểm tra xem giải pháp đã cho có đúng trong thời gian đa thức hay không.

Một số ví dụ là vấn đề Boolean Hài lòng (hoặc SAT ), hoặc vấn đề chu trình Hamilton. Có nhiều vấn đề được biết là trong lớp NP.

NP-Completecó nghĩa là vấn đề ít nhất là khó như bất kỳ vấn đề nào trong NP.

Điều quan trọng đối với khoa học máy tính bởi vì đã được chứng minh rằng bất kỳ vấn đề nào trong NP đều có thể được chuyển thành vấn đề khác trong NP-Complete. Điều đó có nghĩa là một giải pháp cho bất kỳ một vấn đề NP-hoàn chỉnh nào là một giải pháp cho tất cả các vấn đề NP.

Nhiều thuật toán trong bảo mật phụ thuộc vào thực tế là không có giải pháp nào được biết đến cho các vấn đề cứng NP. Nó chắc chắn sẽ có tác động đáng kể đến điện toán nếu tìm thấy giải pháp.


cái này sai. Một vấn đề trong NP có thể được chuyển thành bất kỳ vấn đề nào trong NP-Complete, không phải bất kỳ vấn đề nào trong NP. Đó là một sự khác biệt lớn.
David Nehme

Ngoài ra, "vấn đề khó như bất kỳ vấn đề nào trong NP" - đúng, nhưng từ ngữ tốt hơn sẽ là "ít nhất là khó". Nhìn chung, câu trả lời này đến gần hơn bất kỳ câu trả lời nào khác mà tôi đã thấy và gần hơn câu trả lời không được chấp nhận.
Lập trình viên Windows

Cảm ơn bạn đã quan sát của bạn. Tôi đã cập nhật câu trả lời bao gồm sửa chữa của bạn.
Vincent Ramdhanie

1
Định nghĩa về NP-Complete của bạn chưa hoàn chỉnh, bạn cũng cần xác định rằng các vấn đề NP-Complete cũng là các vấn đề NP (và NP-hard) và không khó như bất kỳ vấn đề NP nào. Tôi sẽ downvote, nếu bạn quyết định thay đổi, hãy cho tôi biết và tôi xóa downvote.
nbro

20

Đó là một lớp các vấn đề mà chúng ta phải mô phỏng mọi khả năng để đảm bảo chúng ta có giải pháp tối ưu.

Có rất nhiều phương pháp phỏng đoán tốt cho một số vấn đề NP-Complete, nhưng chúng chỉ là một phỏng đoán có giáo dục ở mức tốt nhất.


Gần như đúng. Một vấn đề có thể có một giải pháp không toàn diện mà vẫn không phải là đa thức trong tự nhiên.
Đánh dấu Bessey

1
Mặc dù không chính xác, nhưng điều này là đủ gần để sử dụng thực tế. Định nghĩa pedantic là không cần thiết mặc dù OP có thể muốn định nghĩa pedantic. Đó là một xấp xỉ tốt!
doug65536

18

Nếu bạn đang tìm kiếm một ví dụ về vấn đề hoàn thành NP thì tôi khuyên bạn nên xem 3-SAT .

Tiền đề cơ bản là bạn có một biểu thức ở dạng bình thường kết hợp , đó là một cách để nói rằng bạn có một loạt các biểu thức được nối bởi các OR mà tất cả phải đúng:

(a or b) and (b or !c) and (d or !e or f) ...

Vấn đề 3-SAT là tìm một giải pháp thỏa mãn biểu thức trong đó mỗi biểu thức OR có chính xác 3 booleans để khớp:

(a or !b or !c) and (!a or b or !d) and (b or !c or d) ...

Một giải pháp cho vấn đề này có thể là (a = T, b = T, c = F, d = F). Tuy nhiên, không có thuật toán nào được phát hiện sẽ giải quyết vấn đề này trong trường hợp chung trong thời gian đa thức. Điều này có nghĩa là cách tốt nhất để giải quyết vấn đề này là về cơ bản là đoán và kiểm tra lực lượng vũ phu và thử các kết hợp khác nhau cho đến khi bạn tìm thấy một kết hợp hoạt động.

Điều đặc biệt về vấn đề 3-SAT là vấn đề BẤT K NP NP-hoàn toàn có thể được giảm xuống thành vấn đề 3-SAT. Điều này có nghĩa là nếu bạn có thể tìm thấy một thuật toán đa thức thời gian để giải quyết vấn đề này thì bạn nhận được 1.000.000 đô la , chưa kể đến sự tôn trọng và ngưỡng mộ của các nhà khoa học máy tính và nhà toán học trên khắp thế giới.


Có lẽ tôi bối rối bởi những lời giải thích khác ở đây nhưng không nên đọc "BẤT K NP vấn đề NP nào có thể được giảm xuống thành vấn đề 3-SAT trong thời gian đa thức." Bởi vì đó không phải là điều tạo nên 3-SAT NP-Complete?
DubiousPizer

@DubiousPizer Không. Câu trả lời nêu chính xác. Hình ảnh này làm rõ nó stackoverflow.com/a/7367561/2686502
jayeshsolanki93

14

Thành thật mà nói, Wikipedia có thể là nơi tốt nhất để tìm câu trả lời cho vấn đề này.

Nếu NP = P, thì chúng ta có thể giải quyết các vấn đề rất khó nhanh hơn nhiều so với chúng ta nghĩ trước đây. Nếu chúng ta chỉ giải quyết một vấn đề NP-Complete trong thời gian P (đa thức), thì nó có thể được áp dụng cho tất cả các vấn đề khác trong danh mục NP-Complete.


6
"Nếu NP = P, thì chúng ta có thể giải quyết các vấn đề rất khó nhanh hơn nhiều so với chúng ta nghĩ trước đây." - Không. Nếu NP = P thì tồn tại các giải pháp (tồn tại các thuật toán xác định để giải quyết chúng) nhưng không có gì đảm bảo rằng chúng ta sẽ biết chúng là gì.
Lập trình viên Windows

Một điểm công bằng. Tôi đoán là bất kỳ bằng chứng nào cho thấy P = NP có khả năng mang tính xây dựng (ví dụ: việc xuất bản thuật toán đa thức cho 3-SAT).
Chris Conway

10

Chúng ta cần tách các thuật toán và các vấn đề. Chúng tôi viết các thuật toán để giải quyết các vấn đề, và chúng mở rộng theo một cách nhất định. Mặc dù đây là một sự đơn giản hóa, chúng ta hãy gắn nhãn một thuật toán với 'P' nếu tỷ lệ đủ tốt và 'NP' nếu không.

Thật hữu ích khi biết những điều về các vấn đề chúng tôi đang cố gắng giải quyết, thay vì các thuật toán chúng tôi sử dụng để giải quyết chúng. Vì vậy, chúng tôi sẽ nói rằng tất cả các vấn đề có thuật toán mở rộng đều là "trong P". Và những cái có thuật toán mở rộng kém là "trong NP".

Điều đó có nghĩa là cũng có rất nhiều vấn đề đơn giản là "trong NP", bởi vì chúng ta có thể viết các thuật toán xấu để giải quyết các vấn đề dễ dàng. Sẽ rất tốt để biết những vấn đề nào trong NP là những vấn đề thực sự khó khăn, nhưng chúng tôi không chỉ muốn nói "đó là những vấn đề chúng tôi chưa tìm thấy một thuật toán tốt cho". Rốt cuộc, tôi có thể đưa ra một vấn đề (gọi nó là X) mà tôi nghĩ cần một thuật toán siêu tuyệt vời. Tôi nói với thế giới rằng thuật toán tốt nhất tôi có thể đưa ra để giải quyết các thang đo X một cách tồi tệ, và vì vậy tôi nghĩ rằng X là một vấn đề thực sự khó khăn. Nhưng ngày mai, có lẽ ai đó thông minh hơn tôi đã phát minh ra một thuật toán giải X và ở P. Vì vậy, đây không phải là một định nghĩa rất hay về các vấn đề khó.

Tất cả đều giống nhau, có rất nhiều vấn đề trong NP mà không ai biết một thuật toán tốt. Vì vậy, nếu tôi có thể chứng minh rằng X là một loại vấn đề nhất định: một thuật toán tốt để giải X cũng có thể được sử dụng, theo một cách nào đó, để đưa ra một thuật toán tốt cho mọi vấn đề khác trong NP. Bây giờ mọi người có thể tin chắc hơn một chút rằng X là một vấn đề thực sự khó khăn. Và trong trường hợp này, chúng tôi gọi X NP-Complete.


5

Các định nghĩa cho các vấn đề hoàn chỉnh của NP ở trên là chính xác, nhưng tôi nghĩ rằng tôi có thể nói một cách trữ tình về tầm quan trọng triết học của chúng vì chưa ai giải quyết được vấn đề đó.

Hầu như tất cả các vấn đề phức tạp bạn sẽ gặp phải sẽ là NP Complete. Có một cái gì đó rất cơ bản về lớp này, và dường như khác biệt về mặt tính toán với các vấn đề dễ giải quyết. Chúng có hương vị riêng, và không quá khó để nhận ra chúng. Điều này về cơ bản có nghĩa là bất kỳ thuật toán phức tạp vừa phải là không thể để bạn giải quyết chính xác - lập lịch, tối ưu hóa, đóng gói, bao gồm, v.v.

Nhưng không mất tất cả nếu vấn đề bạn gặp phải là NP Complete. Có một lĩnh vực rộng lớn và rất kỹ thuật nơi mọi người nghiên cứu các thuật toán gần đúng, điều này sẽ mang đến cho bạn sự đảm bảo gần với giải pháp của một vấn đề hoàn chỉnh NP. Một số trong số này là những đảm bảo cực kỳ mạnh mẽ - ví dụ, trong 3 giây, bạn có thể nhận được bảo đảm 7/8 thông qua thuật toán thực sự rõ ràng. Thậm chí tốt hơn, trong thực tế, có một số heuristic rất mạnh, nổi trội trong việc đưa ra câu trả lời tuyệt vời (nhưng không đảm bảo!) Cho những vấn đề này.

Lưu ý rằng hai vấn đề rất nổi tiếng - đẳng cấu đồ thị và bao thanh toán - không được biết đến là P hoặc NP.


5

Tôi đã nghe một lời giải thích, đó là: "NP-Completeness có lẽ là một trong những ý tưởng khó hiểu hơn trong nghiên cứu thuật toán." NP "là viết tắt của" thời gian đa thức không xác định ", và là tên của một lớp được gọi là lớp phức tạp để Vấn đề nào có thể thuộc về. Điều quan trọng về lớp phức tạp NP là các vấn đề trong lớp đó có thể được xác minhbằng thuật toán thời gian đa thức. Ví dụ, xem xét vấn đề đếm công cụ. Giả sử có một bó táo trên bàn. Vấn đề là "Có bao nhiêu quả táo?" Bạn được cung cấp một câu trả lời có thể, 8. Bạn có thể xác minh câu trả lời này trong thời gian đa thức bằng cách sử dụng thuật toán, duh, đếm các quả táo. Đếm số quả táo xảy ra trong thời gian O (n) (đó là ký hiệu Big-oh), bởi vì phải mất một bước để đếm từng quả táo. Đối với n táo, bạn cần n bước. Vấn đề này là trong lớp phức tạp NP.

Một vấn đề được phân loại là NP-đầy đủ nếu có thể chỉ ra rằng nó là cả NP-Hardcó thể kiểm chứng được trong thời gian đa thức. Không đi sâu vào thảo luận về NP-Hard, đủ để nói rằng có một số vấn đề nhất định mà các giải pháp thời gian đa thức chưa được tìm thấy. Đó là, nó cần một cái gì đó như n! (n giai thừa) các bước để giải quyết chúng. Tuy nhiên, nếu bạn được cung cấp giải pháp cho vấn đề NP-Complete, bạn có thể xác minh giải pháp đó trong thời gian đa thức.

Một ví dụ kinh điển về vấn đề NP-Complete là Vấn đề nhân viên bán hàng du lịch. "

Tác giả: ApoxyButt Từ: http://www.everything2.com/title/NP-complete


2

Vấn đề NP: -

  1. Vấn đề NP là vấn đề như vậy có thể được giải quyết trong thời gian đa thức không xác định.
  2. Thuật toán không xác định hoạt động trong hai giai đoạn.
  3. Giai đoạn đoán không xác định && Giai đoạn xác minh không xác định.

Loại vấn đề Np

  1. NP hoàn thành
  2. NP cứng

Vấn đề hoàn thành NP: -

1 Vấn đề quyết định A được gọi là NP hoàn thành nếu nó có hai thuộc tính sau: -

  1. Nó thuộc lớp NP.
  2. Mọi vấn đề khác trong NP có thể được chuyển thành P trong thời gian đa thức.

Một số ví dụ: -

  • Vấn đề về chiếc ba lô
  • vấn đề tổng phụ
  • Vertex bao gồm vấn đề

Câu hỏi nhanh về các giai đoạn của bạn ... không phải là giai đoạn xác minh? Các vấn đề NP không được xác minh trong thời gian P
Branden Keck

1

Các vấn đề hoàn thành NP là một tập hợp các vấn đề mà mỗi vấn đề NP khác có thể được giảm trong thời gian đa thức, và giải pháp của chúng vẫn có thể được xác minh trong thời gian đa thức. Đó là, bất kỳ vấn đề NP nào cũng có thể được chuyển đổi thành bất kỳ vấn đề NP-Complete nào. - Một cách không chính thức, một vấn đề hoàn thành NP là một vấn đề NP ít nhất là "khó khăn" như bất kỳ vấn đề nào khác trong NP.


1

Trong khả năng hiểu biết của tôi

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

NP là tập hợp các vấn đề đòi hỏi một TM không xác định để được giải quyết trong thời gian đa thức. Điều này có nghĩa là kiểm tra song song tất cả các biến có thể, mỗi trường hợp mất thời gian đa thức. Nếu vấn đề có thể giải quyết được thì ít nhất một trong những trạng thái song song đó phải có giải pháp cho vấn đề. Điều này cũng có nghĩa là nếu bạn đoán về các biến của giải pháp thì điều duy nhất cần thiết là kiểm tra tính hợp lệ của giải pháp trong thời gian đa thức.

NP-Hard là tập hợp mà các vấn đề ít nhất cũng khó như NP. Bất kỳ vấn đề nào trong NP đều có thể được chuyển thành vấn đề NP-Hard trong thời gian đa thức. Những vấn đề này không thể được giải quyết trong thời gian đa thức nếu P không bằng NP. Đó là khi bài toán khó nhất trong NP là thời gian đa thức có thể giải được thì chỉ có bài toán NP-Hard là thời gian đa thức có thể giải được.

NP-Complete là tập hợp giao nhau của NP và NP-Hard. Bất kỳ vấn đề NP nào cũng có thể được chuyển thành vấn đề NP-Complete trong thời gian đa thức. Điều đó có nghĩa là nếu bất kỳ NP-Complete nào có thể có giải pháp hiệu quả thì mọi vấn đề NP đều có thể được giải quyết với cùng hiệu quả.

Xin vui lòng cho tôi biết nếu tôi thực hiện bất kỳ sai lầm.


-17

một vấn đề NP là một trong đó một thuật toán máy tính xác minh một giải pháp có thể được tạo ra trong thời gian đa thức.

một vấn đề NP-Complete là NP, nhưng nếu bạn có thể giải quyết nó trong thời gian đa thức (gọi là P) thì tất cả các vấn đề NP là P.

Vì vậy, nhận được crackin '.

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.