Cuốn sách công thức cho mã hóa SAT?


16

Người giải SAT đang ngày càng hiệu quả hơn trong việc giải quyết các trường hợp lớn và đang được sử dụng làm back-end trong các bối cảnh khác nhau. Mỗi khi muốn sử dụng chúng để giải quyết vấn đề trong một miền cụ thể, anh ấy / cô ấy phải đưa ra một mã hóa đặc biệt không chỉ có bộ giải pháp phù hợp mà còn đặt các ràng buộc (thậm chí là dự phòng) trong một hình thức điều đó giúp các heuristic của người giải quyết trong việc tìm kiếm một giải pháp nhanh hơn.

Nhiều mã hóa như vậy đối với tôi dường như rất phổ biến, ví dụ: khẳng định rằng một tập hợp các nút hữu hạn được liên kết dưới dạng cây hoặc DAG hoặc danh sách được sắp xếp ...

Có một kho lưu trữ / công thức mã hóa phổ biến cho các vấn đề phổ biến với các giải pháp tối ưu hóa?


1. Câu hỏi này có vẻ rất hữu ích, nhưng cũng có khả năng vượt quá. Tôi nghĩ đó có thể là một câu hỏi tốt hơn nếu bạn tập trung vào một tên miền (vâng, điều này có thể liên quan đến nhiều câu hỏi, một câu hỏi cho mỗi tên miền - nhưng hãy đảm bảo thực hiện một số nghiên cứu trước khi hỏi và cho chúng tôi thấy bạn đã làm gì).
DW

2. Ngoài ra, bạn đã làm gì nghiên cứu? Bạn đã xem các giao diện SAT, chẳng hạn như STP, Alloy và Minion chưa? Bạn đã xem cs.stackexchange.com/q/12087/755 , cs.stackexchange.com/q/13188/755 , cs.stackexchange.com/a/6522/755 , cs.stackexchange.com/a/12153/ 755 ? tại các câu hỏi được gắn thẻ sat-solvers hay thỏa đáng ?
DW

Vâng, câu hỏi có thể hơi rộng. @DW cảm ơn vì các liên kết một số trong số họ có liên quan trực tiếp. Tôi nên đề cập rằng tôi không quan tâm đến việc giải quyết một vấn đề cụ thể, cũng như trong các phương pháp chung để mã hóa hiệu quả hơn; cụm từ "thực hành tốt nhất" mà tôi đã sử dụng có thể gây hiểu nhầm, tôi sẽ chỉnh sửa. Tôi quan tâm đến một cuốn sách công thức =)
Bordaigorl

Về miền tôi sẽ nói (siêu) lý thuyết đồ thị nhưng điều này có lẽ vẫn còn rất rộng ...
Bordaigorl

Xem thêm câu hỏi liên quan cs.stackexchange.com/q/12087
András Salamon

Câu trả lời:


9

Tôi đã đọc một bài khảo sát vài năm trước có vẻ phù hợp, " Kỹ thuật mã hóa SAT thành công " của Magnus Bjork.

Trừu tượng:

Bài viết này xác định các thực hành tốt cho mã hóa SAT bằng cách phân tích các cuộc phỏng vấn với một số chuyên gia SAT nổi tiếng. Mục đích là cả hai để xác định sự tự tin trong các chiến lược mã hóa khác nhau bằng cách phân tích xem có sự đồng thuận giữa các chuyên gia hay không, cũng như đưa ra kiến ​​thức ẩn cho người dùng SAT.

Có sự đồng thuận rằng các kỹ thuật mã hóa thường có tác động mạnh mẽ đến hiệu quả của bộ giải SAT, rằng thường phải mất nhiều công sức để tìm ra một mã hóa tốt và kích thước của một mã hóa chỉ liên quan rất lỏng lẻo đến độ khó của việc tìm giải pháp . Các chủ đề mà người được phỏng vấn không đồng ý bao gồm tính khả thi bao gồm cả mỹ phẩm trong các vấn đề SAT và liệu có nên hình thành các vấn đề như mệnh đề hay mạch.

Bài viết mô tả một số chiến lược tốt trong các tình huống khác nhau, chẳng hạn như các cách khác nhau để biểu diễn các con số và cách sử dụng gia tăng.


4

Trước tiên, luôn luôn là một ý tưởng tốt để kiểm tra Sổ tay về sự hài lòng [1] (tôi đoán nó không có sẵn miễn phí, xin lỗi). Ở đây, Chương 2 có tiêu đề "Mã hóa CNF". Ít nhất, cuốn sách cung cấp tài liệu tham khảo về tình trạng của nghệ thuật vào thời điểm viết và bạn có thể mở rộng tìm kiếm của mình thông qua chúng.

