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?
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?
Câu trả lời:
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ó.
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à 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.
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:
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?
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ó NP
tiề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.
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
Một vấn đề X là NP-Complete nếu
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.
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.
NP-Complete là một lớp các vấn đề.
Lớp học P
bao 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 NP
bao 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-Complete
có 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.
Đó 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.
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.
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.
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.
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.
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-Hard và có 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
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: -
Một số ví dụ: -
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.
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.
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 '.