Cái gì là P = NP?, Và tại sao nó lại là một câu hỏi nổi tiếng như vậy? [đóng cửa]


234

Câu hỏi liệu P = NP có lẽ là nổi tiếng nhất trong tất cả Khoa học Máy tính. Nó có nghĩa là gì? Và tại sao nó lại thú vị như vậy?

Ồ, và để có thêm tín dụng, xin vui lòng gửi bằng chứng về sự thật hoặc sự giả dối của tuyên bố. :)


11
Như Scott Aaronson đã trình bày một cách độc đáo, MIT "Nếu P = NP, thì thế giới sẽ là một nơi khác biệt sâu sắc hơn chúng ta thường nghĩ. Sẽ không có giá trị đặc biệt nào trong" bước nhảy sáng tạo ", không có khoảng cách cơ bản nào giữa việc giải quyết một vấn đề và công nhận là giải pháp khi nó đã được tìm thấy Tất cả những người có thể đánh giá cao một bản giao hưởng sẽ là Mozart;. bất cứ ai có thể làm theo một luận cứ từng bước sẽ là Gauss ..." trích từ en.wikipedia.org/wiki/Complexity_classes_P_and_NP .
gts

Câu trả lời:


365

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

Định nghĩa:

  • Thời gian đa thức có nghĩa là độ phức tạp của thuật toán là O (n ^ k), trong đó n là kích thước của dữ liệu của bạn (ví dụ: số phần tử trong danh sách được sắp xếp) và k là hằng số.

  • Độ phức tạp là thời gian được đo bằng số lượng thao tác sẽ thực hiện, như là một hàm của số lượng mục dữ liệu.

  • Hoạt động là bất cứ điều gì có ý nghĩa như là một hoạt động cơ bản cho một nhiệm vụ cụ thể. Để sắp xếp, hoạt động cơ bản là một so sánh. Đối với phép nhân ma trận, phép toán cơ bản là phép nhân hai số.

Bây giờ câu hỏi là, không xác định so với không xác định có nghĩa là gì? Có một mô hình tính toán trừu tượng, một máy tính tưởng tượng được gọi là máy Turing (TM). Cỗ máy này có số lượng trạng thái hữu hạn và một cuộn băng vô hạn, có các ô riêng biệt để có thể viết và đọc các ký hiệu hữu hạn. Tại bất kỳ thời điểm nào, TM đều ở một trong các trạng thái của nó và nó đang xem xét một ô cụ thể trên băng. Tùy thuộc vào những gì nó đọc từ ô đó, nó có thể viết một ký hiệu mới vào ô đó, di chuyển băng một ô về phía trước hoặc lùi và đi vào một trạng thái khác. Điều này được gọi là một sự chuyển đổi trạng thái. Thật đáng ngạc nhiên, bằng cách xây dựng cẩn thận các trạng thái và chuyển tiếp, bạn có thể thiết kế một TM, tương đương với bất kỳ chương trình máy tính nào có thể được viết.

Có hai loại TM liên quan đến chúng tôi ở đây: xác định và không xác định. Một TM xác định chỉ có một chuyển tiếp từ mỗi trạng thái cho mỗi biểu tượng mà nó đang đọc băng. Một TM không xác định có thể có một số chuyển đổi như vậy, nghĩa là nó có thể kiểm tra một số khả năng cùng một lúc. Đây là loại giống như sinh ra nhiều chủ đề. Sự khác biệt là một TM không xác định có thể sinh ra nhiều "luồng" như nó muốn, trong khi trên máy tính thực, chỉ có thể thực hiện một số luồng cụ thể tại một thời điểm (bằng số lượng CPU). Trong thực tế, máy tính về cơ bản là các TM xác định với các băng hữu hạn. Mặt khác, một TM không xác định có thể được nhận ra về mặt vật lý, ngoại trừ có thể với một máy tính lượng tử.

Nó đã được chứng minh rằng bất kỳ vấn đề nào có thể được giải quyết bằng một TM không xác định có thể được giải quyết bằng một TM xác định. Tuy nhiên, không rõ sẽ mất bao nhiêu thời gian. Câu lệnh P = NP có nghĩa là nếu một vấn đề mất thời gian đa thức trên một TM không xác định, thì người ta có thể xây dựng một TM xác định sẽ giải quyết vấn đề tương tự trong thời gian đa thức. Cho đến nay không ai có thể chứng minh rằng nó có thể được thực hiện, nhưng cũng không ai có thể chứng minh rằng nó cũng không thể được thực hiện.

