Professional Documents
Culture Documents
Mục lục
Lời cảm ơn 2
Lời kết 4
Tài liệu 4
Bài tập về nhà Trí tuệ nhân tạo (CS106) - Niên khóa 2023-2024 Trang 1/4
Trường Đại Học Công nghệ thông tin
Khoa Khoa Học Máy tính
Lời cảm ơn
Đầu tiên, em xin được gửi lời cảm ơn đến giảng viên là thầy Lương Ngọc Hoàng đã giúp em thực
hiện bài tập này. Nhờ sự giúp đỡ tận tình của thầy, em đã vượt qua những khúc mắc, khó khăn trong
suốt quá trình thực hiện bài tập, từ đó hoàn thành đúng tiến độ của môn học và cho ra sản phẩm chất
lượng.
• Trò chơi sẽ kết thúc khi tất cả các hộp được đặt vào vị trí đúng của chúng (các mục tiêu).
• Trạng thái của trò chơi: Trạng thái của trò chơi bao gồm vị trí hiện tại của Sokoban và các hộp
trên bản đồ.
• Hành động: Các hành động mà Sokoban có thể thực hiện, bao gồm di chuyển lên, xuống, sang trái,
sang phải và đẩy hộp.
• Hàm kế thừa: Hàm này xác định các trạng thái mới của trò chơi sau mỗi hành động của Sokoban.
Nó xác định vị trí mới của Sokoban và hộp sau khi thực hiện một hành động.
• Hàm đánh giá: Một hàm để đánh giá mức độ hoàn thành của trò chơi, có thể dùng để tối ưu hóa
hoặc đưa ra quyết định về hướng tiếp theo của Sokoban.
• Thuật toán DFS lấy ý tưởng từ backtracking, nó liên quan đến việc tìm kiếm toàn bộ các nút bằng
cách di chuyển về phía trước, nếu không tìm được lời giải hoặc trạng thái hiện tại không dẫn đến
solution, quay lại trạng thái trước đó và thử một hướng di chuyển khác.. Ưu điểm của việc sử dụng
DFS trong trò chơi được mô hình hóa này là câu trả lời có thể được tìm thấy nhanh chóng
• Tuy nhiên, DFS không đảm bảo tìm kiếm một solution tối ưu, vì nó có thể bị rơi vào vòng lặp hoặc
đi vào các nhánh không cần thiết của không gian trạng thái trước khi tìm ra một solution. Điều
này có thể dẫn đến việc tìm kiếm một solution dài và không hiệu quả, đặc biệt là trong các trạng
thái trò chơi Sokoban phức tạp.
• Mặc dù vậy, DFS vẫn có thể là một phương tiện hiệu quả để khám phá không gian trạng thái của
trò chơi Sokoban, đặc biệt là khi không cần quan tâm đến tối ưu hóa chi phí của solution. Nó có
thể nhanh chóng tìm ra một solution khả thi, nhất là đối với các bài toán Sokoban đơn giản.
Bài tập về nhà Trí tuệ nhân tạo (CS106) - Niên khóa 2023-2024 Trang 2/4
Trường Đại Học Công nghệ thông tin
Khoa Khoa Học Máy tính
1. Khởi Tạo: Bắt đầu từ trạng thái ban đầu của trò chơi, trong đó vị trí của các khối và người
chơi được xác định rõ ràng.
2. Khởi Tạo Hàng đợi: Sử dụng một hàng đợi (được thực hiện bằng cách sử dụng một deque hoặc
queue) để lưu trữ các trạng thái được mở rộng. Trạng thái ban đầu được thêm vào hàng đợi.
3. Mở rộng Trạng Thái: Lấy trạng thái đầu tiên ra khỏi hàng đợi (pop the leftmost element), và
mở rộng tất cả các trạng thái có thể tiếp theo từ trạng thái đó bằng cách di chuyển người chơi
trong bốn hướng có thể.
4. Kiểm Tra Đích và Loại Trừ Trạng Thái Lặp: Sau mỗi bước di chuyển, kiểm tra xem tất cả
các khối có được đặt ở vị trí mục tiêu hay không. Đồng thời, kiểm tra xem trạng thái mới có
được thăm qua trước đó hay không để tránh lặp.
5. Lặp Lại cho đến khi Tìm Thấy solution: Tiếp tục quy trình này, mở rộng từng cấp độ của
không gian trạng thái theo từng bước, cho đến khi tìm thấy một solution hoặc xác định được
rằng không có solution nào tồn tại.
* Tìm Kiếm Tối Ưu: BFS đảm bảo tìm ra giải pháp ngắn nhất (tối ưu về số bước di chuyển)
đến vấn đề, một điều mà DFS không thể đảm bảo.
* Đơn Giản và Hiệu Quả: Với cấu trúc dữ liệu hàng đợi đơn giản, BFS dễ dàng triển khai và
duy trì, đặc biệt trong các trường hợp cần tìm giải pháp ngắn nhất.
* Không gian trạng thái lớn: Tương tự như DFS, BFS có thể gặp khó khăn với không gian trạng
thái lớn, vì nó phải lưu trữ tất cả các trạng thái ở mỗi cấp độ mở rộng trong hàng đợi.
* Yêu cầu Bộ nhớ: Vì cần lưu trữ một số lượng lớn trạng thái trong hàng đợi, BFS có thể tiêu
tốn nhiều bộ nhớ, đặc biệt là với các trò chơi có không gian trạng thái rộng lớn.
Cụ thể hơn, chúng ta có thể chọn một bản đồ nhất định trong trò chơi và xem xét kỹ hơn về hiệu quả
chi tiết giữa DFS và BFS - bản đồ 3.
Bản đồ được mô tả như sau:
Bài tập về nhà Trí tuệ nhân tạo (CS106) - Niên khóa 2023-2024 Trang 3/4
Trường Đại Học Công nghệ thông tin
Khoa Khoa Học Máy tính
2. Lặp lại cho đến khi tìm được đỉnh đích hoặc không còn đỉnh nào có thể thăm được: Chọn đỉnh có
chi phí thấp nhất mà chưa được thăm. Thăm đỉnh đó và cập nhật chi phí của các đỉnh kề với nó
(nếu chi phí mới nhỏ hơn chi phí hiện tại).
3. Kết thúc khi tìm thấy đỉnh đích hoặc không còn đỉnh nào để thăm.
Thuật toán UCS đảm bảo tìm ra đường đi ngắn nhất từ đỉnh xuất phát đến mỗi đỉnh khác trong đồ thị,
với điều kiện là tất cả các trọng số trên cạnh đều không âm. Solution mà UCS đưa ra tương đồng với
BFS nhưng thực hiện nhanh hơn ( trên core Intel@ i7 ).
Tài liệu
[1] Artificial Intelligence: A Modern Approach (2009) - Russell and Peter Norvig
[2] Tri tue nhan tao = Thong minh + Giai thuat - Cao Hoang Tru
[3] Fuzzy Sets and Fuzzy Logic (1995) - George J. Klir and Bo Yuan
Bài tập về nhà Trí tuệ nhân tạo (CS106) - Niên khóa 2023-2024 Trang 4/4