Lưu ý: Tôi chưa kiểm tra câu trả lời một cách cẩn thận và có những phần còn thiếu để viết, hãy coi đó là bản nháp đầu tiên.
Câu trả lời này chủ yếu dành cho những người không phải là nhà nghiên cứu về lý thuyết phức tạp hoặc các lĩnh vực liên quan. Nếu bạn là một nhà lý thuyết phức tạp và đã đọc câu trả lời xin vui lòng cho tôi biết nếu bạn nhận thấy bất kỳ vấn đề hoặc có một ý tưởng về để cải thiện câu trả lời.
Nơi bạn có thể tìm thấy các giải pháp được yêu cầu của P so với NP
- Có trang P-vs.-NP có danh sách các khiếu nại như vậy.
- Các bài viết yêu cầu giải quyết câu hỏi thường xuyên được đăng trên arXiv .
Các danh sách khác về cách không giải P so với NP
Lance Fortnow, Vì vậy, bạn nghĩ rằng bạn đã giải quyết NP verus , 2009
Scott Aaronson, Tám dấu hiệu Một bằng chứng P ≠ NP Proof là sai , 2010
Trang Polymath cho bài viết của Deolalikar , trong đó phần đọc thêm có danh sách các tài liệu tham khảo hay về vấn đề này.
Làm thế nào để không tiếp cận P so với NP
Hãy để tôi thảo luận về "làm thế nào để không tiếp cận P so với NP" không phải theo nghĩa các ý tưởng sẽ không hoạt động mà theo nghĩa chung hơn. P so với NP là một vấn đề dễ nêu (xem thêm câu trả lời của tôi ở đây ):
NP = P: Đối với mọi vấn đề quyết định với thuật toán xác minh thời gian đa thức đều có thuật toán thời gian đa thức.
hoặc tương đương
Có một thuật toán thời gian đa thức cho SAT.
SAT có thể được thay thế bằng bất kỳ vấn đề NP-đầy đủ khác .
.
Thông thường mọi người quá đơn giản hóa và đánh giá quá cao vấn đề và phóng đại tầm quan trọng thực tế của vấn đề (như đã nêu ở trên). Những phát biểu như vậy thường có nghĩa là để đưa ra trực giác, nhưng chúng không phải là sự thay thế cho tuyên bố toán học thực tế của vấn đề.
Hiệu quả lý thuyết không giống như tính khả thi trong thực tế.
Hãy để tôi đầu tiên với hậu quả thực tế phóng đại.
I. Có thể P = NP nhưng nó không giúp ích gì cho thực tế!
2264n65536+22128
≠
nlg∗lg∗n
lg∗n>62
Điểm chính ở đây là P là một mô hình đơn giản trừu tượng về tính toán hiệu quả, độ phức tạp trong trường hợp xấu nhất là một mô hình đơn giản trừu tượng để ước tính chi phí tính toán, v.v ... Tất cả đều là trừu tượng, nhưng không ai trong thực tế sẽ xem xét thuật toán giống như một trong (I) ở trên như một thuật toán hiệu quả thực sự. P là một mô hình trừu tượng đẹp, nó có các thuộc tính đẹp, nó làm cho các vấn đề kỹ thuật trở nên dễ dàng và nó là một mô hình hữu ích. Tuy nhiên, giống như tất cả sự trừu tượng toán học, nó che giấu các chi tiết mà trong thực tế chúng ta có thể quan tâm. Có nhiều mô hình tinh tế hơn nhưng mô hình càng phức tạp sẽ trở nên kém đẹp hơn khi tranh luận.
Điều mọi người quan tâm trong thực tế là tính toán một câu trả lời cho vấn đề cho các trường hợp mà họ quan tâm về việc sử dụng lượng tài nguyên hợp lý . Có phụ thuộc nhiệm vụ và nên được xem xét.
Cố gắng tìm các thuật toán tốt hơn cho các trường hợp thực tế của các bài toán NP-hard là một nỗ lực thú vị và xứng đáng. Có các thuật toán heuristic SAT-solver được sử dụng trong ngành và có thể giải các trường hợp thực tế của SAT với hàng triệu biến. Thậm chí còn có một cuộc thi SAT quốc tế .
(Nhưng cũng có những trường hợp cụ thể nhỏ mà tất cả các thuật toán này đều thất bại và thất bại khá nặng nề, chúng tôi thực sự có thể chứng minh rằng tất cả các nhà giải quyết SAT hiện đại đều mất thời gian để giải quyết các trường hợp đơn giản như Nguyên tắc Pigeonhole đề xuất .)
Hãy nhớ rằng tính chính xác và thời gian chạy của các chương trình không thể có được chỉ từ việc chạy chương trình trong các trường hợp . Không quan trọng bạn thử bao nhiêu lần, không có số tiền nào là đủ. Có vô số đầu vào có thể và bạn phải thể hiện tính chính xác và hiệu quả (tức là thời gian chạy là đa thức) của chương trình cho tất cả chúng. Tóm lại, bạn cần bằng chứng toán học về tính chính xác và hiệu quả. Nếu bạn không biết chứng minh toán học là gì thì trước tiên bạn nên học một số toán học cơ bản (đọc một cuốn sách giáo khoa toán học / tổ hợp / lý thuyết đồ thị rời rạc, đây là những chủ đề tốt để tìm hiểu về những gì được coi là một bằng chứng toán học).
Ngoài ra, hãy cẩn thận về các khiếu nại khác về P so với NP và hậu quả của câu trả lời của nó. Yêu cầu như vậy thường dựa trên sự đơn giản hóa tương tự.
Các nhà lý thuyết phức tạp không thực sự quan tâm đến câu trả lời cho P so với NP!
Tôi phóng đại một chút. Tất nhiên chúng tôi quan tâm đến câu trả lời cho P so với NP. Nhưng chúng tôi quan tâm đến nó trong một bối cảnh. P so với NP là vấn đề hàng đầu của chúng tôi nhưng nó không phải là mục tiêu cuối cùng. Đây là một vấn đề dễ nêu, nó liên quan đến nhiều ý tưởng cơ bản, nó rất hữu ích để giải thích loại câu hỏi mà chúng ta quan tâm đến những người không quen thuộc với chủ đề này. Nhưng chúng tôi không tìm kiếm một chút Có / Không trả lời cho câu hỏi.
Chúng tôi tìm kiếm một sự hiểu biết tốt hơn về bản chất của tính toán hiệu quả . Chúng tôi tin rằng việc giải quyết câu hỏi sẽ đi kèm với sự hiểu biết như vậy và đó là lý do thực sự chúng tôi quan tâm đến nó. Nó là một phần của một cơ thể lớn của nghiên cứu. Nếu bạn muốn nếm trải những gì chúng ta đã xem qua một cuốn sách giáo khoa lý thuyết phức tạp tốt, ví dụ " Lý thuyết phức tạp: Cách tiếp cận hiện đại " của Arora và Barak ( phiên bản nháp ).
≠
Nói tóm lại, từ quan điểm của một nhà lý thuyết phức tạp
P so với NP không phải là một câu đố với câu trả lời Có / Không. Chúng tôi tìm kiếm một câu trả lời cho P so với NP bởi vì chúng tôi nghĩ rằng nó sẽ hiểu rõ hơn về bản chất của tính toán hiệu quả. Một câu trả lời mà không có một tiến bộ lớn trong sự hiểu biết của chúng tôi không phải là rất thú vị.
Đã có quá nhiều trường hợp những người không phải là chuyên gia đã yêu cầu các giải pháp cho P so với NP, và những tuyên bố đó thường gặp phải những vấn đề mà họ sẽ không thực hiện nếu họ chỉ đọc một cuốn sách giáo khoa tiêu chuẩn về lý thuyết phức tạp.
Các vấn đề thường gặp P = NP
Các yêu cầu của P = NP dường như phổ biến hơn. Tôi nghĩ rằng sau đây là loại phổ biến nhất. Ai đó có một ý tưởng và viết một chương trình và kiểm tra nó trong một vài trường hợp và nghĩ rằng đó là thời gian đa thức và giải quyết chính xác một vấn đề hoàn chỉnh NP. Như tôi đã giải thích ở trên, không có lượng thử nghiệm nào sẽ hiển thị P = NP. P = NP cần một bằng chứng toán học , không chỉ là một chương trình dường như giải quyết vấn đề hoàn thành NP trong thời gian đa thức.
Những nỗ lực này thường bị một trong hai vấn đề:
I. thuật toán không thực sự là thời gian đa thức.
II. thuật toán không giải quyết tất cả các trường hợp chính xác.
≠
[Được viết]
Cách kiểm tra thuật toán của bạn không thực sự hoạt động
Bạn không thể chỉ ra rằng thuật toán của bạn hoạt động chính xác bằng cách thử nghiệm. Nhưng bạn có thể cho thấy nó không hoạt động chính xác bằng cách thử nghiệm! Vì vậy, đây là cách bạn có thể đảm bảo rằng thuật toán của bạn không chính xác nếu bạn sẵn sàng thực hiện một số công việc.
Đầu tiên, hãy viết chương trình để chuyển đổi các trường hợp SAT (ở định dạng CNF tiêu chuẩn) sang bài toán NP-hard mà bạn đang giải quyết. SAT là một trong những vấn đề NP-hard được nghiên cứu nhiều nhất và việc giảm từ các vấn đề khác sang SAT thường dễ dàng. Thứ hai, lấy các ví dụ mà trạng thái của những người giải SAT hiện đại đấu tranh (ví dụ: lấy các ví dụ từ thi SAT) và đưa chúng vào thuật toán của bạn và xem thuật toán của bạn hoạt động như thế nào. Hãy thử các trường hợp khó đã biết như Nguyên tắc Pigeonhole có mệnh đề (và không gian lận bằng cách mã hóa chúng thành trường hợp đặc biệt), trường hợp mật mã (như Thử thách bao thanh toán RSA ), trường hợp k-SAT ngẫu nhiên gần ngưỡng , v.v.
10n2
Cách kiểm tra ý tưởng thuật toán P = NP của bạn không thể hoạt động
Nếu bạn làm những điều này, bạn sẽ khá chắc chắn rằng thuật toán của bạn không hoạt động (nếu nó hoạt động tốt hơn trạng thái của những người giải SAT hiện đại thì cạnh tranh trong cuộc thi tiếp theo và rất nhiều người sẽ quan tâm nghiên cứu thuật toán và ý tưởng của bạn).
Bây giờ bạn biết nó không thực sự hoạt động nhưng điều đó là không đủ. Bạn muốn biết tại sao không,
là lý do thuật toán của tôi không hoạt động một vấn đề nhỏ có thể được sửa chữa hoặc có một lý do cơ bản tại sao nó không thể làm việc?
Đôi khi vấn đề với thuật toán rất đơn giản và người ta có thể xác định những gì sai về mặt khái niệm. Kết quả tốt nhất là bạn hiểu lý do ý tưởng của bạn không thể hoạt động. Thường thì không phải vậy, ý tưởng của bạn không hoạt động nhưng bạn không thể hiểu tại sao. Trong trường hợp đó hãy ghi nhớ:
hiểu lý do tại sao một số ý tưởng không thể làm việc có thể khó khăn hơn khi giải quyết P so với NP!
Nếu bạn có thể chính thức hóa ý tưởng của mình đủ, bạn có thể chứng minh được những hạn chế của các ý tưởng cụ thể (ví dụ: có những kết quả nói rằng việc chính thức hóa cụ thể của thuật toán tham lam không thể giải quyết các vấn đề hoàn thành NP). Tuy nhiên, điều đó thậm chí còn khó khăn hơn và bạn không có nhiều cơ hội nếu bạn chưa đọc sách giáo khoa lý thuyết phức tạp tiêu chuẩn.
Đôi khi thậm chí không có một ý tưởng khái niệm rõ ràng tại sao thuật toán nên hoạt động, tức là nó dựa trên một số phương pháp phỏng đoán không được hiểu rõ . Nếu bạn không có một ý tưởng khái niệm rõ ràng về lý do tại sao thuật toán của bạn nên hoạt động thì bạn có thể không có nhiều cơ hội để hiểu tại sao nó không!
≠
≠
Vấn đề 1: tác giả không biết định nghĩa của P và NP, hoặc thậm chí tệ hơn là không hiểu chứng minh toán học là gì. Bởi vì tác giả thiếu đào tạo toán học cơ bản, anh ta không hiểu khi anh ta nói những gì anh ta trình bày không phải là một bằng chứng (ví dụ: các bước không tuân theo các bước trước).
Vấn đề 2: tác giả nhầm lẫn "chúng ta không biết làm thế nào" với "tính không thể toán học". Ví dụ, họ đưa ra nhiều giả định phi lý và khi được hỏi "tại sao tuyên bố này là đúng?" họ trả lời "làm thế nào nó có thể sai?". Một điều phổ biến là giả định rằng bất kỳ chương trình nào giải quyết vấn đề đều phải thực hiện các bước cụ thể, ví dụ: nó phải tính các giá trị trung gian cụ thể, bởi vì anh ta không thể nghĩ ra một cách khác để giải quyết vấn đề.
[sẽ hoàn thành]
≠
[Được viết]
≠
Nếu một yêu cầu không gặp phải những vấn đề cơ bản này thì việc từ chối nó trở nên khó khăn hơn. Ở cấp độ đầu tiên, người ta có thể tìm thấy một bước không chính xác trong đối số. Phản hồi điển hình từ tác giả là tôi có thể sửa nó và điều này qua lại có thể tiếp tục. Tương tự như các giải pháp P = NP, thường rất khó tìm ra một vấn đề cơ bản với một ý tưởng có thể cho thấy nó không thể hoạt động, đặc biệt khi chính ý tưởng đó là không chính thức.
≠