1. Trang chủ
  2. » Luận Văn - Báo Cáo

Các kỹ thuật sat solving

68 8 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 68
Dung lượng 1,99 MB

Nội dung

ĐẠ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 ĐẠ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 LỜI CẢM ƠN Luận văn Thạc sĩ đƣợc thực Trƣờng Đại học Công nghệ - Đại học Quốc gia Hà Nội dƣới hƣớng dẫn TS Tô Văn Khánh Xin đƣợc 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 hồn thành luận văn Tơi xin đƣợc gửi lời cảm ơn đến thầy, cô Bộ môn Công nghệ phần mềm nhƣ Khoa Công nghệ Thông tin mang lại cho kiến thức vô q giá bổ ích q 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 tơi 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 đƣợc góp ý q 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 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 tơi dƣới 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 đề đƣợc trình bày tìm hiểu nghiên cứu cá nhân tơi đƣợc 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 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 đƣợc ứng dụng toán kiểm chứng, kiểm thử chƣơng trình Bài tốn SAT tốn có độ phức NP kỹ thuật SAT Solving đƣợc 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 đƣợc 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 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 cài đặt SAT solver phổ biến MiniSAT, SAT solver mã nguồn mở mà nhiều SAT solver mạnh giới đƣợc 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 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 đƣợc sử dụng Nội dung luận văn đƣợc chia thành chƣơng nhƣ sau: - Chƣơng đƣợc giới thiệu vấn đề nhƣ Lơgic mệnh đề, tố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 cài đặt SAT solver mạnh giới nhƣ 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 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 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 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 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 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 đƣợ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 đƣợ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 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 đƣợc 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 đƣợc 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 tồn Trung bình LBDs 50 mệnh đề học cuối * 0,8 lớn mức trung bình tồn LBD Mục đích việc khởi động lại giảm mức định nhận đƣợc mệnh đề có LBD nhỏ 3.2 Glucose GLUCOSE giữ glue clause mà không xóa chúng suốt q trình tìm kiếm Các LBD mệnh đề đƣợc tính tốn lại chúng đƣợc sử dụng cập nhật LBD trở lên nhỏ Quá trình cập nhật quan trọng để tạo đƣợc 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 đƣợc coi phần quan trọng giải CDCL Các đo lƣờng trƣớc khơng đƣợc 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: Q trình làm không đƣợc 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ì hỗn việc làm số 1000 LBD đƣợc tính tốn mệnh đề đƣợc học Thực tính tốn lại mệnh đề đƣợc sử dụng BCP thay đổi nó, trở nên nhỏ 45 3.2.2 Khởi động lại Trong Glucose, khởi động lại đƣợc 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 đƣợc 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 đƣợc coi có lợi và, đó, khởi động lại đƣợc 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 tốn LBD thứ hai yêu cầu hàng đợi có độ dài 50, với 50 số mệnh đề gần để đƣợc 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 đƣợc 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(); } 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 đƣợc phát triển Niklas Eén Niklas Sörensson [19] MiniSat dạng Sat solver tối thiểu, mã nguồn mở, đƣợc 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 dƣới cấp phép MIT, đƣợc sử dụng nhiều dự án Cùng với SATELITE, MiniSAT đƣợc 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ỏ, đƣợc giải cẩn thận đƣợc 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 tố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 nhƣ backend cho cơng cụ khác, chẳng hạn nhƣ 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 lần lƣợt kiểu () (Vec literals) ( ) () (Vec assumptions) - If found, this vector has the model Hình 1: Giao diện ứng dụng Minisat [26] 47 Phƣơng thức “ ” đƣợ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 đƣợc sử dụng nhƣ sau: Các biến đƣợc giới thiệu cách gọi phƣơng thức Từ biến này, mệnh đề đƣợc xây dựng thêm vào với phƣơng thức Các xung đột tầm thƣờng, ví dụ nhƣ mệnh đề đơn vị đƣợc thêm vào, đƣợc 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 đƣợc sử dụng Nếu khơng có xung đột tầm thƣờng nhƣ trình thêm mệnh đề, phƣơng thức đƣợ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 đọc từ biến vectơ public “ ” Phƣơng thức s đƣợc sử dụng trƣớc gọi phƣơng thức để làm đơn giản hóa ràng buộc tố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 đơi phát xung đột, trả FALSE trạng thái máy giải không xác định không đƣợc sử dụng Nếu máy giải trả SAT, ràng buộc đƣợ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 đƣợ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 đƣợc model hay mâu thuẫn, giả định bị loại bỏ, máy giải đƣợc trả trạng thái sử dụng đƣợc, kể phƣơng thức trả FALSE, mà nên đƣợc 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 đề cập tới nhƣ 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 tố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 đề cập tới nhƣ SAT solver hƣớng xung đột 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 đƣợc 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 đƣợc gán false), literal lại đƣợc gán true, có khả tạo nên nhiều mệnh đề đơn vị khác Quá tình đƣợc 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 đƣợc chọn gán giá trị (phép giả định đƣợc tạo ra), trình suy diễn phát xung đột (tất literal mệnh đề false) Khi đó, mệnh đề xung đột đƣợc xây dƣng thêm vào tốn SAT Các giải định sau đƣợc hủy bỏ cách backtrack mệnh đề xung đột trở thành đơn vị mà từ mệnh đề đơn vị đƣợc 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 đƣợ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ị đƣợc suy diễn tất literal trừ literal vừa trở thành false Hai literal chƣa đƣợc gán p q mệnh đề đƣợc chọn, tham chiếu tới mệnh đề lần lƣợt đƣợc thêm vào danh sách ⌐p ⌐q Các literal đƣợc nói đƣợc watched danh sách ràng buộc đƣợc đề cập tới nhƣ watcher list Ngay literal watched trở thành true, ràng buộc đƣợc gọi để xem có thơng tin đƣợc suy diễn hay không, để chọn literal chƣa bị gán để đƣợc 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 dƣới phép gán Ràng buộc xung đột sau đƣợc 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 đƣợc 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 đƣợc truy vấn lần lƣợt tập phép gán biến khiến phép suy diễn xảy ra, tiếp tục q trình phân tích ngƣợc Thủ tục đƣợc lặp lại vài điều kiện kết thúc đƣợ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ể đƣợc thêm vào sở liệu mệnh đề Mênh đề học đƣợc (learnt clause) phải ln ln , q trình xây dựng, đƣợc ngầm ý ràng buộc ban đầu toán Các mệnh đề học đƣợ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, nhƣng mệnh 49 đề đƣợc 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 đƣợc ngày tăng, trình suy diễn bị chậm lại Do đó, số lƣợng mệnh đề học đƣợc đƣợ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, nhƣng thủ tục thƣờng đƣợc 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 đƣợc gán (đƣợc gọi biến định) gán giá trị cho nó, cho TRUE Kết việc gán đƣợc suy diễn, dẫn tới việc gán nhiều biến khác Tất biến đƣợc gán nhƣ kết việc gán đƣợc coi mức định (decision level), đếm từ cho phép gán tăng dần Các phép gán đƣợc tạo trƣớc phép gán (mức định 0) đƣợc gọi top-level Tất phép gán đƣợc lƣu ngăn xếp theo thứ tự chúng đƣợc tạo ra; từ trở gọi ngăn xếp trail Trail đƣợc chia thành mức định đƣợc sử dụng để đảo ngƣợc thơng tin q trình backtrack Pha định tiếp tục tất biến đƣợc gán, ta có đƣợc model, hay xung đột xảy Trong xung đột, thủ tục học đƣợc gọi mệnh đề xung đột đƣợc tạo Trail đƣợc sử dụng để xóa bỏ mức định, mức lần, có xác số literal mệnh đề học đƣợc trở nên chƣa đƣợc 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 50 Độ ƣu tiên biến: Một kỹ thuật quan trọng đƣợc 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 đƣợc coi nhƣ MiniSAT Mỗi biến có độ ƣu tiên gắn với Mỗi biến có mặt mệnh đề xung đột đƣợc 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 đƣợc 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 đƣợc sƣ dụng trình phân tích xung đột, độ ƣu tiên đƣợc bump Các mệnh đề khơng hoạt động đƣợc loại bỏ định kỳ Loại bỏ ràng buộc: Cơ sở liệu ràng buộc đƣợc chia thành phần: ràng buộc toán mệnh đề học đƣợc Tập mệnh đề học đƣợc đƣợ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 đƣợ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 tốn đƣợc 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ể đƣợc áp dụng SAT solver hƣớng xung đột đại sử dụng việc tái khởi động (restart) để khỏi phần vơ ích tìm kiếm Trong MiniSAT số lƣợng mệnh đề học đƣợ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 đƣợc giải đoạn mã giả 4.4 Thực nghiệm Hai kỹ thuật Glueminisat Glucose đƣợc 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 dƣới đâ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) 51 - Gõ cd core - Gõ sudo apt-get install libghc-zlib-dev - Gõ make (Tạo đƣợc 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 dƣới đâ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 đƣợc 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 dƣới đâ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 đƣợc file chạy Glucose) - Tạo thƣ mục Examples để lƣu lại benchmark: mkdir Examples 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 dƣới định dạng DIMACS CNF (.CNF), đầu vào SAT Solver đƣợc xây dựng cộng đồng SAT Các liệu thực nghiệm SAT đƣợc 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” đƣợc tham khảo [25] “Bộ liệu thực nghiệm chuẩn Aprove09” đƣợc 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 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 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 119736 49032 262886 28677 28668 238869 77131 100426 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 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 nhƣng 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 tốn nhanh so với Glueminisat Tuy sử dụng chiến lƣợc khởi động lại động (LBD) nhƣng đ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 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 đƣợc kết định :  Hiểu đƣợc Bài toán SAT, SAT Solver, Các ứng dụng SAT Solver  Nắm đƣợc 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 đƣợc 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 đƣợc SAT Solver : Minisat, Glueminisat, Glucose Tuy nhiên, luận văn có hạn chế sau:  Chƣa thực đƣợ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ê đƣợc kỹ thuật SAT Solver nhƣ : 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 đƣợc 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 cách tùy biến SAT solver Từ đó, tạo Glueminisat Glucose mà không cần sử dụng SAT Solver đƣợc cài đặt sẵn 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, 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/ ... 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. .. lỗi, 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... tốn SAT tốn có độ phức NP kỹ thuật SAT Solving đƣợc 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

Ngày đăng: 16/03/2021, 10:06

w