Khi nào nên sử dụng SAT vs Ràng buộc?


18

Nếu tôi gặp một vấn đề khó khăn, một cách tiếp cận tiêu chuẩn là diễn đạt nó như một ví dụ SAT và thử chạy một bộ giải SAT trên nó. Một cách tiếp cận tiêu chuẩn khác là diễn đạt nó như một vấn đề thỏa mãn ràng buộc và thử sử dụng bộ giải CSP. Cả hai cảm thấy giống nhau một cách mơ hồ về những loại vấn đề có thể được thể hiện một cách tự nhiên trong định dạng đầu vào của họ.

Có bất kỳ hướng dẫn hoặc quy tắc nào về cách nhận biết, đối với một vấn đề nhất định, phương pháp nào có nhiều khả năng mang lại kết quả tốt? Có bất kỳ hướng dẫn nào mà bất cứ ai cũng có thể đưa ra về loại vấn đề nào có thể được xử lý tốt hơn bởi người giải SAT so với người giải CSP, hoặc ngược lại?

(Rõ ràng, có một số vấn đề dễ dàng có thể được giải quyết bằng cả hai cách tiếp cận. Ngoài ra còn có một số vấn đề khó giải quyết hữu ích bằng cách tiếp cận. Hãy đặt chúng sang một bên. Trường hợp hướng dẫn hữu ích nhất là các vấn đề trong đó SAT Người giải quyết hoạt động tốt hơn người giải CSP hoặc khi người giải CSP hoạt động tốt hơn người giải SAT. Làm thế nào để tôi nhận ra khi người giải SAT có khả năng phù hợp hơn người giải CSP hoặc khi người giải CSP có khả năng phù hợp hơn một người giải SAT - tức là, nên thử cách tiếp cận nào trước?)


1
Lưu ý rằng một vấn đề không thể quá khó nếu bạn muốn giảm xuống SAT.
Raphael

1
Hoặc tại sao chỉ tập trung vào SAT / CSP, làm thế nào về SMT?
Juho

Sử dụng công cụ giải quyết ràng buộc có lợi thế là bạn có thể dễ dàng thử một số tối ưu hóa (ví dụ: kỹ thuật phá vỡ mô phỏng) trong các trường hợp không quá khó (và kiểm tra tính hiệu quả của các tối ưu hóa đó). Hơn nữa, nhiều trong số chúng có thể xuất ra một tệp CNF tiêu chuẩn làm đầu ra trung gian.
Vor

Điểm tuyệt vời, @Juho! SMT cũng đáng để xem xét - hãy thoải mái so sánh cả ba (SAT, CSP, SMT), nếu bạn có bất kỳ suy nghĩ nào về điều đó.
DW

Tôi đã có cùng một câu hỏi, cảm ơn đã hỏi.
xxx ---

Câu trả lời:


8

Tôi nghĩ rằng đây là một câu hỏi rất hay. Bạn cũng có thể hỏi: khi nào nên sử dụng bộ giải SMT? Tôi có cảm giác có thể khó xác định trước khi mô hình hóa vấn đề và thực sự chạy bộ giải CSP / SAT / SMT và tìm hiểu. Người ta biết rằng ngay cả những người giải quyết khác nhau cũng thực hiện rất khác nhau trong cùng một trường hợp! Trực giác của tôi cũng xuất phát từ thực tế là có nhiều khả năng mô hình hóa một vấn đề. Hơn nữa, có nhiều cách thực hiện tìm kiếm và suy luận, tùy thuộc vào loại ràng buộc nào được sử dụng (nếu hình thức trong câu hỏi cho phép các loại khác nhau).

Lấy ví dụ câu đố Sudoku tiêu chuẩn. Đối với câu đố tiêu chuẩn , người giải SAT / CSP hiện đại sẽ giải quyết mọi câu đố như vậy ngay lập tức. Tuy nhiên, tôi thà sử dụng một bộ giải CSP vì việc thể hiện ý định của tôi dễ dàng hơn . Câu đố được đề cập cần ràng buộc alldiff, và tôi đã hoàn thành. Thực sự có khá nhiều nghiên cứu trong bối cảnh những người giải quyết CSP đang cố gắng giải quyết các trường hợp Sudoku có kích thước khác nhau. Theo tôi nhớ, họ không thực hiện bất kỳ so sánh nào giữa SAT, mà là cố gắng xác định loại suy luận nào hoạt động tốt nhất, hoặc loại câu đố Sudoku nào khó. Tôi không biết nếu nói câu đố Sudoku, người giải SAT sẽ nhanh hơn người giải CSP.9 + 9 + 9 = 27 32 × 328×89+9+9=2732×32

Các hình thức khác nhau có thể nắm bắt thông tin cụ thể của miền và khai thác nó tốt hơn và theo những cách khác nhau. Để biết thêm một chút về điều này, xem câu trả lời và ý kiế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.