Chương 1 sẽ được giới thiệu về các vấn đề cơ bản như Lôgic mệnh đề, bài toán SAT, các SAT Solver và ứng dụng của phương pháp SAT Encoding. - Chương 2 sẽ trình các kỹ thuật SAT solving cơ bản bao gồm thủ tục DPLL, và các kỹ thuật áp dụng trong DPLL như: CDCL, Back Jumping, 2 Watched literals, Clause Elimination. - Chương 3 trình bày các kỹ thuật SAT Solving tiên tiến hiện nay, những kỹ thuật đang được cài đặt trong các SAT solver mạnh trên thế giới như GlueMinisat, Glucose. - Chương 4 tiến hành thực nghiệm so sánh và đánh giá 3 SAT Solver trên bộ dữ liệu chuẩn của cuộc thi SAT competition hàng năm.
MỤC LỤC LỜI CẢM ƠN. LỜI CAM ĐOAN. BẢNG CÁC THUẬT NGỮ VÀ TỪ VIẾT TẮT. DANH MỤC CÁC BẢNG BIỂU.
DANH MỤC CÁC HÌNH VẼ. Bài toán SAT. Công thức Lôgic mệnh đề. Chuẩn tắc hội CNF.
Phương pháp SAT Encoding. Trò chơi Hitori. Trò chơi Sodoku. Trò chơi Slitherlink.
Một số ứng dụng khác của SAT. CÁC KỸ THUẬT SAT SOLVING CƠ BẢN. Thủ tục DPLL truyền thống. Một số khái niệm cơ bản.
Các luật cơ bản của thủ tục DPLL. Thủ tục DPLL hiện đại. Learn và Forget. Thuật toán CDCL.
Nội dung chính của CDCL. Giải thuật CDCL. Suy diễn mệnh đề và mức quay lui. Biểu đồ kéo theo.
Học từ mệnh đề xung đột. Kỹ thuật Two -Watched literals. Two- Watched literal. Giải pháp loại bỏ biến và loại bỏ mệnh đề.
Loại bỏ biến. Loại bỏ mệnh đề. CÁC KỸ THUẬT SAT SOLVING TIÊN TIẾN HIỆN NAY. Tiêu chí đánh giá Learn Clause.
Chiến lược tự khởi động lại. Quản lý mệnh đề học. Khởi động lại. Giới thiệu về MiniSat.
Giao diện lập trình ứng dụng. Tổng quan về Minisat. Biên dịch Minisat. Biên dịch GlueMinisat.
Biên dịch Glucose. Bộ dữ liệu thực nghiệm. 56 TÀI LIỆU THAM KHẢO. 56 BẢNG CÁC THUẬT NGỮ VÀ TỪ VIẾT TẮT STT Thuật ngữ Từ viết tắt / Diễn giải 1 SAT Satisfiability 2 UNSAT Unsatisfiability Một công cụ chứng minh tự động các công 3 SAT Solver thức Lôgic mệnh đề 4 CNF Conjunctive Normal Form 5 BCP Boolean Constraint Propagation 6 DPLL Davis–Putnam–Logemann–Loveland 7 CDCL Conflict Driven Clause Learning 8 UIP Unique Implication Point 9 LBD Literal Blocks Distance DANH MỤC CÁC BẢNG BIỂU Bảng 4.1: Kết quả thực nghiệm Minisat, Glueminisat, Glucose trên Slitherlink .2: Kết quả thực nghiệm Minisat, Glueminisat, Glucose trên Aprove 09.
53 DANH MỤC CÁC HÌNH VẼ Hình 1.1: Trò chơi Logic Hitori .2: Trò chơi Logic Sodoku và lời giải .3: Trò chơi Logic Slitherlink và lời giải .4: Mã hóa Luật 1 trò chơi Slitherlink.5: Mã hóa Luật 2 của Slitherlink .1: Đồ thị xung đột để tìm backjump clause .2: Một phần của đồ thị suy diễn quyết định mức 6, thỏa mãn các mệnh đề trong ví dụ, sau khi quyết định x1=1(trái). Đồ thị tương tự sau khi học được xung đột từ mệnh đề C9 = (x5 V ⌐x1) và quay trở lại mức quyết định 3(phải) .3: Ví dụ về đồ thị xung đột với 2 UIPs .4: Đồ thị suy diễn của ví dụ 2. UIP đầu tiên là x4 và tương ứng với các khẳng định literal là ⌐x4 .5: Quá trình minh họa sử dụng Binary Resolution để đưa ra mệnh đề Backjump Clause .6: Ví dụ về biểu đồ kéo theo .7: Xây dựng biểu đồ kéo theo .8: Xác định mệnh đề xung đột .9: Tìm kiếm các biến suy diễn lần 1 .10: Tìm kiếm các biến suy diễn lần 2 .11: Tìm kiếm các suy diễn lần 3 .12: Tìm kiếm các biến suy diễn lần 4 .13: Kết luận mệnh đề học được và trả về mức quyết định backtrack .14: BCP sử dụng 2 watched literals. 1: Giao diện ứng dụng của Minisat .2: Kết quả thực nghiệm trên Slithelink .3: Kết quả thực nghiệm thời gian chạy trên Aprove09.
Bài toán SAT Bài toán SAT là một bài toán trong khoa học máy tính nhằm kiểm tra tính thỏa mãn (SAT - Satisfiability) hay không thỏa mãn (UNSAT – Unsatisfiability) của một công thức Lôgic mệnh đề. Bài toán SAT là bài toán được chứng minh thuộc lớp NP - đầy đủ (NP - Complete), các bài toán khác muốn chứng minh thuộc lớp NP – đầy đủ có thể giản lược vấn đề về bài toán SAT. Một công thức Lôgic mệnh đề là SAT khi tồn tại một bộ giá trị true hoặc false trên các biến Lôgic mệnh đề làm cho công thức nhận giá trị true. Ngược lại công thức đó là UNSAT khi và chỉ khi mọi bộ giá trị true hoặc false của biến Lôgic mệnh đề luôn làm cho công thức có giá trị là false.1: Ví dụ về công thức SAT: Cho công thức Lôgic mệnh đề: F = (x1 ∨ x2 ∨ x3) ∧ (¬x1 ∨ x2 ∨ x3) trong đó x1, x2, x3 là các biến Lôgic mệnh đề.
Công thức F là SAT vì với bộ giá trị x1 = true, x2 = false và x3 = true thì F cho kết quả true.2: Ví dụ về công thức UNSAT: Cho công thức Lôgic mệnh đề: F = (¬x1∨ x1 ∨ ¬x2) ∧ (x1 ∨¬ x3) ∧ (x1 ∨ x2) trong đó x1, x2, x3 là các biến Lôgic mệnh đề. Công thức F là UNSAT vì với mọi bộ giá trị thì F luôn cho kết quả false. Lôgic mệnh đề Đầu vào của bài toán SAT là một công thức Lôgic mệnh đề thường được biểu diễn dưới dạng chuẩn tắc hội (CNF) hoặc chuẩn tắc tuyển (DNF). Dưới đây sẽ định nghĩa một công thức Lôgic mệnh đề và các dạng chuẩn tắc tương ứng.
Công thức Lôgic mệnh đề Một công thức Lôgic mệnh đề được xây dựng từ các biến và các phép toán lôgic bao gồm: AND (phép hội), OR (phép tuyển), NOT (phủ định), IMPLICATION (phép kéo theo). Dưới đây là các khái niệm cơ bản [1]: a. Mệnh đề Định nghĩa: Mỗi câu được phát biểu là đúng hay sai được gọi là một mệnh đề. Các phép toán trên mệnh đề bao gồm: Phép phủ định ( ) 2 Phép tuyển ( ) Phép hội ( ) Phép XOR ( ) Phép kéo theo ( ) Phép tương đương ( ) [18] b.
Phép phủ định Cho P là một mệnh đề, câu “không phải là P” là một mệnh đề khác được gọi là phủ định của mệnh đề P. Ví dụ: P ≡ 2<0 Khi đó P ≡ 2 0 nghĩa là nếu mệnh đề P biểu diễn 2<0 thì phủ định của P là 2 0.1: Bảng chân trị phép phủ định P P T F F T c. Phép hội Cho hai mệnh đề P, Q. Câu xác định “P và Q” là mệnh đề mới được gọi là hội của 2 mệnh đề P và Q.2: Bảng chân trị phép hội P Q P Q.
Phép tuyển Cho hai mệnh đề P, Q. Câu xác định “P hoặc Q” là một mệnh đề mới được gọi là tuyển của 2 mệnh đề P và Q. Kí hiệu: P Q Quy tắc của phép tuyển: Tuyển của 2 mệnh đề chỉ sai khi 2 mệnh đề là sai. Các trường hợp còn lại là đúng.3: Bảng chân trị phép tuyển P Q P Q T T T T F T F T T F F F e.
Phép kéo theo Cho hai mệnh đề P, Q. Câu “nếu P thì Q” là một mệnh đề mới được gọi là mệnh đề kéo theo của 2 mệnh đề P, Q. P được gọi là giả thiết và Q được gọi là kết luận. Quy tắc của phép kéo theo: Mệnh đề kéo theo chỉ sai khi giả thiết đúng và kết luận sai.4: Bảng chân trị phép kéo theo P Q P Q T T T T F F F T T F F T f.
Phép XOR Cho 2 mệnh đề P, Q. Câu xác định “chỉ duy nhất P hoặc Q” nghĩa là “ hoặc là P đúng hoặc là Q đúng nhưng không đồng thời cả 2 đúng” là một mệnh đề mới được gọi là P XOR Q, kí hiệu: P Q.5: Bảng chân trị phép XOR P Q P Q T T F T F T F T T F F F 4 g. Phép tương đương Cho hai mệnh đề P, Q. Câu “P nếu và chỉ nếu Q” là một mệnh đề mới được gọi là P tương đương với Q, kí hiệu: P Q.
Quy tắc phép tương đương: Mệnh đề tương đương là đúng khi P và Q có cùng chân trị P Q ≡ (P Q) (Q P) đọc là: P nếu và chỉ nếu Q, nếu P thì Q và ngược lại. Chuẩn tắc hội CNF CNF là một tuyển sơ cấp hay hội của hai hay nhiều tuyển sơ cấp. Dạng chuẩn tắc hội CNF có dạng như sau: TSC1 … TSCn Trong đó TSCi ≡ (P1 … Pm) với n, m 1 và Pi là các biến Lôgic mệnh đề. Bất kỳ một công thức Lôgic mệnh đề nào cũng có thể được chuyển đổi thành công thức dạng CNF nhờ các phép biến đổi tương đương như: Luật De Morgan, các luật phân phối, các phép giao hoán, ….
Dưới đây là một số phép biến đổi tương đương: * Luật De Morgan ¬(A B) ¬A ¬B ¬(A B) ¬A ¬B * Tính chất giao hoán của các phép Lôgic AB BA AB BA * Tính chất kết hợp của các phép Lôgic (A B) C A ( B C) (A B) C A ( B C) * Tính chất phân phối A (B C) (A B ) (A C) A (B C) (A B ) (A C) * Biểu diễn phép kéo theo qua các phép Lôgic khác A B ¬A B A B ¬(¬A B) A B ¬ B ¬A * Biểu diễn phép tương đương qua các phép Lôgic khác A B (A B) (B A) 5 A B A B 1. SAT Solver Công cụ chứng minh một cách tự động công thức logic mệnh đề là SAT hay UNSAT được gọi là SAT Solver. Ngày nay các SAT Solver được quan tâm và phát triển khá rộng trong giới làm khoa học bởi khả năng giải quyết các công thức Lôgic mệnh đề với hàng trăm nghìn biến và hàng triệu mệnh đề CNF. Hàng năm cuộc thi SAT Competition [27] được tổ chức đồng hành với những hội thảo khoa học có uy tín trên thế giới để tìm ra những SAT Solver mạnh nhất và công bố các thuật toán mới cho bài toán SAT, các kỹ thuật cài đặt thực nghiệm hiệu quả trong các SAT solver mạnh.