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.
ĐẠ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ố: 60.48.01.03 TÓM TẮT LUẬN VĂN THẠC SĨ NGÀNH CƠNG NGHỆ THƠNG TIN Hà Nội - 2016 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 tốn SAT tố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 đề, 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à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 MỤC LỤC TÓM TẮT CHƯƠNG GIỚI THIỆU 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 1.4 Phương pháp SAT Encoding 1.4.1 Trò chơi Hitori 1.4.2 Trò chơi Sodoku 1.4.3 Trò chơi Slitherlink 1.5 Một số ứng dụng khác SAT CHƯƠNG CÁC KỸ THUẬT SAT SOLVING CƠ BẢN 2.1 Thủ tục DPLL truyền thống 2.1.1 Một số khái niệm 2.1.2 Các luật thủ tục DPLL 2.2 Thủ tục DPLL đại 2.2.1 Backjumping 2.2.2 Learn Forget 2.2.3 Mệnh đề Backjump 2.3 Thuật toán CDCL 10 2.3.1 Nội dung CDCL 10 2.3.2 Giải thuật CDCL 10 2.3.3 Suy diễn mệnh đề mức quay lui 11 2.3.4 Biểu đồ kéo theo 12 2.3.5 Học từ mệnh đề xung đột 12 2.4 Kỹ thuật Two -Watched literals 12 2.4.1 Watched literal 12 2.4.2 Two- Watched literal 13 2.5 Giải pháp loại bỏ biến loại bỏ mệnh đề 14 2.5.1 Loại bỏ biến 14 2.5.2 Loại bỏ mệnh đề 15 CHƯƠNG CÁC KỸ THUẬT SAT SOLVING TIÊN TIẾN HIỆN NAY 18 3.1 GlueMiniSat 18 3.1.1 Giới thiệu 18 3.1.2 Tiêu chí đánh giá Learn Clause 18 3.1.3 Chiến lược tự khởi động lại 18 3.2 Glucose 19 3.2.1 Quản lý mệnh đề học 19 3.2.2 Khởi động lại 19 CHƯƠNG THỰC NGHIỆM 20 4.1 Giới thiệu MiniSat 20 4.2 Giao diện lập trình ứng dụng 20 4.3 Tổng quan Minisat 20 4.4 Thực nghiệm 21 4.4.1 Biên dịch Minisat 21 4.4.2 Biên dịch GlueMinisat 22 4.4.3 Biên dịch Glucose 22 4.4.4 Bộ liệu thực nghiệm 23 4.4.5 Thực nghiệm 23 KẾT LUẬN 26 TÀI LIỆU THAM KHẢO 27 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 CHƯƠNG GIỚI THIỆU 1.1 Bài toán SAT Bài toán SAT tốn 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ông thức Lôgic mệnh đề Một công thức Lôgic mệnh đề SAT tồn giá trị true false 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 UNSAT giá trị true false biến Lôgic mệnh đề làm cho công thức có giá trị false 1.2 Lơgic mệnh đề Đầu vào tốn SAT cơng thức Lơgic mệnh đề thường biểu diễn dạng chuẩn tắc hội (CNF) chuẩn tắc tuyển (DNF) 1.2.1 Công thức Lôgic mệnh đề Một công thức Lôgic mệnh đề xây dựng từ biến phép tố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 khái niệm [1]: a Mệnh đề Định nghĩa: Mỗi câu phát biểu hay sai gọi mệnh đề b Phép phủ định Cho P mệnh đề, câu “không phải P” mệnh đề khác gọi phủ định mệnh đề P Kí hiệu: P c Phép hội Cho hai mệnh đề P, Q Câu xác định “P Q” mệnh đề gọi hội mệnh đề P Q Kí hiệu: P Q d Phép tuyển Cho hai mệnh đề P, Q Câu xác định “P Q” mệnh đề gọi tuyển mệnh đề P Q Kí hiệu: P Q e Phép kéo theo Cho hai mệnh đề P, Q Câu “nếu P Q” mệnh đề gọi mệnh đề kéo theo mệnh đề P, Q Kí hiệu: P Q P gọi giả thiết Q gọi kết luận f Phép XOR Cho mệnh đề P, Q Câu xác định “chỉ P Q” nghĩa “ P Q không đồng thời đúng” mệnh đề gọi P XOR Q, kí hiệu: P Q g Phép tương đương Cho hai mệnh đề P, Q Câu “P Q” mệnh đề gọi P tương đương với Q, kí hiệu: P Q 1.2.2 Chuẩn tắc hội CNF CNF tuyển sơ cấp hay hội hai hay nhiều tuyển sơ cấp Dạng chuẩn tắc hội CNF có dạng sau: TSC1 … TSCn Trong TSCi ≡ (P1 … Pm) với n, m Pi biến Lôgic mệnh đề 1.3 SAT Solver Công cụ chứng minh cách tự động công thức logic mệnh đề SAT hay UNSAT gọi SAT Solver 1.4 Phương pháp SAT Encoding SAT Encoding phương pháp mà số tốn giải việc đưa toán SAT: Biểu diễn vấn đề công thức Lôgic mệnh đề áp dụng SAT Solver vào để giải cơng thức Lơgic mệnh đề 1.4.1 Trò chơi Hitori 1.4.2 Trò chơi Sodoku 1.4.3 Trò chơi Slitherlink 1.5 Một số ứng dụng khác SAT 15 if (x assigned or has zero occurrences) return if (#occurs of x and are x both>10) return heuristic cut- off def = findDefinition(x) if (def # NODEF) maybeSubstitute(def) maybeClauseDistribute(x) else if (x was eliminated) propagate Toplevel() remove learned clause with x - for incremental SAT only Giải nghĩa: maybeClauseDistribute(x): loại bỏ x mệnh đề phân phối kết có mệnh đề so với gốc (sau loại bỏ mệnh đề tầm thường thỏa mãn) findDefinition(x): trả x ↔ p1 p2 ∨∨ ∨ pn x ↔ p1 ∧ p2 ∧ ∧ pn NoDef maybeSubstitute(def) định nghĩa chức phụ thuộc biến thay lần xuất biến theo định nghĩa 2.5.2 Loại bỏ mệnh đề 2.5.2.1 Loại bỏ mệnh đề quan hệ subsum(gộp) Một mệnh đề C1 gộp với C2 C1 C2 Một mệnh đề gộp không cần thiết bỏ khỏi cơng thức 16 Thuật toán: findSubsumed(Clause C) pick the literal p in C with the shortest occur list for each C’ occur (p) if (C # C’ && subset( C, C’)) add C’ to result return result subset( Clause C, Clause C’) if (size (C) & > size (C’)) return FALSE if (sig(C) & sig(C’) # return FALSE else return result of iterating over C and C’ in a complete (expensive) subset test 2.5.2.2 Loại bỏ mệnh đề thay biến Nếu x có định nghĩa loại trừ mệnh đề phân phối, nhiều phép phân giải thừa bị phát sinh Bằng cách sử dụng định nghĩa, mệnh đề loại bỏ dễ ràng Ví dụ 2.12 : Giả sử có tập mệnh đề S sau: , , , {x, c}, {x, d } {x, a , b} { x , a},{ x , b} { x , e , f } Rx Gx Gx Rx 17 Như ta thấy S chia làm tập nhỏ : Rx = {1, 2} Gx = {3, 4} = {4, 5} = {6} , {x , c}, {x , d } , { x, a , b } { x , a} ,{ x , b } ,{ x , e , f } Sx Sx Tương tự chia S thành tập nhỏ Sx Sx = {1, 2, 3} Ta có: =( ) ( = {4, 5, 6} ) 3 1 1 ( S '') { c , a} ,{ c, b } ,{d , a} ,{d , b } ,{a , b , e, f } 3 3 (G ' ) {a , b , a} ,{a , b , b } 1 { c, e, f} ,{d , e, f } (R ') chứa mệnh đề khơng có nghĩa nên có | | = > = | | Thay S giảm số lượng mệnh đề từ thành 5, việc thực phân tách mệnh đề đầy đủ thực tế tăng số mệnh để từ thành Ngoài ra, mệnh đề thừa thu thập từ 18 CHƯƠNG CÁC KỸ THUẬT SAT SOLVING TIÊN TIẾN HIỆN NAY 3.1 GlueMiniSat 3.1.1 Giới thiệu GlueMiniSat SAT solver dựa LBD đề xuất Audemard Simon [5] 3.1.2 Tiêu chí đánh giá Learn Clause Một Block bao gồm tồn literals có level định Một mệnh đề học ước lượng số Block có mệnh đề Định nghĩa LBD: Cho mệnh đề C phần vùng Literals vào n tập theo phép gán tại, Literals phân vào vùng có chung mức level LBD C n [5] “Một mệnh đề C có LBD hai gọi Glue Clause” 3.1.3 Chiến lược tự khởi động lại 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 mệnh đề có LBD nhỏ 19 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 đề 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 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 tính tốn mệnh đề học Thực tính tốn lại mệnh đề sử dụng BCP thay đổi nó, trở nên nhỏ 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 đó) 20 CHƯƠNG THỰC NGHIỆM 4.1 Giới thiệu MiniSat Minisat SAT Solver nhanh phát triển Niklas Eén Niklas Sörensson [19] Một vài đặc trưng MiniSAT: Dễ dàng sửa đổi Dễ dàng sửa đổi Hiệu cao Được thiết kế để tích hợp 4.2 Giao diện lập trình ứng dụng Đây giao diện MiniSAT Các kiểu kiểu biến, literal vec-tơ Class Solver - Public interface var newVar () boll addClause bool add bool simplifyDB bool solve Vec model the model (Vec literals) ( ) () (Vec assumptions) - If found, this vector has Hình 1: Giao diện ứng dụng Minisat [26] 4.3 Tổng quan Minisat Suy diễn (Propagation) Học (Learning) Tìm kiếm 21 Độ ưu tiên biến Loại bỏ ràng buộc Top-level solver 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) - 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/ 22 - 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/glueminisat2.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: 23 - 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 - 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) 4.4.5 Thực nghiệm 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] 24 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 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 25 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 26 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 27 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 IJCAI2009, 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/ 28 [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, [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 29 [21] Pfeiffer, U., Karnagel, T., Scheffler, G (2013), A sudokusolver for large puzzles using sat In Voronkov, A., Sutcliffe, G., Baaz, M., Fermüller, C., eds.: LPAR-17-short 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, artois.fr/SAT09/bench/appli.7z http://www.cril.univ- [25] SAT Benchmark Slithelink, http://www.mediafire.com/file/7h29i4oevf6i0lv/Input+Sli thelink.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 http://www.satcompetition.org/ web page, ... 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. .. 23 KẾT LUẬN 26 TÀI LIỆU THAM KHẢO 27 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ụ... luận văn chia thành chương sau: - Chương giới thiệu vấn đề 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