Bài toán hoàn thành NP có nghĩa là bài toán NP X, sao cho mọi bài toán NP Y có thể được giảm xuống X bằng cách giảm đa thức. Điều đó ngụ ý rằng nếu bất cứ ai từng đưa ra giải pháp đa thức thời gian cho một vấn đề hoàn thành NP, thì điều đó cũng sẽ đưa ra một giải pháp thời gian đa thức cho bất kỳ vấn đề NP nào. Do đó sẽ chứng minh rằng P = NP. Ngược lại, nếu có ai chứng minh rằng P! = NP, thì chúng tôi chắc chắn rằng không có cách nào để giải quyết vấn đề NP trong thời gian đa thức trên máy tính thông thường.

Một ví dụ về bài toán hoàn thành NP là bài toán tìm một phép gán chân lý sẽ làm cho biểu thức boolean chứa n biến là đúng.
Hiện tại, trong thực tế, bất kỳ vấn đề nào mất thời gian đa thức trên TM không xác định chỉ có thể được thực hiện trong thời gian theo cấp số nhân trên TM xác định hoặc trên máy tính thông thường.
Ví dụ, cách duy nhất để giải quyết vấn đề gán sự thật là thử 2 ^ n khả năng.


5
Không phải sự thật là cách duy nhất để giải SAT là liệt kê các trường hợp. Xem en.wikipedia.org/wiki/ Đối để biết thông tin về thuật toán DPLL, thực sự rất hiệu quả trong nhiều trường hợp phổ biến.
Doug McClean

44
Derek, tôi xin không đồng ý. Tôi thực sự không thấy cách bạn giải thích P và NP mà không có máy Turing. Tôi đã từng ở trong một lớp học thuật toán, đã thử nó. Nếu tôi không biết về TM, tôi sẽ hoàn toàn lạc lối.
Dima

4
Đó là sự thật trong thực tế rằng việc giải quyết vấn đề NP-đầy đủ mất lớn hơn thời gian đa thức trên một máy tính thật, nhưng đó không phải là ý nghĩa của nó, nó chỉ là tình trạng hiện thời của nghệ thuật, như một hệ quả của thực tế là P = NP là không rõ. Nếu bất cứ ai tìm thấy một thuật toán đa thức để giải quyết bất kỳ vấn đề hoàn thành NP nào, điều đó sẽ chứng minh P = NP và chúng tôi biết rằng điều đó đã không xảy ra vì nó sẽ có trong tin tức! Ngược lại nếu đã chứng minh rằng P! = NP, thì chúng ta có thể tự tin nói rằng không có vấn đề hoàn thành NP nào có thể giải quyết được trong thời gian đa thức.
Steve Jessop

21
Tôi biết điều này khá cũ, nhưng tôi chỉ muốn nói rằng câu trả lời là tuyệt vời và đó là lần đầu tiên nhấp cho tôi! Làm tốt lắm
Dimitar Dimitrov

4
Sửa lỗi trong đoạn thứ hai đến đoạn cuối: "chúng tôi chắc chắn rằng không có cách nào để giải quyết vấn đề NP Complete trong thời gian đa thức trên máy tính thông thường", vì P là tập con của NP và chứng minh P! = NP không nhất thiết phải nói bất cứ điều gì về những vấn đề trong NP không phải là NP-Complete thực sự nằm ở P.
Millie Smith

88
  1. Một vấn đề có hoặc không có trong P ( P olynomial time) nếu câu trả lời có thể được tính trong thời gian đa thức.
  2. Một vấn đề có hoặc không có trong NP ( N trên thời gian olynomial P xác định ) nếu một câu trả lời có thể được xác minh trong thời gian đa thức.

Theo trực giác, chúng ta có thể thấy rằng nếu một vấn đề nằm ở P , thì đó là ở NP . Đưa ra câu trả lời tiềm năng cho một vấn đề trong P , chúng ta có thể xác minh câu trả lời bằng cách tính toán lại câu trả lời.

Ít rõ ràng, và nhiều hơn nữa rất khó để trả lời, là liệu tất cả các vấn đề trong NP là trong P . Có phải thực tế là chúng ta có thể xác minh một câu trả lời trong thời gian đa thức có nghĩa là chúng ta có thể tính toán câu trả lời đó trong thời gian đa thức không?

