CÁC KỸ THUẬT SAT SOLVING

68 266 0
CÁC KỸ THUẬT SAT SOLVING

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Header Page of 113 ĐẠ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 Footer Page of 113 Header Page of 113 ĐẠ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 Footer Page of 113 Header Page of 113 LỜI CẢM ƠN Luận văn Thạc sĩ thực Trường Đại học Công nghệ - Đại học Quốc gia Hà Nội hướng dẫn TS Tô Văn Khánh Xin gửi lời cảm ơn sâu sắc đến Thầy định hướng khoa học, liên tục quan tâm, tạo điều kiện thuận lợi suốt trình nghiên cứu hoàn thành luận văn Tôi xin gửi lời cảm ơn đến thầy, cô Bộ môn Công nghệ phần mềm Khoa Công nghệ Thông tin mang lại cho kiến thức vô quý giá bổ ích trình theo học trường Tôi xin chân thành cảm ơn đến gia đình, bạn bè quan tâm động viên giúp có thêm nghị lực, cố gắng để hoàn thành luận văn Do thời gian kiến thức có hạn nên luận văn chắn không tránh khỏi thiếu sót định Tôi mong nhận góp ý quý báu thầy cô, đồng nghiệp bạn bè Hà Nội, tháng 12 năm 2016 Học viên Đặng Thị Như Hoa Footer Page of 113 Header Page of 113 LỜI CAM ĐOAN Tôi xin cam đoan luận văn “Các kỹ thuật SAT Solving” công trình nghiên cứu cá nhân hướng dẫn TS Tô Văn Khánh, trung thực không chép tác giả khác Trong toàn nội dung nghiên cứu luận văn, vấn đề trình bày tìm hiểu nghiên cứu cá nhân trích dẫn từ nguồn tài liệu có ghi tham khảo rõ ràng, hợp pháp Tôi xin chịu trách nhiệm cho lời cam đoan Hà Nội, tháng 12 năm 2016 Học viên Đặng Thị Như Hoa Footer Page of 113 Header Page of 113 TÓM TẮT SAT Solving toán chứng minh thỏa mãn (SAT / UNSAT) công thức Lôgic mệnh đề (Propositional Lôgic) công cụ tự động SAT Solver đóng vai trò giải công thức Ngày SAT Solver đóng vai trò công cụ cho SMT (SAT Module Theories) Solver, công cụ tự động chứng minh thỏa mãn hay không thỏa mãn (SAT/UNSAT) công thức lôgic lý thuyết vị từ cấp I (FOL I) Các nghiên cứu SMT Solver chủ đề có tính thời sự, SMT Solver ứng dụng toán kiểm chứng, kiểm thử chương trình Bài toán SAT toán có độ phức NP kỹ thuật SAT Solving nghiên cứu, phát triển lâu Tuy nhiên, phát triển mạnh mẽ SAT solver năm gần thông qua thi SAT Competition tổ chức hàng năm cho thấy nhiều kỹ thuật cải tiến cài đặt SAT solver tiến hành thực nghiêm Ngày SAT solver có khả giải 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 sâu tìm hiểu kỹ thuật bản, thuật toán cài đặt SAT solver, đồng thời đưa ví dụ minh họa cụ thể nhằm làm rõ cách thức hoạt động Các kỹ thuật cài đặt SAT solver phổ biến MiniSAT, SAT solver mã nguồn mở mà nhiều SAT solver mạnh giới mở rộng cải tiến từ SAT Solver Bên cạnh đó, luận văn tìm hiểu kĩ thuật tiên tiến cài đặt SAT Solver mạnh GlueMinisat, Glucose Luận văn tiến hành chạy thực nghiệm so sánh SAT solver liệu thực nghiệm chuẩn (từ thi SAT competition) để thấy rõ tính hiệu quả, tính nhanh nhạy kỹ thuật tiên tiến sử dụng Nội dung luận văn chia thành chương sau: - Chương giới thiệu vấn đề Lôgic mệnh đề, toán SAT, SAT Solver ứng dụng phương pháp SAT Encoding - Chương trình kỹ thuật SAT solving bao gồm thủ tục DPLL, kỹ thuật áp dụng DPLL như: CDCL, Back Jumping, Watched literals, Clause Elimination - Chương trình bày kỹ thuật SAT Solving tiên tiến nay, kỹ thuật cài đặt SAT solver mạnh giới GlueMinisat, Glucose - Chương tiến hành thực nghiệm so sánh đánh giá SAT Solver liệu chuẩn thi SAT competition hàng năm Footer Page of 113 Header Page of 113 MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN TÓM TẮT 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Ẽ CHƯƠNG GIỚI THIỆU .1 1.1 Bài toán SAT 1.2 Lôgic mệnh đề 1.2.1 Công thức Lôgic mệnh đề 1.2.2 Chuẩn tắc hội CNF 1.3 SAT Solver .5 1.4 Phương pháp SAT Encoding 1.4.1 Trò chơi Hitori .5 1.4.2 Trò chơi Sodoku .7 1.4.3 Trò chơi Slitherlink 1.5 Một số ứng dụng khác SAT .12 CHƯƠNG CÁC KỸ THUẬT SAT SOLVING CƠ BẢN 13 2.1 Thủ tục DPLL truyền thống 13 2.1.1 Một số khái niệm 13 2.1.2 Các luật thủ tục DPLL .14 2.2 Thủ tục DPLL đại 17 2.2.1 Backjumping 17 2.2.2 Learn Forget 18 2.2.3 Mệnh đề Backjump 19 2.3 Thuật toán CDCL 26 2.3.1 Nội dung CDCL 26 2.3.2 Giải thuật CDCL 27 2.3.3 Suy diễn mệnh đề mức quay lui 27 Footer Page of 113 Header Page of 113 2.3.4 Biểu đồ kéo theo 28 2.3.5 Học từ mệnh đề xung đột .29 2.4 Kỹ thuật Two -Watched literals 34 2.4.1 Watched literal 34 2.4.2 Two- Watched literal 35 2.5 Giải pháp loại bỏ biến loại bỏ mệnh đề .36 2.5.1 Loại bỏ biến 37 2.5.2 Loại bỏ mệnh đề 39 CHƯƠNG CÁC KỸ THUẬT SAT SOLVING TIÊN TIẾN HIỆN NAY .42 3.1 GlueMiniSat 42 3.1.1 Giới thiệu 42 3.1.2 Tiêu chí đánh giá Learn Clause 42 3.1.3 Chiến lược tự khởi động lại 44 3.2 Glucose 44 3.2.1 Quản lý mệnh đề học 44 3.2.2 Khởi động lại 45 CHƯƠNG THỰC NGHIỆM 46 4.1 Giới thiệu MiniSat .46 4.2 Giao diện lập trình ứng dụng 46 4.3 Tổng quan Minisat .47 4.4 Thực nghiệm 50 4.4.1 Biên dịch Minisat 50 4.4.2 Biên dịch GlueMinisat 51 4.4.3 Biên dịch Glucose 51 4.4.4 Bộ liệu thực nghiệm 52 4.4.5 Thực nghiệm 52 KẾT LUẬN 56 TÀI LIỆU THAM KHẢO .56 Footer Page of 113 Header Page of 113 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 SAT Satisfiability UNSAT Unsatisfiability SAT Solver Một công cụ chứng minh tự động công thức Lôgic mệnh đề CNF Conjunctive Normal Form BCP Boolean Constraint Propagation DPLL Davis–Putnam–Logemann–Loveland CDCL Conflict Driven Clause Learning UIP Unique Implication Point LBD Literal Blocks Distance Footer Page of 113 Header Page of 113 DANH MỤC CÁC BẢNG BIỂU Bảng 4.1: Kết thực nghiệm Minisat, Glueminisat, Glucose Slitherlink 52 Bảng 4.2: Kết thực nghiệm Minisat, Glueminisat, Glucose Aprove 09 53 Footer Page of 113 Header Page 10 of 113 DANH MỤC CÁC HÌNH VẼ Hình 1.1: Trò chơi Logic Hitori .6 Hình 1.2: Trò chơi Logic Sodoku lời giải Hình 1.3: Trò chơi Logic Slitherlink lời giải .9 Hình 1.4: Mã hóa Luật trò chơi Slitherlink Hình 1.5: Mã hóa Luật Slitherlink .10 Hình 2.1: Đồ thị xung đột để tìm backjump clause 20 Hình 2.2: Một phần đồ thị suy diễn định mức 6, thỏa mãn mệnh đề ví dụ, sau định x1=1(trái) Đồ thị tương tự sau học xung đột từ mệnh đề C9 = (x5 V ⌐x1) quay trở lại mức định 3(phải) 23 Hình 2.3: Ví dụ đồ thị xung đột với UIPs 24 Hình 2.4: Đồ thị suy diễn ví dụ 2.7 UIP x4 tương ứng với khẳng định literal ⌐x4 26 Hình 2.5: Quá trình minh họa sử dụng Binary Resolution để đưa mệnh đề Backjump Clause 26 Hình 2.6: Ví dụ biểu đồ kéo theo 28 Hình 2.7: Xây dựng biểu đồ kéo theo 29 Hình 2.8: Xác định mệnh đề xung đột 30 Hình 2.9: Tìm kiếm biến suy diễn lần 30 Hình 2.10: Tìm kiếm biến suy diễn lần .31 Hình 2.11: Tìm kiếm suy diễn lần .32 Hình 2.12: Tìm kiếm biến suy diễn lần 32 Hình 2.13: Kết luận mệnh đề học trả mức định backtrack .33 Hình 2.14: BCP sử dụng watched literals 36 Hình 1: Giao diện ứng dụng Minisat 46 Hình 4.2: Kết thực nghiệm Slithelink 54 Hình 4.3: Kết thực nghiệm thời gian chạy Aprove09 .54 Footer Page 10 of 113 Header Page 54 of 113 44 (2) (1) (2) có ưu (1) Glue claues Định nghĩa Strict LBD: Cho C mệnh đề có LBD n Nếu C có unit literal block strict LBD C n Nếu không strict LBD C không xác định Số glue clause tìm phương pháp bình thường nên GlueMiniSat lưu trữ strict LBDs ≦ 3.1.3 Chiến lược tự khởi động lại Khi sử dụng LBD điều quan trọng phải tìm Learn Clause tốt GlueMiniSat sử dụng chiến lược tự khởi động lại hai điệu kiện sau thỏa mãn [9]: Trung bình mức định 50 xung đột cuối * 1.0 lớn mức trung bình toàn Trung bình LBDs 50 mệnh đề học cuối * 0,8 lớn mức trung bình toàn LBD Mục đích việc khởi động lại giảm mức định nhận mệnh đề có LBD nhỏ 3.2 Glucose GLUCOSE giữ glue clause mà không xóa chúng suốt trình tìm kiếm Các LBD mệnh đề tính toán lại chúng sử dụng cập nhật LBD trở lên nhỏ Quá trình cập nhật quan trọng để tạo nhiều Glue Clauses 3.2.1 Quản lý mệnh đề học Trước glucose [6], quản lý mệnh đề học không coi phần quan trọng giải CDCL Các đo lường trước không xác Kích thước sở liệu mệnh đề theo cấp số nhân Phụ thuộc vào kích thước công thức đầu vào: Quá trình làm không thực cho công thức lớn Kết glucose phụ thuộc nhiều vào chất lượng LBD Đó số tốt nhiều trường hợp nhiên không đủ để phân biệt Vì cần giữ cho LBD nhiều Thực trì hoãn việc làm số 1000 LBD tính toán mệnh đề học Thực tính toán lại mệnh đề sử dụng BCP thay đổi nó, trở nên nhỏ Footer Page 54 of 113 Header Page 55 of 113 45 3.2.2 Khởi động lại Trong Glucose, khởi động lại dựa LBD mệnh đề học [2] Nó so sánh LBD ‘short term average – trung bình ngắn hạn’ mệnh đề học với ‘long term average- trung bình dài hạn’ Nếu trung bình ngắn hạn lớn đáng kể so với mức trung bình dài hạn (25%), khởi động lại kích hoạt, trừ khởi động lại xảy gần (ít 50 mâu thuẫn trước đó) Nói chung, mệnh đề với LBD nhỏ quan trọng việc giải công thức SAT Do đó, tìm kiếm Glucose tiếp tục (tức là, khởi động lại không diễn ra) miễn tập mệnh đề gần học "tốt" theo biện pháp Bất LBD mệnh đề học gần trở nên lớn tìm kiếm coi có lợi và, đó, khởi động lại thực Để thực khởi động lại Glucose, hai giá trị cần thiết: Các LBD tổng thể trung bình (tương ứng với mức trung bình dài hạn) LBD trung bình tập mệnh đề học gần Theo dõi LBD cách dễ dàng, tính toán LBD thứ hai yêu cầu hàng đợi có độ dài 50, với 50 số mệnh đề gần để xem xét Để ngăn chặn khởi động lại, hàng đợi thêm chiều dài 5000 cần thiết Nhắm mục tiêu UNSAT Glucose nhằm mục đích sản xuất Glue clause Nếu mệnh đề học xảy không tốt (LBD lớn), khởi động lại thực Chúng ta sử dụng: Hàng đợi bị chặn (Của kích thước X) gọi queueLBD tổng LBD tất mệnh đề sumLBD //in case of conflict computer learnt clause c; sumLBD+=c.lbd(); queueLBD.push(c.lbd()); if (queueLBD.isFull() && queueLBD.avg () * K > sumLBD/nbConflicts) { queueLBD.clear(); Restart(); } Footer Page 55 of 113 Header Page 56 of 113 46 CHƯƠNG THỰC NGHIỆM Ở chương luận văn trình bày cách tổng thể SAT Solver Minisat Bên cạnh tiến hành chạy thực nghiệm SAT Solver: Minisat, Glueminisat, Glucose số liệu chuẩn Cuối đánh giá so sánh hiệu SAT Solver 4.1 Giới thiệu MiniSat Minisat SAT Solver nhanh phát triển Niklas Eén Niklas Sörensson [19] MiniSat dạng Sat solver tối thiểu, mã nguồn mở, phát triển để giúp nhà nghiên cứu nhà phát triển làm quen với SAT Được phát hành cấp phép MIT, sử dụng nhiều dự án Cùng với SATELITE, MiniSAT trao giải hạng mục công nghiệp hạng mục thi SAT 2005 Ngoài ra, MiniSat giành giải SAT-Race năm 2006 Một vài đặc trưng MiniSAT:  Dễ dàng sửa đổi: MiniSAT nhỏ, giải cẩn thận thiết kế kỹ càng, khiến trở thành điểm xuất phát lý tưởng cho việc tìm hiểu công nghệ dựa SAT vấn đề chuyên ngành cụ thể  Hiệu cao: Dành giải thưởng tất hạng mục công nghiệp thi SAT 2005, MiniSAT điểm xuất phát lý tưởng cho việc nghiên cứu SAT sau này, cho ứng dụng sử dụng SAT  Được thiết kế để tích hợp: MiniSAT hỗ trợ việc sửa đổi tối ưu Thuật toán có chế để thêm điều khoản ràng buộc Với ưu điểm dễ dàng sửa đổi, lựa chọn tốt cho việc tích hợp backend cho công cụ khác, chẳng hạn kiểm tra mô hình hay máy giải toán ràng buộc chung 4.2 Giao diện lập trình ứng dụng Đây giao diện MiniSAT Các kiểu biến, literal vec-tơ Class Solver - Public interface var newVar boll addClause bool add bool simplifyDB bool solve Vec model kiểu () (Vec literals) ( ) () (Vec assumptions) - If found, this vector has the model Hình 1: Giao diện ứng dụng Minisat [26] Footer Page 56 of 113 Header Page 57 of 113 47 Phương thức “ ” hiểu phương thức giữ chỗ cho việc cài đặt ràng buộc thêm vào phiên mở rộng MiniSAT Với toán SAT, giao diện sử dụng sau: Các biến giới thiệu cách gọi phương thức Từ biến này, mệnh đề xây dựng thêm vào với phương thức Các xung đột tầm thường, ví dụ mệnh đề đơn vị thêm vào, phát phương thức , trả lại FALSE Sau đó, trạng thái máy giải không xác định không sử dụng Nếu xung đột tầm thường trình thêm mệnh đề, phương thức gọi với danh sách trống giả định Phương thức trả lại FALSE toán UNSAT trả lại TRUE toán SAT, trường hợp model đọc từ biến vectơ public “ ” Phương thức s sử dụng trước gọi phương thức để làm đơn giản hóa ràng buộc toán Trong cài đặt này, phương thức thực unit propagation, sau loại bỏ ràng buộc thỏa mãn Với phương thức , việc đơn giản hóa phát xung đột, trả FALSE trạng thái máy giải không xác định không sử dụng Nếu máy giải trả SAT, ràng buộc thêm lặp lại nhiều lần vào sở liệu tồn phương thức chạy lần Tuy nhiên, dãy SAT khác giải sử dụng giả định đơn vị Khi duyệt qua danh sách không rỗng giả định để gọi , máy giải tạm thời giả định literal true Sau tìm model hay mâu thuẫn, giả định bị loại bỏ, máy giải trả trạng thái sử dụng được, kể phương thức trả FALSE, mà nên giải thích UNSAT với giả định Để thực điều này, gọi phương thức trước phương thức điều bắt buộc Đó chế phát xung đột dựa giả định – từ trở đề cập tới xung đột top-level Xung đột đặt máy giải vào trạng thái không xác định Việc duyệt qua giả định đơn vị có hiệu to lớn ta tưởng 4.3 Tổng quan Minisat Phần xem xét SAT solver thông thường dựa thuật toán DPLL [26], bactrack thông qua phân tích xung đột và ghi nhớ mệnh đề ( hay học mệnh đề), suy diễn ràng buộc lý luận – boolean constraint propagation (BCP) sử dụng watched literals Các SAT solver kiểu đề cập tới SAT solver hướng xung đột Footer Page 57 of 113 Header Page 58 of 113 48 Một SAT solver hướng xung đột đưa mệnh đề (với literal hơn) phép gán Cơ chế suy luận sử dụng solver tiêu chuẩn unit propagation Ngay mệnh đề trở thành unit sau phép gán (tất literal trừ literal gán false), literal lại gán true, có khả tạo nên nhiều mệnh đề đơn vị khác Quá tình tiếp tục suy diễn thêm thông tin Thủ tục tìm kiếm solver đại thủ tục phức tạp Trong trình thử, biến chọn gán giá trị (phép giả định tạo ra), trình suy diễn phát xung đột (tất literal mệnh đề false) Khi đó, mệnh đề xung đột xây dưng thêm vào toán SAT Các giải định sau hủy bỏ cách backtrack mệnh đề xung đột trở thành đơn vị mà từ mệnh đề đơn vị suy diễn trình tìm kiếm tiếp tục Suy diễn (Propagation): Với literal, danh sách ràng buộc giữ Đây ràng buộc suy diễn thông tin đơn vị (các phép gán biến) literal trở thành true Với mệnh đề, không thông tin đơn vị suy diễn tất literal trừ literal vừa trở thành false Hai literal chưa gán p q mệnh đề chọn, tham chiếu tới mệnh đề thêm vào danh sách ⌐p ⌐q Các literal nói watched danh sách ràng buộc đề cập tới watcher list Ngay literal watched trở thành true, ràng buộc gọi để xem có thông tin suy diễn hay không, để chọn literal chưa bị gán để watched Học (Learning): Thủ tục học MiniSAT dựa ý tưởng MarquesSilva Sakallah Quá trình bắt đầu ràng buộc trở nên xung đột phép gán Ràng buộc xung đột sau truy vấn với tập phép biến khiến mâu thuẫn Với mệnh đề, tất literal mệnh đề Mỗi phép gán biến trả phải giả định thủ tục tìm kiếm, hay kết phép suy diễn ràng buộc Các ràng buộc suy diễn truy vấn tập phép gán biến khiến phép suy diễn xảy ra, tiếp tục trình phân tích ngược Thủ tục lặp lại vài điều kiện kết thúc lấp đầy, đưa đến tập phép gán biến mà đưa đến xung đột Một mệnh đề ngăn chặn phép gán cụ thể thêm vào sở liệu mệnh đề Mênh đề học (learnt clause) phải luôn , trình xây dựng, ngầm ý ràng buộc ban đầu toán Các mệnh đề học phục vụ mục đích: chúng hướng thủ tục backtrack tăng tốc xung đột tương lại cách lưu trữ nguyên nhân xảy xung đột Mỗi mệnh đề ngăn chặn lượng định suy luận, mệnh Footer Page 58 of 113 Header Page 59 of 113 49 đề ghi lại tạo lẫn tham gia vào trình suy diễn đơn vị, hiệu ước chừng việc học lớn Tuy nhiên, tập mệnh đề học ngày tăng, trình suy diễn bị chậm lại Do đó, số lượng mệnh đề học giảm bớt định kỳ, giữ lại mệnh đề hữu dụng Tìm kiếm: Thủ tục tìm kiếm SAT solver hướng xung đột ẩn Mặc dù định nghĩa đệ quy thủ tục súc tích hơn, thủ tục thường miêu tả (và cài đặt) theo cách lặp Thủ tục bắt đầu cách chọn biến chưa gán (được gọi biến định) gán giá trị cho nó, cho TRUE Kết việc gán suy diễn, dẫn tới việc gán nhiều biến khác Tất biến gán kết việc gán coi mức định (decision level), đếm từ cho phép gán tăng dần Các phép gán tạo trước phép gán (mức định 0) gọi top-level Tất phép gán lưu ngăn xếp theo thứ tự chúng tạo ra; từ trở gọi ngăn xếp trail Trail chia thành mức định sử dụng để đảo ngược thông tin trình backtrack Pha định tiếp tục tất biến gán, ta có model, hay xung đột xảy Trong xung đột, thủ tục học gọi mệnh đề xung đột tạo Trail sử dụng để xóa bỏ mức định, mức lần, có xác số literal mệnh đề học trở nên chưa gán Trong trình xử lý, mệnh đề xung đột trực tiếp từ xung đột tới mệnh đề với nhiều literal chưa gán Một phần quan trọng thủ tục tự khám phá phương thức Giống CHAFF, MiniSAT sử dụng độ ưu tiên động biến để đưa thứ tự cho biến liên quan đến xung đột gần Dưới thủ tục search [26]: Loop Propagate() - propagate unit clause If not conflict then If all variables assigned then Return SATISFIABLE Else Decide() -pick a new variable and assign it Else Analyze() - analyze conflict and add a conflict clause If top-leval conflict found then Return UNSATISFIABLE Else Backtrack() -undo assignments until conflict clause is unit Footer Page 59 of 113 Header Page 60 of 113 50 Độ ưu tiên biến: Một kỹ thuật quan trọng giới thiệu CHAFF xếp biến dựa độ ưu tiên động biến Thuật toán ban ban đầu dựa xếp literal, p ⌐p coi MiniSAT Mỗi biến có độ ưu tiên gắn với Mỗi biến có mặt mệnh đề xung đột ghi lại, độ ưu tiên tăng lên Sau ghi lại xung đột, độ ưu tiên tất biến hệ thống nhân với số nhỏ 1, làm giảm độ ưu tiên biến qua thời gian Lượng gia tăng gần lớn lượng gia tăng trươc Tổng định độ ưu tiên biến MiniSAT sử dụng ý tưởng tương tự cho mệnh đề Khi mệnh đề học được sư dụng trình phân tích xung đột, độ ưu tiên bump Các mệnh đề không hoạt động loại bỏ định kỳ Loại bỏ ràng buộc: Cơ sở liệu ràng buộc chia thành phần: ràng buộc toán mệnh đề học Tập mệnh đề học loại bỏ định kỳ để gia tăng hiệu việc suy diễn mệnh đề Các mệnh đề học được sử dụng bỏ bớt nhánh phát sinh tương lai tìm kiếm, loại bỏ mệnh đề dẫn tới việc tạo không gian tìm kiếm lớn Ràng buộc toán loại bỏ chúng thỏa mãn top-level Phương thức chịu trách nhiệm việc Top-level solver: Một chiến lược cụ thể áp dụng SAT solver hướng xung đột đại sử dụng việc tái khởi động (restart) để thoát khỏi phần vô ích tìm kiếm Trong MiniSAT số lượng mệnh đề học thời điểm biến đổi Hơn nữa, phương thức giao diện lập trình ứng dụng hỗ trợ phép gán tăng dần, điều mà không giải đoạn mã giả 4.4 Thực nghiệm Hai kỹ thuật Glueminisat Glucose cài đặt thành hai SAT Solver Glueminisat [7] Glucose [8] 4.4.1 Biên dịch Minisat Để thực biên dịch Minisat Ubuntu, ta thực bước đây: - Tạo thư mục chứa Minisat: mkdir Minisat - Download minisat-2.2.0.tar.gz: wget http://minisat.se/downloads/minisat-2.2.0.tar.gz - Gõ câu lệnh : tar xvf minisat-2.2.0.tar.gz - Gõ cd minisat - Gõ export MROOT=$(pwd) Footer Page 60 of 113 Header Page 61 of 113 51 - Gõ cd core - Gõ sudo apt-get install libghc-zlib-dev - Gõ make (Tạo file chạy minisat) - Tạo thư mục examples để lưu lại benchmark Gõ mkdir examples - Copy file minisat thư mục Minisat/core chuyển vào thư mục examples: Gõ cp /core/minisat /examples/ - Gõ câu lệnh sau để thực chạy minisat: cd ~/minisat/examples/ /minisat 4.4.2 Biên dịch GlueMinisat Để thực biên dịch GlueMinisat Ubuntu, ta thực bước đây: - Download glueminisat-2.2.8: wget http://glueminisat.nabelab.org/home/download/glueminisat-2.2.8.tar.gz - Giải nén: unzip glueminisat-2.2.8.zip - Chạy file build.sh: Gõ /build.sh (Tạo file chạy Glueminisat) - Tạo thư mục examples để lưu lại benchmark Gõ mkdir examples - Copy file glueminisat-simp thư mục Glueminisat/binary chuyển vào thư mục examples: cp binary/glueminisat-simp examples/ - Gõ câu lệnh sau để thực chạy Glueminisat: cd ~/glueminisat-2.2.8/examples/ /glueminisat-simp 4.4.3 Biên dịch Glucose Để thực biên dịch Glucose Ubuntu, ta thực bước đây: - Tạo thư mục Glucose:mkdir Glucose - Download Glucose 2.0: wget http://www.lri.fr/~simon/downloads/glucose-2-compet.tgz - Gõ câu lệnh: tar -xf glucose-2-compet.tgz - Mở thư mục simp: Gõ cd simp/ - Gõ make rs (Tạo file chạy Glucose) - Tạo thư mục Examples để lưu lại benchmark: mkdir Examples Footer Page 61 of 113 Header Page 62 of 113 52 - Copy file glucose_static từ thư mục simp sang thư mục Examples: cp simp/glucose_static Examples/ - Gõ câu lệnh sau để thực chạy Glucose: cd ~/Gluecose/examples/ /glucose_static 4.4.4 Bộ liệu thực nghiệm (Benchmarks) Bộ liệu thực nghiệm SAT Solver toán định dạng DIMACS CNF (.CNF), đầu vào SAT Solver xây dựng cộng đồng SAT Các liệu thực nghiệm SAT tham khảo [27] 4.4.5 Thực nghiệm Để đánh giá hiệu kỹ thuật SAT Solving tiên tiến, tiến hành thực nghiệm Minisat, Glueminisat, Glucose “Bộ liệu Slitherlink” tham khảo [25] “Bộ liệu thực nghiệm chuẩn Aprove09” tham khảo [24] a Bộ liệu Slithelink Bảng 4.1: Kết thực nghiệm Minisat, Glueminisat, Glucose Slitherlink STT Kích thước 16x16 20x20 25x25 30x30 Số biến 544 840 1300 1860 Footer Page 62 of 113 Số clause 3027 4565 7062 10306 SAT Solver Restart Conflict Decision Propagations Minisat 195 1040 9841 Glueminisat 194 790 7257 Glucose 70 456 3954 Minisat 253 2206 17981 Glueminisat 146 996 8092 Glucose 384 1726 15241 Minisat 534 6108 43584 Glueminisat 336 3225 26394 Glucose 695 5619 47843 Minisat 481 7897 58679 Glueminisat 362 4911 34474 Glucose 820 10988 83648 Header Page 63 of 113 53 b Bộ liệu thực nghiệm chuẩn Aprove09 Bảng 4.2: Kết thực nghiệm Minisat, Glueminisat, Glucose Aprove 09 STT Tên Aprove 09-01 Aprove 09-03 Aprove 09-05 Aprove 09-06 Aprove 09-07 Aprove 09-08 Aprove 09-10 Aprove 09-11 Aprove Số biến Số clause SAT Solver Restart Conflict Decision Thời gian chạy (giây) 81870 151268 Minisat 1346 160739 0.372023 Glueminisat 217 11121 0.304 Glucose 178 11961 0.248015 Minisat 966 166278 0.364022 Glueminisat 264 12644 0.200 Glucose 195 11594 0.248015 Minisat 86 23738 47852 3.50822 Glueminisat 29 6376 13899 0.384 Glucose 44 9107 20607 0.712044 Minisat 2047 1040139 1636929 1295.16 Glueminisat 5369 1781724 2588671 1043.385 Glucose 2583 1146245 1743095 755.647 Minisat 129 45028 56908 9.42059 Glueminisat 44 12390 18217 0.748 Glucose 13 11231 16361 1.16407 Minisat 207 67507 83018 13.0408 Glueminisat 46 30321 41574 12.471 Glucose 142 75165 97628 9.19657 Minisat 1277 4108 0.784049 Glueminisat 1568 5143 1.140 Glucose 442 2242 0.508031 Minisat 387 4782 0.080005 Glueminisat 247 3380 0.128 Glucose 762 5415 0.136008 Minisat 1357 23704 0.276017 59231 14685 77262 8567 8564 67186 20192 27495 Footer Page 63 of 113 119736 49032 262886 28677 28668 238869 77131 100426 Header Page 64 of 113 54 09-12 10 11 Aprove 09-13 Aprove 09-15 7606 94663 6082 300532 Glueminisat 1203 14286 0.256 Glucose 1019 10826 0.216013 Minisat 255 2546 0.012 Glueminisat 162 800 0.048 Glucose 137 1234 0.036002 Minisat 62 15933 54021 7.90049 Glueminisat 35 5639 22239 1.836 Glucose 53 8483 29084 2.56816 Hình 4.2: Kết thực nghiệm Slithelink Hình 4.3: Kết thực nghiệm thời gian chạy Aprove09 Footer Page 64 of 113 Header Page 65 of 113 55 Nhận xét: a So sánh Mimisat với Glueminisat Glucose Thời gian giải toán Glueminisat Glucose nhanh nhiều so với Minisat(Bảng 4.2, Hình 4.3) Nguyên nhân liệu thực nghiệm số lượng hàm Restart, Conflict, Decision, Propagations Minisat nhiều so với SAT Solver (Bảng 4.1, Hình 4.2) Sự chênh lệch SAT Solver sử dụng chiến lược khởi động lại khác b So sánh Glueminisat với Glucose Nhìn chung Glucose có thời gian thực toán nhanh so với Glueminisat Tuy sử dụng chiến lược khởi động lại động (LBD) điều kiện khởi động lại SAT Solver khác Đây nguyên nhân dẫn đến số lượng hàm Restart Glucose Glueminisat Footer Page 65 of 113 Header Page 66 of 113 56 KẾT LUẬN Luận văn giới thiệu, trình bày phân tích cụ thể kỹ thuật SAT Solving phổ biến thông qua ví dụ minh họa Với nỗ lực thân với hướng dẫn TS Tô Văn Khánh, luận văn đạt kết định :  Hiểu Bài toán SAT, SAT Solver, Các ứng dụng SAT Solver  Nắm kỹ thuật SAT Solving: thủ tục DPLL, thuật toán CDCL, Kỹ thuật Two- watched literal giải pháp loại bỏ biến, loại bỏ mệnh đề  Nắm kỹ thuật tiên tiến SAT Solving: Glueminisat, Glucose  Đọc hiểu code chương trình MiniSAT  Chạy so sánh SAT Solver : Minisat, Glueminisat, Glucose Tuy nhiên, luận văn có hạn chế sau:  Chưa thực việc code chỉnh sửa chương trình MiniSAT để thực nắm rõ cách tùy biến SAT solver  Chưa liệt kê kỹ thuật SAT Solver : CryptoMinisat (2015), Riss, Treengeling (2016) Mặc dù luận văn hệ thống lại kỹ thuật SAT Solving trình bày kỹ thuật tiên tiến SAT Solving SAT Solver coi mạnh Trong tương lai, em hướng tới việc tùy biến SAT Solver Minisat theo yêu cầu khác để nắm rõ cách tùy biến SAT solver Từ đó, tạo Glueminisat Glucose mà không cần sử dụng SAT Solver cài đặt sẵn Footer Page 66 of 113 Header Page 67 of 113 57 TÀI LIỆU THAM KHẢO [1] Armin, Biere (2012), Understanding Modern SAT Solvers, Institute for Formal Models and Verification Johannes Kepler University, Linz, Austria [2] Armin Biere and Andreas Frohlich(2015), Evaluating CDCL Restart Schemes [3] Daniel Kroening, Ofer Strichman (2008), Decision Procedures for Propositional Logic, Springer Berlin Heidelberg, Germany pp 25-57 [4] Gander(2006), M : Hitori solver Bachelor, http://homepage uibk ac.at/~csae1761/hitori/website/res/MGCH pdf [5] Gilles Audemard and Laurent Simon (2009), Predicting learnt clauses quality in modern SAT solvers In Proceedingsof IJCAI-2009, pages 399–404 [6] Gilles Audemard – Laurent Simon (2012), GLUCOSE 2.1, [7] Glueminisat, http://glueminisat.nabelab.org/ [8] Glucose http://www.labri.fr/perso/lsimon/glucose/ [9] Hidetomo NABESHIMA, Koji IWANUMA, Katsumi INOUE, Glueminisat2.2.5 [10] Hitori puzzle, http://nikoli com/en/puzzle/hitori [11] Jakob Nordström(2011), Current Research in Proof Complexity: Problem Set http://www.csc.kth.se/~jakobn/teaching/proofcplx11/ [12] Joao Marques-Silva, Ines Lynce and Sharad Malik (2009), Handbook of Satisfiability, IOS Press, pp.131-153 [13] JP Marques-Silva, Karem A Sakallah (1999), GRASP: A Search Algorithm for Propositional Satisfiability, IEEE Trans Computers, pp.506-521 [14] Lynce, I., Ouaknine, J, : Sudoku as a sat problem(2006), In: In Proc of the Ninth International Symposium on Artificial Intelligence and Mathematics, Springer [15] Nina Narodyska(2011), Introduction to Satisfiability Solving, Based on slides by Fahiem Bacchus, Niklas Een, Marijen Heule, Lintao Zhang, Toby Walsh [16] Matthew W Moskewicz , Conor F Madigan , Ying Zhao , Lintao Zhang , Sharad Malik (2001), Chaff: Engineering an Efficient SAT Solver, Proceedings of the 38th annual Design Automation Conference, pp.530-535 [17] Marcelo Finger (n.d.), SAT Solvers A Brief Introduction, Instituto de Matemática e Estatística Universidade de São Paulo [18] Michael Genesereth (), Introduction to logic, Stanford University,chapter two, Footer Page 67 of 113 Header Page 68 of 113 58 [19] Minisat, http://minisat.se/ [20] Niklas Een and Armin Biere (2005), Effective preprocessing in SAT through variable and clause elimination, Proceedings of the 8th international conference on Theory and Applications of Satisfiability Testing, pp.61 -75 [21] Pfeiffer, U., Karnagel, T., Scheffler, G (2013), A sudoku-solver for large puzzles using sat In Voronkov, A., Sutcliffe, G., Baaz, M., Fermüller, C., eds.: LPAR-17short Volume 13 of EPiC Series., EasyChair pp.52 - 57 [22] RJ Bayardo Jr, RC Schrag, Using CSP look-back techniques to solve real world SAT instances (1997), Proc AAAI, pp 203–208, [23] Robert Nieuwenhuis, Albert Oliveras and Cesare Tinelli (n.d.), Solving SAT and Modulo Theories: from an Abstract Davis-Putnam-Logemann-Loveland Procedure to DPLL(T) Technical University of Catalonia, Barcelona And The University of Iowa, Iowa City [24] SAT Benchmark Aprove09, http://www.cril.univ-artois.fr/SAT09/bench/appli.7z [25] SAT Benchmark Slithelink, http://www.mediafire.com/file/7h29i4oevf6i0lv/Input+Slithelink.rar [26] Sorensson, Niklas Eén and Niklas Sörensson (n.d.), An extensible SAT solver, Chalmers University of Technology, Sweden [27] The international SAT Competitions web page, http://www.satcompetition.org/ Footer Page 68 of 113 ... of 113 13 CHƯƠNG CÁC KỸ THUẬT SAT SOLVING CƠ BẢN Chương giới thiệu kỹ thuật để giải toán SAT Lôgic mệnh đề bao gồm thủ tục DPLL, kỹ thuật quay lui (backjumping) gặp xung đột, kỹ thuật thêm mệnh... Chương trình bày kỹ thuật SAT Solving tiên tiến nay, kỹ thuật cài đặt SAT solver mạnh giới GlueMinisat, Glucose - Chương tiến hành thực nghiệm so sánh đánh giá SAT Solver liệu chuẩn thi SAT competition... rõ cách thức hoạt động Các kỹ thuật cài đặt SAT solver phổ biến MiniSAT, SAT solver mã nguồn mở mà nhiều SAT solver mạnh giới mở rộng cải tiến từ SAT Solver Bên cạnh đó, luận văn tìm hiểu kĩ thuật

Ngày đăng: 25/03/2017, 10:31

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan