Quy tắc ngón tay cái để biết nếu một vấn đề có thể được hoàn thành NP


26

Câu hỏi này được lấy cảm hứng từ một bình luận trên StackOverflow .

Ngoài việc biết các vấn đề NP-đầy đủ của cuốn sách Garey Johnson, và nhiều vấn đề khác; Có một quy tắc nào để biết liệu một vấn đề có giống NP-hoàn chỉnh không?

Tôi không tìm kiếm một cái gì đó nghiêm ngặt, nhưng với một cái gì đó hoạt động trong hầu hết các trường hợp.

Tất nhiên, mỗi khi chúng ta phải chứng minh rằng một vấn đề là NP-perfect, hoặc một biến thể nhỏ của NP-perfect; nhưng trước khi vội vàng đưa ra bằng chứng, sẽ rất tuyệt nếu có niềm tin nhất định vào kết quả tích cực của bằng chứng.


8
Nguyên tắc nhỏ của tôi rất đơn giản: Nếu nó không có mùi như một vấn đề mà tôi đã quen thuộc, thì đó có lẽ là NP-hard (hoặc tệ hơn).
JeffE

12
@JeffE tất nhiên, bây giờ bạn đã quen với khá nhiều vấn đề ... những người mới tham gia CS có thể không thể sử dụng quy tắc tương tự.
Joe

1
@Joe: Đúng vậy. Có lẽ sẽ tốt hơn để nói: Nếu bạn không gặp vấn đề từ sách giáo khoa, có lẽ đó là NP-hard.
JeffE

2
Một cách khác để nói điều này: thật đáng ngạc nhiên khi một vấn đề không phải là NP-hard, hơn là khi một vấn đề là NP-hard.
Joe

Câu trả lời:


15

Đây là cách tiếp cận cá nhân của tôi để xác định xem một vấn đề (tức là ngôn ngữ L ) có hoàn chỉnh NP hay không. Nếu cả hai điều kiện này được xác minh:

  • Tôi cảm thấy việc kiểm tra nếu một ví dụ tôiL ngụ ý rằng tôi cần kiểm tra tất cả các kết hợp của một số loại
  • rằng không có cách nào để chia một sự kết hợp như vậy thành hai kết hợp nhỏ hơn

sau đó rất có thể là NP-hard.L

Ví dụ cho bài toán tổng con , tôi phải liệt kê tất cả các tập con của và kiểm tra xem có tập nào có tổng bằng không. Tôi có thể chia thành hai tập con nhỏ hơn và mà tôi sẽ kiểm tra một thuộc tính tương tự không? Humm ... không thực sự. Có thể nếu tôi đã kiểm tra tất cả sự kết hợp của và nhưng điều đó sẽ thực sự dài ...SSS1S2S1S2

Thông thường khả năng chia thành các mảnh nhỏ hơn là một chỉ báo tốt cho một vấn đề xảy ra ở P. Đây là cách tiếp cận phân chia và chinh phục . Ví dụ để tìm ra con đường ngắn nhất giữa hai điểm, bạn có thể sử dụng tài sản đó nếu con đường đi ngắn nhất từ đến đi qua thì nó không còn là so với con đường ngắn nhất từ đến cộng với đi ngắn nhất từ đến .MộtCBMộtBBC

Thẳng thắn mà nói cách tiếp cận này rất cơ bản: Tôi cố gắng tìm một thuật toán (đa thức) cho bài toán đã cho. Nếu tôi không thể tìm thấy thì vấn đề sẽ trở nên "khó khăn" theo quan điểm của tôi. Sau đó là tất cả các lý do về tính đầy đủ của NP: tôi có thể mã hóa một vấn đề hoàn thành NP hiện có sang vấn đề này không? (Và vì việc này thường khó hơn nhiều, tôi thử một lần nữa để tìm thuật toán đa thức ..)

