ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ ĐẶNG THỊ NHƢ HOA CÁC KỸ THUẬT SAT SOLVING LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội - 2016 TIEU LUAN MOI download : skknchat@gmail.com ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ ĐẶNG THỊ NHƢ HOA CÁC KỸ THUẬT SAT SOLVING Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60480103 LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. TÔ VĂN KHÁNH Hà Nội - 2016 TIEU LUAN MOI download : skknchat@gmail.com LỜI CẢM ƠN Luận văn Thạc sĩ này đƣợc thực hiện tại Trƣờng Đại học Công nghệ - Đại học Quốc gia Hà Nội dƣới sự hƣớng dẫn của TS. Tô Văn Khánh. Xin đƣợc gửi lời cảm ơn sâu sắc đến Thầy về định hƣớng khoa học, liên tục quan tâm, tạo điều kiện thuận lợi trong suốt quá trình nghiên cứu hoàn thành luận văn này.
Tôi xin đƣợc gửi lời cảm ơn đến các thầy, cô trong Bộ môn Công nghệ phần mềm cũng nhƣ Khoa Công nghệ Thông tin đã mang lại cho tôi những kiến thức vô cùng quý giá và bổ ích trong quá trình theo học tại trƣờng. Tôi cũng xin chân thành cảm ơn đến gia đình, bạn bè đã quan tâm và động viên giúp tôi có thêm nghị lực, cố gắng để hoàn thành luận văn này. Do thời gian và kiến thức có hạn nên luận văn chắc chắn không tránh khỏi những thiếu sót nhất định. Tôi rất mong nhận đƣợc những sự góp ý quý báu của thầy cô, đồng nghiệp và bạn bè.
Hà Nội, tháng 12 năm 2016 Học viên Đặng Thị Nhƣ Hoa TIEU LUAN MOI download : skknchat@gmail.com LỜI CAM ĐOAN Tôi xin cam đoan luận văn “Các kỹ thuật SAT Solving” là công trình nghiên cứu của cá nhân tôi dƣới sự hƣớng dẫn của TS. Tô Văn Khánh, trung thực và không sao chép của tác giả khác. Trong toàn bộ nội dung nghiên cứu của luận văn, các vấn đề đƣợc trình bày đều là những tìm hiểu và nghiên cứu của chính cá nhân tôi hoặc là đƣợc trích dẫn từ các nguồn tài liệu có ghi tham khảo rõ ràng, hợp pháp. Tôi xin chịu mọi trách nhiệm cho lời cam đoan này.
Hà Nội, tháng 12 năm 2016 Học viên Đặng Thị Nhƣ Hoa TIEU LUAN MOI download : skknchat@gmail.com TÓM TẮT SAT Solving là bài toán chứng minh sự thỏa mãn (SAT / UNSAT) của một công thức Lôgic mệnh đề (Propositional Lôgic) và các công cụ tự động SAT Solver đóng vai trò là các bộ giải công thức đó. Ngày nay các SAT Solver cũng đóng vai trò là các công cụ nền cho các SMT (SAT Module Theories) Solver, những công cụ tự động chứng minh sự thỏa mãn hay không thỏa mãn (SAT/UNSAT) của các công thức lôgic trên lý thuyết vị từ cấp I (FOL I). Các nghiên cứu về SMT Solver hiện nay đang là các chủ đề có tính thời sự, bởi SMT Solver đƣợc ứng dụng trong các bài toán về kiểm chứng, kiểm thử chƣơng trình. Bài toán SAT là bài toán có độ phức NP và các kỹ thuật SAT Solving đã đƣợc nghiên cứu, phát triển đã lâu.
Tuy nhiên, sự phát triển mạnh mẽ của các SAT solver trong những năm gần đây thông qua các cuộc thi SAT Competition tổ chức hàng năm cho thấy nhiều kỹ thuật cải tiến trong cài đặt các SAT solver đã đƣợc tiến hành thực nghiêm. Ngày nay các SAT solver có khả năng giải quyết các công thức lên đến hàng triệu biến với hàng trăm ngàn mệnh đề. Luận văn đi sâu tìm hiểu các kỹ thuật cơ bản, các thuật toán cơ bản đƣợc cài đặt trong các SAT solver, đồng thời đƣa ra các ví dụ minh họa cụ thể nhằm làm rõ cách thức hoạt động. Các kỹ thuật này đƣợc cài đặt trong một SAT solver phổ biến hiện nay đó là MiniSAT, một SAT solver mã nguồn mở mà rất nhiều SAT solver mạnh trên thế giới đƣợc mở rộng cải tiến từ SAT Solver này.
Bên cạnh đó, luận văn cũng tìm hiểu 2 kĩ thuật tiên tiến đang đƣợc cài đặt trong các SAT Solver mạnh hiện nay là GlueMinisat, Glucose. Luận văn tiến hành chạy thực nghiệm so sánh 3 SAT solver này trên các bộ dữ liệu thực nghiệm chuẩn (từ cuộc thi SAT competition) để thấy rõ tính hiệu quả, tính nhanh nhạy của các kỹ thuật tiên tiến đang đƣợc sử dụng. Nội dung luận văn này đƣợc chia thành 4 chƣơng nhƣ sau: - 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. TIEU LUAN MOI download : skknchat@gmail.com 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 .27 TIEU LUAN MOI download : skknchat@gmail. 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 TIEU LUAN MOI download : skknchat@gmail.com 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 TIEU LUAN MOI download : skknchat@gmail.com 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 TIEU LUAN MOI download : skknchat@gmail.com 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 .54 TIEU LUAN MOI download : skknchat@gmail.com 1 CHƢƠNG 1. 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 ( ) TIEU LUAN MOI download : skknchat@gmail.