Có một số lượng lớn các vấn đề quan trọng được biết là NP -complete (về cơ bản, nếu có bất kỳ vấn đề nào được chứng minh là ở P , thì tất cả các vấn đề NP đều được chứng minh là ở P ). Nếu P = NP , thì tất cả các vấn đề này sẽ được chứng minh là có giải pháp hiệu quả (thời gian đa thức).

Hầu hết các nhà khoa học tin rằng P ! = NP . Tuy nhiên, chưa có bằng chứng nào được thiết lập cho P = NP hoặc P ! = NP . Nếu bất cứ ai cung cấp bằng chứng cho một trong hai phỏng đoán, họ sẽ giành được 1 triệu đô la Mỹ .


23

Để đưa ra câu trả lời đơn giản nhất tôi có thể nghĩ đến:

Giả sử chúng ta có một vấn đề cần một số lượng đầu vào nhất định và có nhiều giải pháp tiềm năng khác nhau, có thể hoặc không thể giải quyết vấn đề cho các đầu vào nhất định. Một câu đố logic trong một tạp chí giải đố sẽ là một ví dụ điển hình: đầu vào là các điều kiện ("George không sống trong ngôi nhà màu xanh hoặc màu xanh lá cây"), và giải pháp tiềm năng là một danh sách các câu ("George sống trong màu vàng nhà, trồng đậu Hà Lan và sở hữu con chó "). Một ví dụ nổi tiếng là vấn đề Nhân viên bán hàng du lịch: đưa ra danh sách các thành phố và thời gian để đi từ thành phố này đến thành phố khác, và giới hạn thời gian, một giải pháp tiềm năng sẽ là danh sách các thành phố theo thứ tự nhân viên bán hàng đến thăm họ và nó sẽ hoạt động nếu tổng thời gian di chuyển ít hơn thời gian giới hạn.

Một vấn đề như vậy là ở NP nếu chúng ta có thể kiểm tra hiệu quả một giải pháp tiềm năng để xem nó có hoạt động không. Ví dụ: được cung cấp danh sách các thành phố để nhân viên bán hàng ghé thăm theo thứ tự, chúng tôi có thể cộng lại số lần cho mỗi chuyến đi giữa các thành phố và dễ dàng xem liệu đó có trong thời gian giới hạn không. Một vấn đề nằm ở P nếu chúng ta có thể tìm ra giải pháp một cách hiệu quả nếu có.

(Hiệu quả, ở đây, có ý nghĩa toán học chính xác. Thực tế, điều đó có nghĩa là các vấn đề lớn không khó giải quyết một cách vô lý. Khi tìm kiếm một giải pháp khả thi, một cách không hiệu quả sẽ là liệt kê tất cả các giải pháp tiềm năng có thể, hoặc một cái gì đó gần với điều đó , trong khi một cách hiệu quả sẽ yêu cầu tìm kiếm một bộ hạn chế hơn nhiều.)

Do đó, vấn đề P = NP có thể được diễn đạt theo cách này: Nếu bạn có thể xác minh giải pháp cho một vấn đề thuộc loại được mô tả ở trên một cách hiệu quả, bạn có thể tìm ra giải pháp (hoặc chứng minh là không có) một cách hiệu quả không? Câu trả lời rõ ràng là "Tại sao bạn có thể làm được?", Và đó là vấn đề khá lớn hiện nay. Không ai có thể chứng minh điều này bằng cách này hay cách khác, và điều đó làm phiền rất nhiều nhà toán học và nhà khoa học máy tính. Đó là lý do tại sao bất cứ ai có thể chứng minh giải pháp đều kiếm được một triệu đô la từ Quỹ Claypool.

Chúng tôi thường cho rằng P không bằng NP, rằng không có cách chung để tìm giải pháp. Nếu hóa ra P = NP, rất nhiều thứ sẽ thay đổi. Ví dụ, mật mã sẽ trở nên không thể, và với nó là bất kỳ loại quyền riêng tư hoặc kiểm chứng nào trên Internet. Rốt cuộc, chúng ta có thể lấy văn bản được mã hóa và khóa một cách hiệu quả và tạo ra văn bản gốc, vì vậy nếu P = NP, chúng ta có thể tìm thấy khóa một cách hiệu quả mà không cần biết trước. Bẻ khóa mật khẩu sẽ trở nên tầm thường. Mặt khác, có cả lớp các vấn đề lập kế hoạch và vấn đề phân bổ tài nguyên mà chúng ta có thể giải quyết một cách hiệu quả.

