Thuật toán đa thời gian cho SUBSET-SUM giả sử P = NP


7

Trong trang Wikipedia về bài toán P so với NP, có một thuật toán "giải quyết" SUBSET-SUM trong trường hợp P = NP trong thời gian đa thức. (Ý tưởng của bạn là tìm một TM cung cấp chứng chỉ). Nhưng nó cho "có" trong thời gian đa thức và chạy mãi mãi nếu câu trả lời là "không". Rõ ràng có thể cố định để đưa ra "không" trong thời gian theo cấp số nhân (chỉ để chạy thuật toán hàm mũ nếu cái đầu tiên chạy quá lâu).

Nhưng chúng ta có thể mô tả rõ ràng một thuật toán "trung thực", giải quyết (và ý tôi là, thực sự giải quyết) SUBSET-SUM (hoặc bất kỳ vấn đề hoàn thành NP nào khác) trong thời gian đa thức giả sử P = NP?

Bởi "trung thực" và "thực sự giải quyết" Tôi có nghĩa là thuật toán đáp ứng các định nghĩa cổ điển cho thuật toán đa thức thời gian, nghĩa là, ở đây nên tồn tại các hằng số C1,C2 như vậy tại bất kỳ đầu vào x thuật toán sẽ chấm dứt không quá C1|x|C2 các bước và đầu ra "có" nếu xSUBSET-SUM và "không" nếu không. Thuật toán Wikipedia không thỏa mãn điều kiện đầu tiên, vì vậy nó không "thực sự giải quyết" được vấn đề.


Tôi tin rằng điều này là không biết. Khu vực này được gọi là thuật toán heuristic tối ưu . Một trong những nhà nghiên cứu chính là Edward A. Hirsch .
Yuval Filmus

@djechlin đúng và Wikipedia sai: Thuật toán Wluôn luôn dừng lại, bởi vì cuối cùng nó sẽ đánh vào một phương pháp vũ phu, và giải quyết vấn đề. Hơn nữa, vì nó phù hợp với tất cả các chương trình, thời gian chạy của nó cũng dễ dàng được phân tích: nếu vào đầu vàox, các athuật toán -th đưa ra câu trả lời trong t bước, sau đó W sẽ có mô phỏng Θ((a+t)2)các bước trong tổng số, độc lập với bất kỳ giả định lý thuyết phức tạp; đúng là không có vấn đề gì về độ phức tạp thực sự của SUBSET-SUM. Phương pháp tìm kiếm này được gọi là Tìm kiếm Levin, đôi khi là Tìm kiếm chung.
Liêuwe Vinkhuijzen

Câu trả lời:


2

Tôi có thể trả lời một nửa điều này, nhưng tôi tin rằng câu hỏi sâu hơn mà bạn đang nhận được là điều gì đó tôi đang trong quá trình học tập tốt hơn :)

Thuật toán trên wikipedia, gọi nó là W, dựa trên ý tưởng: thay vì đoán tại các chứng chỉ tại sao không chỉ đoán ở chính thuật toán P xác định D? Điều này là tốn kém, nhưng vì nó độc lập với đầu vào nên nó là O (1) (nếu thuật toán đó tồn tại). Thuật toán thực sự luôn quyết định ngay cả khi P! = NP, vì dĩ nhiên có một loạt các chương trình "brute force" chỉ in ra một chứng chỉ có thể sau đó dừng lại, do đó W có thể rơi trở lại lực lượng vũ trang rất chậm.

Vấn đề là bạn thực sự không có cách nào để xác minh chương trình mà nó trả lại cho bạn. Bạn có thể tưởng tượng việc chạy W và thấy nó dường như thích một chương trình nhất định, nhưng bạn có thể thấy rằng với đầu vào lớn hơn, cuối cùng nó sẽ tìm thấy một lỗ hổng trong chương trình đó và tiếp tục. Nó dường như giải quyết trên một thuật toán dường nhưn7 nhưng sau đó tìm thấy một lỗi trong đó và chuyển sang một n2000thuật toán. Bạn sẽ không bao giờ biết khi nào nó đã tìm thấy "đúng".

Đây thực sự là cùng một ý tưởng được sử dụng trong chứng minh định lý Karp-Lipton: được cung cấp đủ sức mạnh tính toán, bạn có thể sử dụng nó để bắt đầu đoán toàn bộ các lớp chương trình và xác minh rằng chúng hoạt động (chính xác là bằng chứng, "đoán một chương trình, và xác minh rằng nó hoạt động, sau đó sử dụng nó ", cần một chút sức mạnh tính toán - nhiều hơn NP - để thực hiện.)

Tôi không biết về lý thuyết liên quan đến mức độ phức tạp của một giải pháp, nhưng có lẽ ai đó hiểu biết hơn có thể trả lời.

Kịch bản cụ thể hơn trong thực tế P = NP là ai đó thực sự xây dựng một thuật toán cho bất kỳ vấn đề hoàn thành NP nào, chẳng hạn như SAT.

Tôi nghĩ rằng bạn đã hỏi một câu hỏi hay và tôi tò mò làm thế nào để điền vào những khoảng trống trong câu trả lời của tôi, liên quan đến cách W có thể được phân tích và hữu ích hơn trong bán thực hành.


