Đối với những vấn đề trong P là dễ dàng để xác minh kết quả hơn là tìm thấy nó?


52

Đối với (các phiên bản tìm kiếm) của các vấn đề NP -complete, việc xác minh một giải pháp rõ ràng dễ dàng hơn tìm kiếm nó, vì việc xác minh có thể được thực hiện trong thời gian đa thức, trong khi việc tìm kiếm nhân chứng mất (có thể) thời gian theo cấp số nhân.

Trong P , tuy nhiên, các giải pháp cũng có thể được tìm thấy trong thời gian đa thức, vì vậy nó có vẻ không rõ ràng khi là việc xác minh nhanh hơn so với việc tìm kiếm giải pháp. Trong thực tế, các vấn đề khác nhau dường như hành xử khác nhau từ quan điểm này. Vài ví dụ:

  1. 3SUM: cho số đầu vào, tìm 3 trong số chúng có tổng bằng 0. Theo tôi biết, thuật toán được biết nhanh nhất chạy trong thời gian O ( n 2 - o ( 1 ) ) và thứ tự này được phỏng đoán là tối ưu. Mặt khác, việc xác minh một giải pháp nhanh hơn nhiều, vì tất cả những gì chúng ta cần làm chỉ là kiểm tra xem 3 số tìm thấy có thực sự tổng bằng 0 hay không.nO(n2o(1))

  2. Đường dẫn ngắn nhất cho tất cả các cặp: đưa ra một biểu đồ có trọng số cạnh, tính toán ma trận khoảng cách đường đi ngắn nhất của nó. Một khi một ma trận như vậy được đưa ra, nó có thể được kiểm tra nhanh hơn rằng nó thực sự là ma trận khoảng cách chính xác, hơn là tính lại nó không? Tôi đoán là câu trả lời có lẽ là có, nhưng nó chắc chắn ít rõ ràng hơn so với 3SUM.

  3. Lập trình tuyến tính. Nếu một giải pháp tối ưu được yêu cầu được đưa ra, việc kiểm tra nó sẽ dễ dàng hơn so với việc tính lại nó, khi thông tin phụ cũng được đưa ra (một giải pháp kép tối ưu). Mặt khác, nếu chỉ có giải pháp nguyên thủy có sẵn, không rõ liệu người ta có thể kiểm tra nó nhanh hơn, thực sự là giải quyết LP.

Câu hỏi: những gì được biết về chủ đề này? Đó là, khi nào dễ dàng xác minh giải pháp cho một vấn đề trong P , hơn là tìm giải pháp?


7
kkk

16
nn1Θ(nlogn)

7
Bạn có muốn dễ dàng xác minh cả có và không có trường hợp nào cho các vấn đề quyết định không? Đối với 3SUM, trong khi thật dễ dàng để xác minh các trường hợp có trong thời gian liên tục, tôi không biết liệu có dễ dàng xác minh một trường hợp không. Hay bạn đang suy nghĩ nhiều hơn về các vấn đề trong đó có đầu ra không phải là Boolean, như phép nhân ma trận? (Phép nhân ma trận là một ví dụ về những gì bạn muốn nếu bạn cho phép các thuật toán ngẫu nhiên.)
Robin Kothari

3
"Mặt khác, việc xác minh giải pháp nhanh hơn nhiều, vì tất cả những gì chúng ta cần làm chỉ là kiểm tra xem 3 số tìm thấy có thực sự tổng bằng 0." - Chúng ta cũng cần kiểm tra xem 3 số tìm thấy có thực sự là một phần của đầu vào không.
hvd

3
Có vấn đề nào mà chúng tôi biết rằng việc xác minh không dễ dàng hơn?
Raphael

Câu trả lời:


24

α(n)


4
Có lẽ thật công bằng khi thêm rằng có một thuật toán ngẫu nhiên chạy trong thời gian tuyến tính dự kiến ​​(thuật toán Karger-Klein-Tarjan).
Sasho Nikolov

2
Ngoài ra, trong trường hợp bất kỳ ai muốn có một liên kết, đây là thuật toán xác minh MST thời gian tuyến tính đơn giản nhất mà tôi biết: webhome.cs.uvic.ca/~val/Publications/Alacticmica-MSTverif.ps .
Sasho Nikolov

20

Bài viết này cho thấy rằng có các thuật toán xác minh cho cả hai trường hợp CÓ và KHÔNG cho 3 vấn đề, bao gồm luồng Max, 3SUM và APSP, nhanh hơn bởi một yếu tố đa thức so với giới hạn đã biết để tự tính toán giải pháp.

Có một loại vấn đề, cụ thể là những vấn đề cải thiện thời gian chạy là SETH-hard, có thời gian chạy để xác minh KHÔNG có trường hợp nào có thể nhanh hơn đáng kể so với thời gian tính toán giải pháp, nếu không thì phỏng đoán từ bài báo này có tên là Nondeterministic Giả thuyết thời gian theo cấp số nhân mạnh mẽ sẽ thất bại.


18

Đối với một số vấn đề dường như không có sự khác biệt. Đặc biệt, chương trình Vassilevska Williams & Williams :

  • đối với phép nhân ma trận Boolean, tính toán sản phẩm ma trận và xác minh sản phẩm ma trận tương đương với subcubic, nghĩa là cả hai đều có thuật toán thời gian subcubic hoặc cả hai đều không làm được.

  • Điều tương tự cũng đúng đối với tính toán và xác minh sản phẩm ma trận đối với bất kỳ "cấu trúc mở rộng (tối thiểu, +)" nào (xem bài viết về định nghĩa, nhưng điều này bao gồm rất nhiều vấn đề tự nhiên).

(Tất nhiên, bây giờ, có thể tất cả các vấn đề này đều có thuật toán cận lâm sàng, và sau đó có thể có sự khác biệt về đa thức giữa tính toán và xác minh, nhưng đối với những vấn đề này không thể có sự khác biệt về khối. thực tế tất cả chúng đều yêu cầu thời gian cơ bản.)


2
Mặt khác, để nhân ma trận trong một trường đủ lớn, có một thuật toán ngẫu nhiên theo thời gian bậc hai để xác minh, trong khi thời gian chạy nhanh nhất để tính toán sản phẩm là n ^ omega.
Thatchaphol

2
@Thatchaphol: Có, mặc dù nhiều người tin rằng omega = 2 ... Ngoài ra, người ta nhận ra rộng rãi rằng phép nhân ma trận Boolean (tức là ma trận điện toán nhiều so với Boolean và hoặc nửa vòng) có phần khác với phép nhân ma trận so với nhân cánh đồng.
Joshua Grochow

16
  • Ω(n)Ω(logn)

    O(1)

  • Ω(nlogn)O(n)


2
Ω(nlogn)O(1)

O(n)

Θ(n)


9

O~(n6)O~(n3)


sự bổ sung (tính tổng hợp) thậm chí còn dễ dàng hơn để chứng kiến!
Yonatan N

3

O(n2ϵ)

PΩ(n1ϵ)

O(n2/logn)

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.