1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Phương pháp SAT encoding hiệu quả giải quyết trò chơi logic hitori

33 1,2K 9

Đ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 33
Dung lượng 610,11 KB

Nội dung

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ - ĐHQGHN KHOA CÔNG NGHỆ THÔNG TIN CÔNG TRÌNH DỰ THI GIẢI THƯỞNG “SINH VIÊN NGHIÊN CỨU KHOA HỌC” NĂM 2015 Tên công trình: Phương pháp SAT Encoding hiệu quả giải quyết trò chơi Logic Hitori Họ và tên sinh viên: Trần Trọng Tiệp Nam Lớp: K56CLC Vũ Đình Thắng Nam Lớp: K56CLC Đào Thị Thúy Nữ Lớp: K56CLC Nguyễn Tuấn Anh Nam Lớp: K58CA Nguyễn Thị Mai Hương Nữ Lớp: K58CA Khoa: Công nghệ thông tin Người hướng dẫn: TS. Tô Văn Khánh 1 MỞ ĐẦU Bài toán SAT (Satisfiability) là bài toán chứng minh tính thỏa mãn hay không thỏa mãn (SAT/UNSAT) của một công thức logic mệnh đề. Các công cụ chứng minh tự động cho bài toán này được gọi là SAT Solver, chúng có nhiều ứng dụng trong trí tuệ nhân tạo hay trong các bài toán kiểm chứng, kiểm thử phần mềm. Các SAT Solver đóng vai trò như các công cụ nền (backend engine) cho các SMT (SAT Modulo Theories) Solver, là các công cụ chứng minh tính thỏa mãn của các công thức logic xây dựng trên lý thuyết logic vị từ cấp I (First Order Logic - FOL). Một số bài toán có thể được giải bằng việc đưa về bài toán SAT, biểu diễn vấn đề bằng các công thức logic mệnh đề và áp dụng SAT Solver vào giải các công thức logic mệnh đề đó, cách tiếp cận đó được gọi là SAT Encoding. Trong báo cáo này chúng tôi trình bày các thuật toán giải Hitori bằng các giải thuật tìm kiếm kết hợp quay lui và SAT Encoding. Cũng trong báo cáo chúng tôi đề xuất một phương pháp SAT Encoding mới để giải trò chơi Lôgic Hitori, được đặt tên là Connectivity Encoding. Chúng tôi đã tiến hành thực nghiệm trên 120 bài toán dữ liệu đầu vào để đánh giá tính hiệu quả của phương pháp Connectivity Encoding so với các phương pháp đã đề xuất trước đấy. Connectivity Encoding cho kết quả vượt trội so với phương pháp Chains & Cycles Encoding (một phương pháp SAT Encoding được đề xuất trước đó) và kết quả cạnh tranh so với 2 giải thuật tìm kiếm kết hợp quay lui. 2 DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT. Thuật ngữ Tên đầy đủ SAT Satisfiability UNSAT Unsatisfiability CNF Conjunctive Normal Form NP Nondeterministic Polynomial SMT SAT Modulo Theories 3 MỤC LỤC 4 …… 28DANH MỤC CÁC HÌNH ẢNH 5 DANH MỤC BẢNG BIỂU VÀ BIỂU ĐỒ 6 I. GIỚI THIỆU I.1 Trò chơi logic Hitori Hitori [ 4 ] (Hitori ni shite kure; nghĩa là "hãy để tôi một mình") là một trò chơi logic từ Nhật Bản, được chơi trên một ma trận với kích thước n x n với và cho trước các số từ 1 đến n. Người chơi lần lượt phải bôi đen các ô số sao cho chúng thỏa mãn các luật của trò chơi. Nó lần đầu tiên xuất hiện trên Nikoli [ 4 ] (tháng 3 năm 1990). Hình 1.1: Ví dụ về câu đố Hitori I.2 Luật chơi của Hitori Luật chơi của Hitori bao gồm 3 luật về bôi đen các ô trên hàng, trên cột được trình bày dưới đây: • Luật 1: Giá trị của số trong mỗi ô không được xuất hiện nhiều hơn một lần ở mỗi hàng, mỗi cột Hình 1.1: Ví dụ về luật 1 của Hitori 7 2 2 1 5 3 2 3 1 4 5 1 1 1 3 5 1 3 5 4 2 5 4 3 2 1 Hình 1.5: Ví dụ về vi phạm luật 3 Trên cùng một hàng hoặc cột, các số xuất hiện nhiều hơn một lần sẽ phải bôi đen (xóa ô đó đi) để thỏa mãn luật 1. Hình 1.2 thể hiện cho ta thấy luật 1 của Hitori, trên cột thứ nhất giá trị 2, 1 không thể xuất hiện nhiều hơn một lần, bởi vậy một trong hai ô có giá trị 2, 1 trên cột 1 đã được xóa đi (bôi đen). • Luật 2: Các ô được bôi đen không được nằm liền kề nhau trên hàng hoặc cột Nếu ô có vị trí (i, j) (hàng i, cột j) được bôi đen thì 4 ô tại các vị trí liền kề của nó là (i+1,j), (i, j+1), (i-1, j), (i, j-1) sẽ không được bôi đen. Như ta thấy trên hình 1.3. Tại hàng 3, hai ô có giá trị 1 cạnh nhau đều được bôi đen, điều này đã vi phạm luật 2 của Hitori. Hình 1.4 trình bày cách giải đúng với đầu vào tương tự hình 3. • Luật 3: Mọi ô không bôi đen (ô trắng) phải kết nối được với nhau. Nói cách khác luôn tồn tại một đường đi từ mọi ô trắng đến các ô trắng còn lại. 8 2 2 1 5 3 2 3 1 4 5 1 1 1 3 5 1 3 5 4 2 5 4 3 2 1 Hình 1.4: Cách giải đúng luật 2 Hitori 2 2 1 5 3 2 3 1 4 5 1 1 1 3 5 1 3 5 4 2 5 4 3 2 1 Hình 1.3: Ví dụ về vi phạm luật 2 Hitori 2 5 1 5 3 2 3 1 4 5 1 1 1 3 5 1 3 5 4 2 5 4 3 2 1 Hình 1.6: Cách giải luật 3 không vi phạm Hình 1.7: Đầu vào Hitori Hình 1.8: Lời giải hoàn chỉnh Hitori Ở hình 1.5 hai ô có giá trị 5 được bôi đen đã tạo thành một đường ngăn cách ô trắng có giá trị 3 trong góc với các ô trắng khác (vi phạm luật 3 của Hitori). Hình 1.6 là cách giải đúng luật 3. Trên đây là ba luật cơ bản của Hitori, với các luật trên, ta có thể đưa ra lời giải chính xác, đầy đủ ba luật Hitori như hình 1.8 với đầu vào là ma trận 1.7. Lưu ý: Với một ma trận đầu vào Hitori có thể có nhiều hơn một đáp án lời giải. Phương pháp SAT Encoding có thể tìm ra tất cả các lời giải của Hitori. 9 II. CÁC GIẢI THUẬT TÌM KIẾM ĐỂ GIẢI QUYẾT HITORI Giải thuật tìm kiếm và quay lui là phương pháp được sử dụng phổ biện trong việc giải quyết trò chơi Lôgic Hitori. Đặc điểm chung của các phương pháp này là: cho một ô được tô đen, sau đó tìm kiếm xung quanh ô đó những ô khác có khả năng được tô đen để đảm bảo rằng chúng không vi phạm các quy tắc của trò chơi, nếu vi phạm, giải thuật sẽ quay lại tìm kiếm các ô khác có khả năng được tô đen. Phần này trình bày 2 giải thuật dựa trên tìm kiếm và kết hợp quay lui. II.1 Thuật toán tìm kiếm thứ nhất. Thuật toán tìm kiếm thứ nhất được trình bày trong [ 2 ] với tư tưởng dựa trên một số mẫu (pattern) cho trước, để quyết định ô nào bắt buộc phải tô đen, ô nào phải để trắng và sau đó thực hiện tìm kiếm tìm kiếm quay lui xem trên danh sách các ô có khả năng được tô đen. Thuật toán bao gồm 4 bước như sau: • Bước 1: Xây dựng các mẫu là các phần được quy định sẵn về các ô cần tô khi các ô sắp xếp theo như mẫu đã quy định. Dưới đây là một số mẫu áp dụng cho thuật toán. Hình 2.1: Một số mẫu điển hình Khi các giá trị trong các ô xuất hiện theo một số trường hợp như hình trên thì có sự quy định rõ về ô cần phải tô đen (ô màu đen) và những ô không được phép tô đen (những ô màu hồng), những ô còn lại là những ô có khả năng tô đen hoặc không. • Bước 2: Khi các mẫu không đủ để giải quyết Hitori thì phải đến phần thứ hai của thuật toán, đó là xây dựng một hàm chuẩn StandardCyclePattern. Hàm này giống như một mẫu nhưng phức tạp hơn. Đầu tiên cho một ô được tô đen nếu chúng là ô bội số (ô được đánh dấu là bội nếu nó xuất hiện nhiều hơn 1 lần trên hàng hoặc cột), vì ô đó được tô đen nên quy định 4 ô bên cạnh nó là ô không được tô (ô trắng), mục đích để đảm bảo luật 2 của Hitori. Dựa vào những ô không được tô đó, 10 [...]... không nhiều Vấn đề khó khăn nhất trong việc SAT Encoding cho Hitori nằm ở luật 3 Phần tiếp theo trình bày 2 phương pháp SAT Encoding cho Hitori đó là phương pháp Chains & Cycles Encoding và Connectivity Encoding III.2.2 Chains & Cycles Encoding Phương pháp Chains & Cycles [2] là một phương pháp SAT Encoding giải quyết trò chơi Hitori được đề xuất năm 2006 Phương pháp này tập trung vào việc tìm ra tất cả... 2 phương pháp SAT Encoding khác nhau để giải Hitori: Phương pháp SAT Encoding có tên gọi là Chains & Cycles [2] được đề xuất vào năm 2006 • Phương pháp SAT Encoding do nhóm nghiên cứu đề xuất - Phương pháp Connectivity Encoding • III.1 Các khái niệm cơ bản về SAT Encoding a) Bài toán SAT Bài toán SAT (satisfiability problem) [6] 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 (satisfiability... nhiều mẫu nhỏ hơn 12 III PHƯƠNG PHÁP SAT ENCODING Phần trên báo cáo trình bày 2 giải thuật tìm kiếm dựa trên việc tìm kiếm theo mẫu và thực hiện quay lui Trong phần này, chúng tôi sẽ trình bày một hướng tiếp cận khác giải quyết trò chơi Lôgic Hitori - phương pháp SAT Encoding SAT Encoding là phương pháp mã hóa các luật chơi Hitori thành các công thức Lôgic mệnh đề (propositional logic) biểu diễn dưới... và áp dụng SAT Solver vào giải các công thức logic mệnh đề đó Từ kết quả trả về của SAT Solver để đưa ra lời giải của bài toán (khi SAT Solver thông báo công thức là Satisfiable) hoặc thông báo không tìm được lời giải (Unsatisfiable) SAT ENCODING đã được ứng để giải quyết một số trò chơi Lôgic như Sudoku [5,8], Slitherlink, Hitori [2], Numberlink [7] Ví dụ 3.2: Áp dụng SAT Encoding vào giải Sudoku... 49 lần so với két quả khi đã tối ưu (749 mệnh đề) Thời gian giải Hitori cũng được giảm đi rất nhiều Việc tối ưu Encoding dựa trên dữ liệu đầu vào cho kết quả được cải thiện đáng kể 25 Như vậy, chúng tôi đã trình bày hai phương pháp giải quyết Hitori bằng phương pháp SAT Encoding Phương pháp Chains & Cycles Encoding được đề xuất trong Chains & Cycles [2] và phương pháp Connectivity Encoding do nhóm chúng... quả: Là đáp án cho dữ liệu vào, nếu đầu vào là một ma trận Sudoku thì kết quả là đáp án của ma trận sudoku đó III.2 SAT Encoding giải Hitori Trong phần này chúng tôi trình bày hai phương pháp SAT Encoding để giải quyết bài toán Hitori: Chains & Cycles và Connectivity Hai phương pháp đều có cách mã hóa luật 1 và luật 2 như nhau, luật 3 là luật phức tạp và khó nhất của bài toán Hitori giải bằng SAT Encoding. .. thước từ 5x5 đến 36x36) và tiến hành so sánh kết quả với 3 phương pháp khác giải trò chơi Hitori: Chains & Cycles Encoding (một phương pháp SAT Encoding được đề xuất vào năm 2006), 2 giải thuật tìm kiếm đề xuất năm 2006 và 2009 Kết quả thực nghiệm trên 120 ma trận đầu vào cho thấy: Connectivity Encoding cho kết quả vượt trội so với phương pháp Chains & Cycles Encoding Số lượng mệnh đề và thời gian chạy... do đó các SAT Solver sẽ mất nhiều chi phí hơn khi tìm được giá trị thỏa mãn (SAT hay UNSAT) Biểu đồ 4.1 và Biểu đồ 4.2 cung cấp thêm cách nhìn trực quan hơn khi so sánh 2 phương pháp SAT Encoding Biểu đồ 4.1: Số lượng mệnh đề hai phương pháp Encoding Biểu đồ 4.2: So sánh thời gian chạy của hai phương pháp Encoding Sự khác biệt giữa số lượng mệnh đề và thời gian giải giữa hai phương pháp SAT Encoding. .. cách SAT Encoding của theo phương pháp Chains & Cycles thì thời gian chạy và chi phí để giải cho những ma trận từ 30x30 hay 40x40 sẽ có thời gian giải rất lâu và chi phí tăng lên đáng kể Phần tiếp theo chúng tôi đề xuất một phương pháp SAT Encoding mới, được gọi là Connectivity Encoding, một phương pháp khắc phục vấn đề bùng nổ mệnh đề so với phương pháp Chains & Cycles Encoding III.2.3 Phương pháp. .. cho kết quả cạnh tranh nhất so với 2 phương pháp còn lại khi so sánh với Thuật toán tìm kiếm thứ hai Có thể thấy sự khác biệt giữa thời gian chạy của các giải thuật ở biểu đồ sau: Biểu đồ 4.3: So sánh thời gian chạy 4 thuật toán 31 KẾT LUẬN Báo cáo đã đề xuất một phương pháp SAT Encoding mới và hiệu quả - phương pháp Connectivity Encoding để giải trò chơi Lôgic Hitori Chúng tôi đã tiến hành thực nghiệm . tiếp cận khác giải quyết trò chơi Lôgic Hitori - phương pháp SAT Encoding. SAT Encoding là phương pháp mã hóa các luật chơi Hitori thành các công thức Lôgic mệnh đề (propositional logic) biểu diễn. chúng tôi trình 2 phương pháp SAT Encoding khác nhau để giải Hitori: • Phương pháp SAT Encoding có tên gọi là Chains & Cycles [ 2 ] được đề xuất vào năm 2006 • Phương pháp SAT Encoding do nhóm. III.2.2 Chains & Cycles Encoding Phương pháp Chains & Cycles [ 2 ] là một phương pháp SAT Encoding giải quyết trò chơi Hitori được đề xuất năm 2006. Phương pháp này tập trung vào việc

Ngày đăng: 14/05/2015, 15:35

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w