Ngoài ra, ở đây đây là hai slide gần đây về tiền xử lý SAT. Các slide cung cấp một cái nhìn tổng quan ngắn gọn về các kỹ thuật tiền xử lý, và cũng tham khảo thêm. Ý tưởng là thay vì cố gắng "mô hình hóa" vấn đề một cách hiệu quả, bạn chỉ cần mô hình hóa nó theo cách dễ nhất, nhấn go và một phần mềm cung cấp cho bạn một mã hóa hiệu quả.


[1] Biere, Armin, Marijn Heule, và Hans van Maaren, biên tập. Cẩm nang thỏa đáng. Tập 185. Ấn bản iOS, 2009.


3

không chính xác là một câu trả lời trực tiếp mà là một góc độ ngày càng liên quan chặt chẽ hơn: một số trong số này được bao phủ bởi một lĩnh vực nghiên cứu tương đối mới được gọi là SMT, Lý thuyết Modulo thỏa mãn . ý tưởng cơ bản là kết hợp các mã hóa vấn đề (ví dụ như số học số nguyên, đồ thị, v.v.) vào bộ giải SAT nhưng cũng sử dụng / tận dụng kiến ​​thức bổ sung có được từ khớp nối này để xây dựng các thuật toán giải pháp nâng cao hơn. đây là một cuộc khảo sát. như đã chỉ ra rằng chúng có thể hiệu quả hơn nhiều so với việc kết hợp một cơ chế mã hóa đặc biệt với các bộ giải SAT tiêu chuẩn.

  • Các lý thuyết Modulo thỏa mãn: Một món khai vị / Leonardo de Moura và Nikolaj Bjørner

    Các lý thuyết Modulo thỏa mãn (SMT) là về việc kiểm tra tính thỏa mãn của các công thức logic qua một hoặc nhiều lý thuyết. Vấn đề dựa trên sự kết hợp của một số lĩnh vực cơ bản nhất trong khoa học máy tính. Nó kết hợp vấn đề về sự thỏa mãn của Boolean với các miền, chẳng hạn như, những nghiên cứu về tối ưu hóa lồi và các hệ thống biểu tượng thao tác thuật ngữ. Nó cũng rút ra những vấn đề phổ biến nhất trong thế kỷ logic của biểu tượng: vấn đề quyết định, tính đầy đủ và không hoàn chỉnh của lý thuyết logic và cuối cùng là lý thuyết phức tạp. Vấn đề kết hợp mô-đun các thuật toán mục đích đặc biệt cho mỗi miền cũng sâu sắc và hấp dẫn như việc tìm kiếm các thuật toán mới hoạt động đặc biệt tốt trong bối cảnh kết hợp. SMT cũng thích một vai trò rất hữu ích trong công nghệ phần mềm. Phần mềm hiện đại, phân tích phần cứng và các công cụ dựa trên mô hình là các hệ thống phần mềm ngày càng phức tạp và đa diện. Tuy nhiên, cốt lõi của chúng luôn là một thành phần sử dụng logic tượng trưng để mô tả các trạng thái và biến đổi giữa chúng. Một bộ giải SMT được điều chỉnh tốt có tính đến các đột phá hiện đại thường quy mô các đơn đặt hàng lớn hơn các bộ giải ad-hoc tùy chỉnh.


Đây là một điểm rất tốt. Nhưng ngay cả khi bạn sử dụng bộ giải SMT, có một phần hoàn toàn dựa trên SAT của tìm kiếm có thể hưởng lợi từ "công thức" thành công ...
Bordaigorl

không hoàn toàn chính xác khi nói có "phần hoàn toàn dựa trên SAT của tìm kiếm", bởi vì (như đã nêu / hiểu biết của tôi), nó sử dụng cấu trúc được biết / xây dựng đặc biệt của các thể hiện được tạo ra trong các heuristic mà một người giải "vanilla" sẽ không "nhìn nhận". nói cách khác, nó (tức là sự kết hợp ) không "có thể rút / tách" thành các bộ phận cấu thành (tức là bộ mã hóa cộng với bộ giải) hoặc chỉ đơn thuần là một hệ thống mã hóa được tiêu chuẩn hóa khác.
vzn

Tôi hiểu rồi. Tôi sẽ đọc thêm về nó cảm ơn!
Bordaigorl

chắc chắn rồi. cũng lưu ý lập trình câu trả lời là hơi giống nhau.
vzn
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.