Tôi nghi ngờ rằng đây là cách nghĩ thông thường. Tuy nhiên, vẫn còn khá khó để áp dụng cho các vấn đề chưa biết. Cá nhân tôi nhớ rằng đã bị bất ngờ bởi một trong những ví dụ đầu tiên về tính đầy đủ của NP mà tôi đã nói: vấn đề phân thân . Có vẻ như rất đơn giản để kiểm tra! Vì vậy, tôi cho rằng kinh nghiệm đó có liên quan nhiều đến nó. Ngoài ra trực giác đôi khi có thể vô dụng. Tôi nhớ đã được nói nhiều lần hai vấn đề gần như giống hệt nhau nhưng một vấn đề ở P và một vấn đề khác với NP là hoàn thành.

Tôi vẫn chưa tìm thấy một ví dụ tốt (tôi cần trợ giúp ở đây), nhưng đây giống như vấn đề tương ứng bài : đây là một vấn đề không thể giải quyết được nhưng một số biến thể có thể quyết định được.


7
Một ví dụ tôi thực sự thích là một ví dụ sau đây. Lấy vấn đề tính toán định thức của ma trận. Đây là một vấn đề dễ dàng ở P. Bây giờ, chỉ cần thay đổi dấu trong công thức xác định thành thay vì xen kẽ giữa -1 và +1 và bạn có được vấn đề vĩnh viễn , đó là vấn đề # P-Complete. +1
Massimo Cafaro

2
Một ngoại lệ thú vị cho quy tắc ngón tay cái là các vấn đề tối ưu hóa có thể được giải quyết bằng lập trình tuyến tính. Nếu bạn chưa từng nghe về mánh khóe này, thật khó để thấy các vấn đề như vấn đề chuyển nhượng hoặc khớp đồ thị có thể được giải quyết trong thời gian đa, vì các thủ thuật như phân chia và chinh phục và lập trình động dường như không được áp dụng.
hugomg

Một ví dụ là vấn đề Hậu quả chung dài nhất xảy ra ở P trong 2 chuỗi nhưng được đưa vào NP-Hard với nhiều hơn.
Christian Vielma

14

Một góc nhìn khác về độ cứng của vấn đề xuất phát từ cộng đồng trò chơi và câu đố, trong đó nguyên tắc chung là "các vấn đề khó nhất có thể" (và các trường hợp ngoại lệ đến từ các cấu trúc ẩn trong vấn đề - ví dụ của Massimo về yếu tố quyết định trong ý kiến ​​là một ví dụ tốt về điều này); Bí quyết sau đó hiểu được mức độ khó của một vấn đề:

  • Các câu đố liên quan đến sự tồn tại của cấu hình tĩnh nằm trong NP, và do đó chúng có xu hướng hoàn thành NP; chẳng hạn, bài toán đóng gói polyomino (một tập hợp polyominos đã cho có thể đóng gói một hình chữ nhật cho diện tích thích hợp không?) có thể hoàn thành NP.n
  • Các câu đố liên quan đến chuỗi di chuyển trong không gian trạng thái giới hạn nằm trong PSPACE (vì 'cây di chuyển' thường có thể được khám phá theo chiều sâu tiêu chuẩn - trước tiên chỉ cần lưu trữ cho số lượng cấu hình đa thức) và có xu hướng hoàn thành PSPACE; một ví dụ kinh điển về điều này là Rush Hour.
  • Các trò chơi có độ sâu giới hạn đa thức cũng nằm trong PSPACE; cái này sử dụng đặc tính của PSPACE là APTIME, vì đặc tính chiến lược tối thiểu thông thường bắt chước hoàn hảo một máy Turing xen kẽ với đặc tính của nó là 'tồn tại một động thái cho người chơi A sao cho mỗi lần trả lời di chuyển từ người chơi B, tồn tại một câu trả lời di chuyển cho người chơi A sao cho ... ', v.v. Họ cũng có xu hướng hoàn thành PSPACE; Hex và các trò chơi Tic-Tac-Toe tổng quát là cả hai ví dụ về điều này.
  • Các trò chơi không bị ràng buộc về độ sâu của cây nhưng được chơi trong không gian giới hạn (đa thức) nằm trong EXPTIME, vì có nhiều tổng số vị trí và toàn bộ biểu đồ có thể được xây dựng và khám phá theo đa thức thời gian về số lượng vị trí (và do đó theo cấp số mũ) ; những trò chơi này thường hoàn thành EXPTIME. Cờ vua, Cờ đam và cờ vây đều thuộc loại này.
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.