TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ===== o0o ===== BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO Đề tài Tìm hiểu thuật toán A* và ứng dụng vào trò chơi Pacman Hà Nội 08/2023 MỤC LỤC DANH MỤ[.]
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THƠNG TIN ===== o0o ===== BÀI TẬP LỚN MƠN: TRÍ TUỆ NHÂN TẠO Đề tài: Tìm hiểu thuật tốn A* ứng dụng vào trò chơi Pacman Hà Nội -08/2023 MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BIỂU LỜI MỞ ĐẦU Phần I TÌM HIỂU THUẬT TỐN TÌM KIẾM TRONG KHƠNG GIAN TRẠNG THÁI 1.1 Tổng quan 1.2 Thuật tốn tìm kiếm theo chiều sâu (Depth First Search) 1.3 Thuật tốn tìm kiếm theo chiều rộng (Breadth First Search) 10 1.4 Thuật toán AT 13 1.4.1 Khái niệm: 13 1.4.2 Phương pháp: Sử dụng hai danh sách CLOSE OPEN .14 1.5 Thuật toán AKT 16 1.5.1 Thuật giải 17 1.5.2 Ví dụ 18 1.6 Thuật giải A* .18 1.6.1 Khái niệm 18 1.6.2 Các tính chất 20 1.6.3 Ví Dụ 21 Phần II XÂY DỰNG CHƯƠNG TRÌNH 2.1 Mơ tả tốn 24 2.2 Các bước xây dựng trò chơi 24 2.3 Áp dụng thuật toán A* .29 2.3.1 Ý tưởng xây dựng thuật toán .29 2.3.2 Áp dụng thuật toán 30 2.4 Kết luận 33 Tài liệu tham khảo DANH MỤC HÌNH ẢN Hình 1.1 Ví dụ tốn trị chơi đốn số Hình 1.2 Các bước chuyển đổi trạng thái tốn trị chơi đốn số Hình 1.3 Ví dụ đồ thị tìm kiếm theo chiều sâu Hình 1.4 Ví dụ tốn tìm kiếm theo chiều rộng 12 Hình 1.5 Ví dụ thuật giải At 15 Hình 1.6 Ví dụ thuật giải Akt 18 Hình 1.7 Các bước thuật giải Akt 18 Hình 1.8 Ví dụ thuật giải A* .21 Hình 2.1 Tạo map cho trị chơi 25 Hình 2.2 Giao diện trò chơi .26 Hình 2.3 Vẽ người chơi 27 Hình 2.4 Kiểm tra vị trí cho người chơi 27 Hình 2.5 Di chuyển người chơi 28 Hình 2.6 Tạo Ghost cho trị chơi 28 Hình 2.6 Tạo di chuyển cho Ghost 29 Hình 2.7 Kiểm tra node kề với node 30 Hình 2.8 Kiểm tra đường dẫn tối ưu 32 DANH MỤC BẢNG BIỂU Bảng 1.1 Các bước giải thuật tốn tìm kiếm theo chiều sâu 10 Hình 1.2 Các bước giải thuật tốn tìm kiếm theo chiều rộng 13 Bảng 1.3 Các bước giải thuật toán At 16 Bảng 1.4 Các bước giải thuật toán A* .22 Bảng 1.5 Bảng so sánh thuật toán BFS DFS 23 LỜI MỞ ĐẦU Để hoàn thành báo cáo này, chúng em nhận nhiều hướng dẫn từ phía thầy khoa Sự giảng dạy chu đáo, tận tình giúp đỡ nhiệt tình từ thầy cô giúp chúng em hiểu nhiều vấn đề hoàn thành báo cáo tốt Chúng em tỏ lòng biết ơn sâu sắc với cô Lê Thị Thuỷ, người cô tận tình hướng dẫn giúp đỡ, bảo nhóm em suốt q trình nghiên cứu đề tài hồn thành báo cáo Sau khoảng thời gian cô Lê Thị Thủy đưa đề tài, chúng em nỗ lực cố gắng việc tìm hiểu đề tài Các bạn nhóm cộng chăm giúp đỡ lẫn báo cáo hoàn hảo đến thời điểm Một lần nhóm em xin cảm ơn giảng viên Lê Thị Thủy, bạn lớp tập thể nhóm làm việc hoàn thành tốt báo cáo Chúng em xin chân thành cảm ơn! Phần I TÌM HIỂU THUẬT TỐN TÌM KIẾM TRONG KHƠNG GIAN TRẠNG THÁI 1.1 Tổng quan Trong thực tế có nhiều tốn mà cần phải sử dụng đến phương pháp tìm kiếm tìm đường tới địa điểm đồ, tìm kiếm nước cho quan cờ, tìm kiếm thơng tin, tìm kiếm đường tối ưu, Cụ thể tìm kiếm hay số đối tượng tập lớn đơi tượng nhằm thỏa mãn u cầu tốn Ví dụ trị chơi cờ caro, lượt ta đánh nhiều vị trí khác nhau, ta cần phải tìm vị trí đánh cho cuối ta dành chiến thắng Trong lĩnh vực trí tuệ nhân tạo, vấn đề tìm kiếm lại trở nên quan trọng ta phải thường xuyên đối đầu với tốn tìm kiếm Để giải tốn phương pháp tìm kiếm, trước hết ta phải xác định khơng gian tìm kiếm (bao gồm tất đối tượng mà thực việc tìm kiếm) Nó khơng gian liên tục khơng gian đối tượng rời rạc Như vậy, ta xét việc biểu diễn tốn khơng gian trạng thái cho việc giải tốn quy việc tìm kiếm lời giải khơng gian trạng thái Giải tốn không gian trạng thái, trước hết phải xác định dạng mơ tả trạng thái tốn cho toán trở nên đơn giản hơn, phug hợp chất vật lý tốn (có thể sử dụng xâu ký hiệu, vector, mảng hai chiều, cây, danh sách, ) Mỗi trạng thái hình trạng tốn, tình trạng ban đầu tình trạng cuối toán gọi trạng thái đầu trạng thái cuối Dưới ví dụ trạng thái đầu trạng thái cuối trò chơi số: Hình 1.1 Ví dụ tốn trị chơi đoán số Dưới bước chuyển đổi trạng thái để biến trạng thái đầu toán với trạng thái đích nó: Hình 1.2 Các bước chuyển đổi trạng thái tốn trị chơi đốn số Mỗi trạng thái hình trạng tốn hình trạng toán cách xếp số Ta biểu diễn hình trạng tốn mảng hai chiều kích thước 3x3 máy tính Tốn tử phép biến đổi từ trạng thái sang trạng thái khác Có hai cách để biểu diễn toán tử: Biểu diễn hàm xác định tập trạng thái nhận giá trị tập Biểu diễn dạng tập luật sản xuất Trong ví dụ trị chơi số, tốn tử cách chuyển trống, có kiểu tốn tử: chuyển trống lên trên, xuống dưới, sang trái, sang phải Tuy nhiên, số trạng thái đó, tốn tử khơng áp dụng được, chẳng hạn, trống nằm cột ô trống sang trái Quá trình tìm kiếm lời giải tốn biểu diễn khơng gian trạng thái xem q trình dị tìm đồ thị, xuất phát từ trạng thái đầu, thơng quan tốn tử dịch chuyển trạng thái, đến với trạng thái gặp trạng thái đích khơng cịn trạng thía để tiếp tục Khi áp dụng phương pháp tìm kiếm khơng gian trạng thái người ta thường quan tâm tới vấn đề sau: Kỹ thuật tìm kiếm lời giải Phương pháp luận việc tìm kiếm Chiến lược tìm kiếm Tuy nhiên khơng phải phương pháp áp dụng để giải cho tất toán phức tạp mà cho lớp toán Việc lựa chọn chiến lược tìm kiếm cho tốn cụ thể phụ thuộc nhiều vào đặc trưng tốn 1.2 Thuật tốn tìm kiếm theo chiều sâu (Depth First Search) Tư tưởng chiến lược tìm kiếm theo chiều sâu Các đỉnh đồ thị duyệt theo mức độ sâu, cụ thể đỉnh đồ thị duyệt theo nhánh đến nút chưa tìm thấy đỉnh đích quay lui tới đỉnh để sang nhánh khác Các đỉnh đồ thị duyệt theo nhánh đến nút Nếu chưa tìm thấy đỉnh TG quay lui tới đỉnh để sang nhánh khác Việc tìm kiếm kết thúc tìm thấy đỉnh TG hết đỉnh Thuật tốn tìm kiếm theo chiều sâu Lưu trữ: Sử dụng hai danh sách DONG MO để lưu trữ đỉnh đó: DONG: Chứa đỉnh xét, hoạt động theo kiểu FIFO (hàng đợi) MO: chứa đỉnh xét , hoạt động theo kiểu LIFO (ngăn xếp) Thuật giải: MO = Ø; MO = MO {T0} T0} while (MO != Ø) {T0} n = get(MO) // lấy đỉnh đầu danh sach MO if (n==TG) // n trạng thái kết thúc return TRUE // tìm kiếm thành công, dừng DONG = DONG {T0} n} //đánh dấu n xét for đỉnh kề v n if (v chưa đc xét) //v chưa DONG MO = MO {T0} v} //đưa v vào đầu DS MO father(v)=n// lưu lại vết đường từ n đến v } Ví dụ thuật tốn tìm kiếm theo chiều sâu Cho đồ thị hình vẽ sau: A B M X N Y R C U S L V G D O I P J H Hình 1.3 Ví dụ đồ thị tìm kiếm theo chiều sâu n đỉnh xét, A(n) đỉnh kề với đỉnh xét Đỉnh đầu T0=A, TG = {T0} R} n A(n) MO DONG A A B,C,D B,C,D A B M,N M,N,C,D A,B M X,Y X,Y,N,C,D A,B,M X rỗng Y,N,C,D A,B,M,X Y R,S R,S,N,C,D A,B,M,X, Y R Bảng 1.1 Các bước giải thuật tốn tìm kiếm theo chiều sâu Đỉnh xét đỉnh R nên ta dừng tìm kiếm Nhận xét: + Nếu đồ thị G tồn đường từ T0 đến đỉnh TG Goal hàm DFS dừng lại cho đường p có độ dài khơng ngắn + Với DFS đỉnh duyệt theo nhánh (theo chiều sâu) + Thuật tốn DFS có độ phức tạp O(bd) với b bậc d chiều sâu Tuy nhiên trường hợp xấu O(bd) 1.3 Thuật tốn tìm kiếm theo chiều rộng (Breadth First Search) a • • • Tư tưởng chiến lược tìm kiếm theo chiều rộng Từ đỉnh xuất phát duyệt tất đỉnh kề Làm tương tự với đỉnh vừa duyệt Quá trình duyệt kết thúc tìm thấy đỉnh TG hết đỉnh để duyệt b Thuật tốn tìm kiếm theo chiều rộng Lưu trữ: Sử dụng hai danh sách DONG MO hoạt động theo kiểu FIFO (hàng đợi)