Bạn có thể đã nghe mô tả NP-đầy đủ. Một vấn đề hoàn thành NP là một vấn đề là NP (tất nhiên) và có thuộc tính thú vị này: nếu nó nằm trong P, mọi vấn đề NP là, và vì vậy P = NP. Nếu bạn có thể tìm ra cách giải quyết hiệu quả vấn đề Người bán hàng du lịch, hoặc câu đố logic từ các tạp chí giải đố, bạn có thể giải quyết hiệu quả mọi thứ trong NP. Một vấn đề NP-đầy đủ là, theo một cách nào đó, là loại vấn đề NP khó nhất.

Vì vậy, nếu bạn có thể tìm thấy một kỹ thuật giải pháp chung hiệu quả cho bất kỳ vấn đề NP-Complete nào, hoặc chứng minh rằng không có sự tồn tại như vậy, danh tiếng và vận may là của bạn.


1
Trong đoạn cuối cùng thứ hai của bạn, bạn có "theo một cách nào đó, loại khó nhất". Bạn nên nói NP-Complete là khó nhất vì chúng là NP-hard.
grom

1
Tôi không chắc chắn rằng vận may sẽ là của bạn. Chính phủ có thể muốn đầu của bạn.
Millie Smith

9

Một bản tóm tắt ngắn từ kiến ​​thức khiêm tốn của tôi:

Có một số vấn đề tính toán dễ dàng (như tìm đường đi ngắn nhất giữa hai điểm trong biểu đồ), có thể được tính khá nhanh (O (n ^ k), trong đó n là kích thước của đầu vào và k là hằng số (trong trường hợp đồ thị, đó là số đỉnh hoặc cạnh)).

Các vấn đề khác, như tìm đường đi qua mọi đỉnh trong biểu đồ hoặc nhận khóa riêng RSA từ khóa chung khó hơn (O (e ^ n)).

Nhưng CS nói rằng vấn đề là chúng ta không thể 'chuyển đổi' một máy Turing không xác định thành máy xác định, tuy nhiên, chúng ta có thể chuyển đổi các máy tự động hữu hạn không xác định (như trình phân tích cú pháp regex) thành máy phân tích xác định (tốt, bạn có thể, nhưng thời gian chạy của máy sẽ mất nhiều thời gian). Đó là, chúng ta phải thử mọi con đường có thể (thông thường các giáo sư CS thông minh có thể loại trừ một vài người).

Thật thú vị bởi vì thậm chí không ai có ý tưởng về giải pháp. Một số người nói đó là sự thật, một số người cho rằng nó sai, nhưng không có sự đồng thuận. Một điều thú vị khác là một giải pháp sẽ có hại cho mã hóa khóa công khai / riêng tư (như RSA). Bây giờ bạn có thể phá vỡ chúng dễ dàng như tạo khóa RSA.

Và đó là một vấn đề khá truyền cảm.


1
Điều đó không hoàn toàn đúng - bạn có thể chuyển đổi NDTM thành DTM, nhưng máy mới có thời gian chạy theo cấp số nhân trong thời gian chạy của bản gốc (trước tiên bạn nên tìm kiếm biểu đồ chuyển trạng thái của NDTM một cách hiệu quả).
Adam Wright

6

Tôi không thể thêm vào phần nào và tại sao phần P =? NP của câu hỏi, nhưng liên quan đến bằng chứng. Một bằng chứng không chỉ có giá trị một số tín dụng, mà nó sẽ giải quyết một trong những vấn đề thiên niên kỷ . Một cuộc thăm dò thú vị đã được tiến hành gần đây và kết quả được công bố (PDF) chắc chắn đáng đọc liên quan đến chủ đề của một bằng chứng.


5

