You are on page 1of 5

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN


KHOA KHOA HỌC MÁY TÍNH

TRÍ TUỆ NHÂN TẠO (CS106)

HOMEWORK WEEK1 : SOKOBAN VÀ CÁC THUẬT TOÁN TÌM ĐƯỜNG

GVHD: Lương Ngọc Hoàng


Sinh viên thực hiện: Trần Trọng Nhân - 21522924

TP. Hồ Chí Minh, Tháng 3/2024


Trường Đại Học Công nghệ thông tin
Khoa Khoa Học Máy tính

Mục lục

Lời cảm ơn 2

1 Game Sokoban được mô hình hóa như thế nào ? 2

2 So sánh 3 thuật toán tìm đường đi 2


2.1 Depth first search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Breadth first search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 Uniform cost search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

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.

1 Game Sokoban được mô hình hóa như thế nào ?


• Trò chơi Sokoban được xây dựng với một nhân vật, đó là Sokoban, trong nhiệm vụ đẩy tất cả các
hộp vào các mục tiêu. Trò chơi được khởi tạo với nhiều bản đồ được cung cấp, trong đó "#" là
tường, "B" là các hộp, "." là các mục tiêu, " " là không gian trống và "&" là vị trí khởi tạo cho
Sokoban trong trò chơi.

• 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.

2 So sánh 3 thuật toán tìm đường đi

2.1 Depth first search


• Thuật toán Depth first search (DFS) là thuật toán duy nhất được set up trong auto mode.

• 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

2.2 Breadth first search


• Thuật toán tìm kiếm theo chiều rộng (Breadth-First Search, BFS) là một cách tiếp cận hiệu quả
để tìm kiếm lời giải. BFS bắt đầu từ một trạng thái ban đầu và tiến hành mở rộng tất cả các trạng
thái có thể từ trạng thái đó trước khi chuyển sang mở rộng ở cấp độ tiếp theo. Điều này đảm bảo
rằng khi tìm kiếm tìm thấy một solution, đó sẽ là solution ngắn nhất (nếu tính theo số bước di
chuyển) từ trạng thái bắt đầu đến trạng thái kết thúc. Điều này khắc phục được một nhược điểm
lớn của DFS, đó là việc tìm ra các solution dài và không tối ưu.

• Cách Hoạt Động của BFS trong Sokoban:

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.

• Lợi ích của BFS:

* 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.

• Nhược điểm của BFS :

* 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

Hình 1: Level 3 của trò chơi sokoban

Kết quả của DFS: [r, r, d, l, d, r, d, l, l, D, R, l, l, d, l, U, r, r, r, d, r, r, u, L, r, d, l, l, L, r, r,


r, u, l, u, l, l, d, R, l, l, l, d, R, l, u, r, r, r, d, r, r, u, L, r, d, l, l, U, r, r, d, l, l, L, r, r, r, u, l, l, l,
l, l, d, R, R, R, l, l, l, u, r, r, r, r, r, d, L, r, u, l, l, l, l, l, U, d, r, r, r, r, r, d, l, L, r, r, u, l, l, l, l,
l, d, r, R, R, l, l, l, u, r, r, r, r, r, d, L, r, u, l, l, l, u, R, l, d, r, r, r, d, l, L, r, r, u, l, l, l, l, l, d, r,
R, R, l, l, l, u, r, r, r, r, r, d, L, r, u, l, l, l, u, r, u, r, u, l, l, u, L, r, r, r, d, l, d, d, l, d, r, r, r, d,
l, L, r, r, u, l, l, l, l, l, d, r, R, R, l, l, l, u, r, r, r, r, r, d, L, r, u, l, U, l, l, d, r, r, r, d, l, L, r, r, u,
l, l, l, l, l, d, r, R, R, l, l, l, u, r, r, r, r, r, d, L, r, u, l, l, l, u, r, r, U, l, d, r, d, r, d, l, L, r, r, u, l,
l, l, l, l, d, r, R, R, l, l, l, u, r, r, r, r, r, d, L, r, u, l, l, l, u, r, r, u, l, u, l, u, r, r, D, D, l, d, l, d, r,
r, r, d, l, L, r, r, u, l, l, l, u, r, u, r, D, l, l, d, r, d, r, r, u, L, r, d, l, l, L, r, r, r, u, l, u, l, l, d, R,
l, l, l, d, R, l, u, r, r, r, d, L, r, r, r, u, L, r, d, l, l, l, u, l, l, d, R, R, R, l, l, l, u, r, r, u, r, r, d, r, d, L, r, u, l, L]

Kết quả của BFS:


L, r, d, r, d, d, D, L, d, l, l, U, U, d, R

2.3 Uniform cost search


Thuật toán Uniform Cost Search (tìm kiếm chi phí đồng nhất) là một thuật toán tìm kiếm đường đi
trong đồ thị. Nó là một biến thể của thuật toán tìm kiếm theo chiều rộng (BFS), nhưng thay vì chọn
đỉnh gần nhất theo số lượng bước, nó chọn đỉnh gần nhất dựa trên chi phí đã thăm.
Cách hoạt động của thuật toán UCS như sau:

1. Bắt đầu từ đỉnh xuất phát và gán chi phí của nó là 0.

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

You might also like