1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Xây dựng game ô chữ 8 số dựa trên giải thuật tìm kiếm a

25 4 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

lOMoARcPSD|21993952 BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC KINH TẾ TP HỒ CHÍ MINH TRƯỜNG CƠNG NGHỆ VÀ THIẾT KẾ  ĐỒ ÁN MÔN HỌC ĐỀ TÀI: XÂY DỰNG GAME Ơ CHỮ SỐ DỰA TRÊN GIẢI THUẬT TÌM KIẾM A* Học phần: Trí Tuệ Nhân Tạo Nhóm Sinh Viên: PHAN TRẦN SƠN BẢO HỒ VIỄN TRIẾT Chuyên Ngành: KHOA HỌC DỮ LIỆU Khóa: K46 Giảng Viên: TS Đặng Ngọc Hồng Thành TP Hồ Chí Minh, Ngày 29 tháng năm 2022 lOMoARcPSD|21993952 MỤC LỤC MỤC LỤC CHƯƠNG TỔNG QUAN 1.1 Giới Thiệu Về Trị Chơi Ơ Chữ Số 1.2 Phát Biểu Bài Toán 1.3 Một Số Hướng Tiếp Cận Giải Quyết Bài Toán .2 CHƯƠNG GIẢI THUẬT TÌM KIẾM A* .3 2.1 Giới Thiệu Về Giải Thuật Tìm Kiếm A* 2.2 Ứng Dụng Giải Thuật Tìm Kiếm A* Cho Bài Tốn Ơ Chữ Số CHƯƠNG CÁC KẾT QUẢ THỰC NGHIỆM .7 3.1 Các Tình Huống 3.2 Phân Tích Đánh Giá CHƯƠNG KẾT LUẬN 21 4.1 Các Kết Quả Đạt Được 21 4.2 Những Hạn Chế Hướng Phát Triển 21 TÀI LIỆU THAM KHẢO 23 PHỤ LỤC .24 lOMoARcPSD|21993952 CHƯƠNG TỔNG QUAN 1.1 Giới Thiệu Về Trị Chơi Ơ Chữ Số  Trị chơi chữ số giống trị chơi xếp hình, có kích thước vng có kích thước 3*3, số từ đến (khơng trùng lặp) có ô trống Trạng thái ban đầu khởi tạo cách ngẫu nhiên (sắp xếp lộn xộn) Nhiệm vụ người chơi xếp lại ô (chỉ di chuyển bước theo chiều qua trái, qua phải, lên xuống dưới) cho đạt trạng thái đích bên nhanh bước di chuyển thứ hạng cao Goal State: 1.2 Phát Biểu Bài Tốn  Người chơi di chuyển trống qua trái, phải, lên xuống để đạt trạng thái đích Trong q trình di chuyển, có người chơi không chọn bước di chuyển tối ưu dẫn đến việc bước di chuyển để đạt trạng thái đích tăng tốn nhiều thời gian để đạt trạng thái đích Vi vậy, ta cần thuật để tối ưu bước di chuyển từ trạng thái ban đầu đến trạng thái đích 1.3 Một Số Hướng Tiếp Cận Giải Quyết Bài Tốn  Ta dùng thuật tốn tìm kiếm BFS, DFS, A*,… để giải toán tìm kiếm trạng thái puzzle Nhưng thuật tốn tìm kiếm khơng có thơng tin BFS, DFS,… để từ trạng thái ban đầu đến trạng thái đích lâu cần nhiều bước di chuyển để đạt thuật tốn duyệt trạng thái sinh từ trạng thái ban đầu Vì vậy, thuật tốn tìm kiếm có thơng tin Greedy, A*,… giúp ta giải tốn nhanh bước di chuyển so với thuật tốn tìm kiếm khơng có thơng tin Nhóm em chọn thuật tốn tìm kiếm có thơng tin A* dựa theo hàm đánh giá Heuristic để đánh giá tìm trạng thái tối ưu trạng thái mở rộng nên lOMoARcPSD|21993952 tối ưu bước di chuyển tiết kiệm thời gian giải cho tốn tìm trạng thái đích trị chơi chữ số lOMoARcPSD|21993952 CHƯƠNG GIẢI THUẬT TÌM KIẾM A* 2.1 Giới Thiệu Về Giải Thuật Tìm Kiếm A*     Thuật toán A* ví dụ Best-first search A* giải thuật tìm kiếm đồ thị, tìm đường từ đỉnh đến đỉnh đích có sử dụng hàm để ước lượng khoảng cách hay gọi hàm Heuristic Từ trạng thái A* xây dựng tất đường đi dùng hàm ước lượng khoảng cách (hàm Heuristic) để đánh giá đường tốt Tùy theo dạng khác mà hàm Heuristic đánh giá khác A* ln tìm đường ngắn tồn đường A* lưu giữ tập đường qua đồ thị, từ đỉnh bắt đầu đến đỉnh kết thúc, tập đỉnh tiếp lưu tập Open Thứ tự ưu tiên cho đường định hàm Heuristic đánh giá f(x) = g(x) + h(x) o g(x) chi chi phí đường từ điểm xuất phát thời điểm o h(x) hàm ước lượng chi phí từ đỉnh đến đỉnh đích o f(x) thường có giá trị thấp độ ưu tiên cao 2.2 Ứng Dụng Giải Thuật Tìm Kiếm A* Cho Bài Tốn Ơ Chữ Số   Thuật toán A* dựa vào hàm Heuristic để định thứ tự ưu tiên cho đường đi, f(x) nhỏ độ ưu tiên cao Thuật toán tiếp tục mở rộng xét trạng thái trạng thái chọn Đối với trạng thái có f(x) nhỏ thuật tốn xét tất trạng thái trạng thái với trạng thái chưa xét trước để chọn trạng thái có f(x) nhỏ Nếu trạng thái trùng với trạng thái đích thuật tốn kết thúc Cài đặt thuật toán: Begin Bước 1: Khởi tạo danh sách N push trạng thái ban đầu vào Bước 2: While: 2.1 Pop trạng thái đầu danh sách N 2.2 If trạng thái kết thúc: Hiển thị đường Stop 2.3 for trạng thái sinh từ với trạng thái Pop ra: Push trạng thái vào danh sách N cho N theo thứ tự tăng dần theo hàm đánh giá End  Ví dụ: lOMoARcPSD|21993952  Ta thấy từ trạng thái ban đầu, sinh trạng thái bên (lần lượt lên, sang trái xuống)  Vì trạng thái có f = nhỏ nên thuật toán chọn trạng thái tối ưu trạng thái (có f = 3) trạng thái con, tiếp tục tìm kiếm xét trạng thái từ trạng thái lOMoARcPSD|21993952  Tiếp đó, từ trạng thái tối ưu chọn sinh trạng thái ảnh có f = (di chuyển xuống) , f = (di chuyển sang phải), f = (di chuyển sang trái) f = (di chuyển lên), thuật tốn chọn trạng thái có f nhỏ f = từ trạng thái ảnh tiếp tục tìm kiếm từ trạng thái lOMoARcPSD|21993952  Mở rộng ba trạng thái từ trạng thái tối ưu chọn, thuật tốn chọn trạng thái có f nhỏ f = (nhỏ trạng thái cách di chuyển lên) đạt trạng thái đích u cầu kết thúc thuật tốn lOMoARcPSD|21993952 CHƯƠNG CÁC KẾT QUẢ THỰC NGHIỆM 3.1 Các Tình Huống  Chạy Sample 1: Puzzle [[1,2,3][7,4,6][5,0,8]] o Chạy chương trình: o Kết chương trình: Thuật tốn A* giải Sample với tổng số bước di chuyển tổng số trạng thái duyệt 8 lOMoARcPSD|21993952  Chạy Sample 2: Puzzle [[1,2,3][4,5,6][8,7,0]] o Chạy chương trình: o Kết chương trình: Thuật tốn A* khơng thể giải Sample lOMoARcPSD|21993952 3.2 Phân Tích Đánh Giá  Cây biểu diễn phân tích Sample 1: o Link Drive: https://drive.google.com/file/d/1RMudMRlMJE-GxGkmhhvGSAru1J4vfJO/view?usp=sharing o Mở rộng lựa chọn trạng thái tối ưu lần 1: 10 lOMoARcPSD|21993952  Có trạng thái mở rộng từ trạng thái ban đầu từ trái sang phải xuống, sang phải sang trái Push trạng thái vào PriorityQueue Số vị trí sai trạng thái so với trạng thái đích từ trái sang phải 4, Từ đó, ta có f trạng thái từ trái sang phải 5,  => Pop trạng thái có f nhỏ (f = 4: sang trái) Kiểm tra: Chưa trùng trạng thái đích => Tiếp tục o Mở rộng chọn trạng thái tối ưu lần 2: 11 lOMoARcPSD|21993952  Có trạng thái mở rộng từ trạng thái tối ưu sau Pop: từ trái sang phải xuống sang phải Tiếp tục Push trạng thái vào PriorityQueue Số vị trí sai trạng thái so với trạng thái đích Từ đó, ta có f trạng thái  => Pop trạng thái có f nhỏ (f = 5) Kiểm tra: Chưa trùng trạng thái đích => Tiếp tục o Mở rộng chọn trạng thái tối ưu lần 3:  Có trạng thái mở rộng từ trạng thái tối ưu sau Pop: từ trái sang phải xuống sang trái Tiếp tục Push trạng thái vào PriorityQueue Số vị trí sai trạng thái so với trạng thái đích từ trái sang phải Từ đó, ta có f trạng thái  => Pop trạng thái có f nhỏ (f = 5) ảnh trên, trạng thái Push vào PriorityQueue trước nên Pop trước Kiểm tra: Chưa trùng trạng thái đích => Tiếp tục o Mở rộng chọn trạng thái tối ưu lần 4: 12 lOMoARcPSD|21993952  Có trạng thái mở rộng từ trạng thái tối ưu sau Pop: từ trái sang phải xuống, lên, sang trái sang phải Tiếp tục Push trạng thái vào PriorityQueue Số vị trí sai trạng thái so với trạng thái đích từ trái sang phải 5, 4, 5, Từ đó, ta có f trạng thái 7, 6, 7,  => Pop trạng thái có f nhỏ (f = 5) ảnh Kiểm tra: Chưa trùng trạng thái đích => Tiếp tục o Mở rộng chọn trạng thái tối ưu lần 5:  Có trạng thái mở rộng từ trạng thái tối ưu sau Pop: từ trái sang phải sang trái, lên xuống Tiếp tục Push trạng thái vào PriorityQueue Số vị trí sai trạng thái so với trạng thái đích từ trái sang phải 2, 4, Từ đó, ta có f trạng thái 5, 7,  => Pop trạng thái có f nhỏ (f = 5) ảnh Kiểm tra: Chưa trùng trạng thái đích => Tiếp tục o Mở rộng chọn trạng thái tối ưu lần 6: 13 Downloaded by tr?n hi?n (vuchinhhp23@gmail.com) lOMoARcPSD|21993952  Có trạng thái mở rộng từ trạng thái tối ưu sau Pop: từ trái sang phải xuống, lên, sang trái sang phải Tiếp tục Push trạng thái vào PriorityQueue Số vị trí sai trạng thái so với trạng thái đích từ trái sang phải 3, 1, 3, Từ đó, ta có f trạng thái 7, 5, 7,  => Pop trạng thái có f nhỏ (f = 5) ảnh Kiểm tra: Chưa trùng trạng thái đích => Tiếp tục o Mở rộng chọn trạng thái tối ưu lần 7: 14 Downloaded by tr?n hi?n (vuchinhhp23@gmail.com) lOMoARcPSD|21993952   Có trạng thái mở rộng từ trạng thái tối ưu sau Pop: từ trái sang phải xuống, sang trái sang phải Tiếp tục Push trạng thái vào PriorityQueue Số vị trí sai trạng thái so với trạng thái đích từ trái sang phải 2, 2, Từ đó, ta có f trạng thái 7, 7,  => Pop trạng thái có f nhỏ (f = 5) ảnh Kiểm tra: Trùng trạng thái đích => Kết thúc q trình tìm kiếm Cây biểu diễn phân tích Sample 2: o Link Drive: https://drive.google.com/file/d/138Nmmbwl8gzn6Y1CgDJD2dcsuP6aS03S /view?usp=sharing 15 Downloaded by tr?n hi?n (vuchinhhp23@gmail.com) lOMoARcPSD|21993952 o Mở rộng lựa chọn trạng thái tối ưu lần thứ 1:  Có trạng thái mở rộng từ trạng thái ban đầu từ trái sang phải sang phải xuống Push trạng thái vào 16 Downloaded by tr?n hi?n (vuchinhhp23@gmail.com) lOMoARcPSD|21993952 PriorityQueue Số vị trí sai trạng thái so với trạng thái đích từ trái sang phải va Từ đó, ta có f trạng thái từ trái sang phải  ⇒Pop trạng thái có f nhỏ (f = 3: sang phải) Kiểm tra: Chưa trùng trạng thái đích => Tiếp tục o Mở rộng lựa chọn trạng thái tối ưu lần thứ 2:  Có trạng thái mở rộng từ trạng thái tối ưu sau Pop: từ trái sang phải xuống, sang phải sang trái Tiếp tục Push trạng thái vào PriorityQueue Số vị trí sai trạng thái so với trạng thái đích từ trái sang phải 3, Từ đó, ta có f trạng thái từ trái sang phải 5,  ⇒Pop trạng thái có f nhỏ (f = 3: sang phải) Kiểm tra: Chưa trùng trạng thái đích => Tiếp tục o Mở rộng lựa chọn trạng thái tối ưu lần thứ 3: 17 Downloaded by tr?n hi?n (vuchinhhp23@gmail.com) lOMoARcPSD|21993952  Có trạng thái mở rộng từ trạng thái tối ưu sau Pop: từ trái sang phải xuống sang trái Tiếp tục Push trạng thái vào PriorityQueue Số vị trí sai trạng thái so với trạng thái đích từ trái sang phải Từ đó, ta có f trạng thái từ trái sang phải  ⇒ Pop trạng thái có f nhỏ (f = 4) Kiểm tra: Chưa trùng trạng thái đích => Tiếp tục  Lúc có hai trạng thái có f = là:  Trạng thái A: [[1,2,3][4,5,6][8,7,0]] (Trùng lặp trạng thái ban đầu ⇒ Tạm thời bỏ qua, đề cập sau để phục vụ cho việc giải thích thuật tốn A* khơng giải Sample 2)  Trạng thái B: [[1,2,3][4,5,0][8,7,6]] (Chọn để mở rộng lựa chọn trạng thái tối ưu lần thứ 4) o Mở rộng lựa chọn trạng thái tối ưu lần thứ 4: 18 Downloaded by tr?n hi?n (vuchinhhp23@gmail.com) lOMoARcPSD|21993952  Có trạng thái mở rộng từ trạng thái B tối ưu sau Pop: từ trái sang phải sang phải, lên xuống Tiếp tục Push trạng thái vào PriorityQueue Số vị trí sai trạng thái so với trạng thái đích từ trái sang phải 4, Từ đó, ta có f trạng thái từ trái sang phải 6,  ⇒ Pop trạng thái có f nhỏ (Trạng thái C: [[1,2,3][4,5,6] [8,7,0]] với f = 4) Kiểm tra: Chưa trùng trạng thái đích => Tiếp tục o Để ý ta thấy trạng thái A trạng thái C có dạng [[1,2,3][4,5,6] [8,7,0]], trùng lặp với trạng thái ban đầu Sample khiến cho thuật toán rơi vào vịng lặp vơ hạn 19 Downloaded by tr?n hi?n (vuchinhhp23@gmail.com) lOMoARcPSD|21993952 o ⇒Lý giải thuật tốn A* không đủ tối ưu để giải Sample [[1,2,3][4,5,6][8,7,0]] bị rơi vào vịng lặp vơ hạn khơng thể tìm cách giải thích hợp để giải toán 20 Downloaded by tr?n hi?n (vuchinhhp23@gmail.com) lOMoARcPSD|21993952 CHƯƠNG KẾT LUẬN 4.1 Các Kết Quả Đạt Được   Nhận xét: o A* có tính “đầy đủ” (hồn chỉnh) - có nghĩa ln tìm thấy lời giải tốn có lời giải (chưa xét đến giới hạn thời gian xử lý nhớ)  Nếu không gian trạng thái hữu hạn có giải pháp để tránh việc xét lặp lại trạng thái, giải thuật A* hồn chỉnh (tìm lời giải) - khơng đảm bảo tối ưu  Nếu không gian trạng thái hữu hạn khơng có giải pháp để tránh việc xét lặp lại trạng thái, giải thuật A* khơng hồn chỉnh (khơng đảm bảo tìm lời giải)  Nếu không gian trạng thái vô hạn, giải thuật A* khơng hồn chỉnh (khơng đảm bảo tìm lời giải) o A* cịn có tính “tối ưu” Khơng có thuật tốn sử dụng hàm đánh giá heuristic mà phải mở rộng nút A*, A* có tính hiệu cách tối ưu  Muốn A* tối ưu hàm h(n) phải có tính chấp nhận - tức khơng đánh giá cao chi phí nhỏ thực việc tới đích (trong trường hợp tập đóng)  Nếu khơng dùng tập đóng, h(n) phải có tính đơn điệu - tức khơng đánh giá chi phí từ nút tới nút kề cao chi phí thực  Một cách hình thức, m nút n thì: h(n)

Ngày đăng: 09/05/2023, 21:40

Xem thêm:

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

TÀI LIỆU LIÊN QUAN

w