Câu trả lời tốt! +1. Có một sự khác biệt tinh tế giữa tìm kiếm này và Karp-Lipton: ở đây, chúng tôi chỉ phải xác minh giải pháp mà chương trình đưa ra; trong định lý Karp-Lipton, bạn phải xác minh rằng chương trình này là đúng (cho tất cảx{0,1})
Liêuwe Vinkhuijzen

-1

Tôi sẽ thử trả lời một phần cho câu hỏi của bạn, nhưng tôi nghĩ rằng nó là đủ cho nhiệm vụ của bạn.

Là NP-hoàn thành khu nghỉ mát để được NP và NP-HARD.

Trở thành NP-HARD có nghĩa là mọi vấn đề trong NP có thể được dịch, thông qua phép biến đổi thời gian đa thức, thành vấn đề này.

SSP được biết là NP-HARD (và NP-HOÀN THÀNH).

Ví dụ, điều này có nghĩa là bạn có thể tra cứu trên internet, về phép biến đổi Thời gian đa thức cụ thể cho thấy SSP là NP-HARD (trên bất kỳ bài báo nào chứng minh điều đó).

Phép biến đổi đó là một thuật toán "trung thực", được đảm bảo chạy trong thời gian đa thức và được viết trong một số bài báo ở đâu đó. Hãy gọi nó là 'SSP-T' (để chuyển đổi SSP).

Cách duy nhất để chứng minh rằng P = NP là EXHIBIT một thuật toán thời gian đa thức cho một vấn đề trong NP.

Vì vậy, nếu bạn giả sử rằng P = NP, bạn đang giả sử BẠN CÓ RẤT NHIỀU TAY CỦA BẠN một thuật toán đa thức "trung thực" để giải một bài toán NP (bất kỳ một). Hãy gọi thuật toán đó: 'H'

Bây giờ ... đưa ra bất kỳ vấn đề nào trong NP, hãy gọi nó là 'Vấn đề NP của tôi' ...

Giải pháp bạn đang tìm kiếm là:

  • Áp dụng SSP-T để chuyển đổi nó thành một thể hiện của SSP,

  • Bây giờ sử dụng SSP-T một lần nữa để chuyển đổi thể hiện SSP này thành một thể hiện của 'H' (NP - một-một-- vấn đề NP mà BẠN BIẾT cách giải quyết trong P - dựa trên giả định rằng P = NP-- ),

  • Chạy H để tìm giải pháp.

  • Sử dụng SSP-T để giải thích giải pháp theo SSP

  • Sử dụng SSP-T một lần nữa để diễn giải giải pháp trong 'Vấn đề NP của tôi' (vấn đề tùy ý bạn muốn giải quyết ngay từ đầu).

Và ở đó bạn đi!

5 bước tuần tự này là thuật toán "trung thực" mà bạn đang tìm kiếm.

Mỗi bước chạy trong thời gian đa thức và được đảm bảo tồn tại theo chính định nghĩa của từng khái niệm.

Bạn có thể đã chọn bất kỳ vấn đề NP-HARD nào khác, thay vì SSP, bởi vì định nghĩa của NP-HARD là vấn đề đảm bảo (theo định nghĩa!) Rằng:

  • SSP-T tồn tại,

  • là một thuật toán,

  • là hai chiều,

  • là hợp lệ và áp dụng cho bất kỳ vấn đề NP; và

  • chạy trong thời gian đa thức

Trên thực tế, nếu bạn nhìn theo cách thông thường nhất để chỉ ra rằng bất kỳ vấn đề nào là NP-HARD là VIA chuyển đổi thành SAT-3, đây là một trong những vấn đề đầu tiên được thể hiện NP-HARD (đôi khi trong thập niên 60/70).

Hãy cho tôi biết bất kỳ điểm yếu nào bạn có thể tìm thấy trong lý luận / giải thích tôi đã đưa ra.


1
Không phải là cách duy nhất để chứng minh rằng P = NP là bằng cách hiển thị thuật toán đa thời gian cho một số vấn đề trong NP. Nó đủ để chứng minh rằng một thuật toán như vậy tồn tại. Bên cạnh đó, OP đang tìm kiếm một thuật toán cụ thể có thể được mô tả ngay bây giờ.
Yuval Filmus

Tôi đoán bạn đã đúng, chỉ hiển thị sự tồn tại của 'H' như vậy (một số giải pháp thời gian đa thức cho một số vấn đề NP cụ thể) sẽ cho thấy P = NP. Tuy nhiên
Martin Carames Abente

(tiếp tục bình luận cuối cùng) Tuy nhiên, 5 bước được đưa ra vẫn là một thuật toán thực tế / cụ thể, một trong những đầu vào của nó là 'H'. Giống như SSP-T có đầu vào: ví dụ của một vấn đề NP (một vấn đề được chuyển đổi thành một thể hiện hoặc SSP - hoặc ngược lại--). "Chạy H để tìm giải pháp" là một bước cụ thể, khi bạn có H làm đầu vào. Mặt khác, YF, nếu OP đang mong đợi một giải pháp cụ thể dựa trên một định lý tồn tại, bạn đã đúng. Nhưng tôi không nghĩ anh ấy đang mong đợi điều đó. Nó tương tự như mong đợi một giải pháp cụ thể về P = NP trong wikipedia.
Martin Carames Abente
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.