Đầu tiên, một số định nghĩa:

  • Một vấn đề cụ thể là ở P nếu bạn có thể tính toán một giải pháp trong thời gian ít hơn n^kđối với một số k, trong đó nkích thước của đầu vào. Ví dụ, sắp xếp có thể được thực hiện trong n log nđó ít hơn n^2, vì vậy sắp xếp là thời gian đa thức.

  • Một vấn đề nằm ở NP nếu tồn ktại một giải pháp có tồn tại một giải pháp kích thước tối đa n^kmà bạn có thể xác minh kịp thời n^k. Lấy 3 màu của đồ thị: đưa ra một biểu đồ, 3 màu là một danh sách các cặp (đỉnh, màu) có kích thước O(n)và bạn có thể xác minh kịp thời O(m)(hoặc O(n^2)) liệu tất cả các hàng xóm có màu khác nhau hay không. Vì vậy, một biểu đồ chỉ có 3 màu nếu có một giải pháp ngắn và dễ kiểm chứng.

Một định nghĩa tương đương với NP là "vấn đề có thể giải quyết bằng một N máy Turing ondeterministic trong P thời gian olynomial". Mặc dù điều đó cho bạn biết tên đến từ đâu, nhưng nó không mang lại cho bạn cảm giác trực quan tương tự về vấn đề NP.

Lưu ý rằng P là tập con của NP: nếu bạn có thể tìm một giải pháp trong thời gian đa thức, có một giải pháp có thể được xác minh trong thời gian đa thức - chỉ cần kiểm tra xem giải pháp đã cho có bằng với giải pháp bạn có thể tìm thấy không.

Tại sao câu hỏi P =? NPthú vị? Để trả lời điều đó, trước tiên người ta cần xem các vấn đề NP-Complete là gì. Đơn giản thôi,

  • Một vấn đề L hoàn thành NP nếu (1) L nằm trong P và (2) thuật toán giải quyết L có thể được sử dụng để giải quyết bất kỳ vấn đề L 'nào trong NP; nghĩa là, với một thể hiện của L ', bạn có thể tạo một thể hiện của L có giải pháp khi và chỉ khi thể hiện của L' có giải pháp. Nói một cách chính thức, mọi vấn đề L 'trong NP đều có thể giảm xuống thành L.

Lưu ý rằng thể hiện của L phải là đa thức thời gian tính toán và có kích thước đa thức, theo kích thước của L '; theo cách đó, việc giải một bài toán hoàn thành NP trong thời gian đa thức cho chúng ta một giải pháp thời gian đa thức cho tất cả các bài toán NP.

Đây là một ví dụ: giả sử chúng ta biết rằng 3 màu của đồ thị là một vấn đề khó NP. Chúng tôi muốn chứng minh rằng việc quyết định sự thỏa mãn của các công thức boolean cũng là một vấn đề khó NP.

Đối với mỗi đỉnh v, có hai biến boolean v_h và v_l và yêu cầu (v_h hoặc v_l): mỗi cặp chỉ có thể có các giá trị {01, 10, 11}, mà chúng ta có thể nghĩ là màu 1, 2 và 3.

Đối với mỗi cạnh (u, v), có yêu cầu rằng (u_h, u_l)! = (V_h, v_l). Đó là,

not ((u_h and not u_l) and (v_h and not v_l) or ...) liệt kê tất cả các cấu hình bằng nhau và quy định rằng cả hai không phải là trường hợp.

AND'Tổng hợp tất cả các ràng buộc này đưa ra một công thức boolean có kích thước đa thức ( O(n+m)). Bạn có thể kiểm tra xem có cần phải có thời gian đa thức để tính toán không: bạn đang thực hiện các O(1)công cụ đơn giản trên mỗi đỉnh và mỗi cạnh.

Nếu bạn có thể giải công thức boolean tôi đã thực hiện, thì bạn cũng có thể giải màu tô: cho mỗi cặp biến v_h và v_l, hãy để màu của v là một giá trị khớp với các giá trị của các biến đó. Bằng cách xây dựng công thức, hàng xóm sẽ không có màu sắc như nhau.

Do đó, nếu 3 màu của đồ thị là NP hoàn chỉnh, thì công thức boolean-thỏa mãn.

Chúng ta biết rằng 3 màu của đồ thị là NP-hoàn chỉnh; tuy nhiên, trong lịch sử chúng ta đã biết rằng bằng cách đầu tiên cho thấy tính hoàn chỉnh NP của tính thỏa mãn mạch boolean, và sau đó giảm điều đó xuống còn 3 màu (thay vì cách khác).

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.