frontier then return failure node ← POPfrontier add node.STATE to explored for each action in problem.ACTIONSnode.STATE do child ← CHILD-NODEproblem, node, action if child.STATE is not i
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
BÀI BÁO CÁO GIỮA KỲ
Người hướng dẫn:
Người thực hiện: Cao Thị Thùy Giang - 52200138
Nguyễn Hòa An - Trần Thị Thảo Nguyên - Đào Thụy Bảo Hân -
Lớp: 22050301 Khóa: 26
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023
Trang 2KHOA CÔNG NGHỆ THÔNG TIN
BÀI BÁO CÁO GIỮA KỲ MÔN TRÍ TUỆ NHÂN TẠO
Người hướng dẫn:
Người thực hiện: Cao Thị Thùy Giang - 52200138
Nguyễn Hòa An - Trần Thị Thảo Nguyên - Đào Thụy Bảo Hân -
Lớp: 22050301 Khóa: 26
Trang 3THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023
Trang 4Em xin chân thành cảm ơn
Trang 5BÀI BÁO CÁO ĐƯỢC HOÀN THÀNH
TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Chúng tôi xin cam đoan đây là bài báo cáo của riêng nhóm chúng tôi tôi Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực và chưa công bố dưới bất
kỳ hình thức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo
Nếu phát hiện có bất kỳ sự gian lận nào chúng tôi xin hoàn toàn chịu trách nhiệm về nội dung bài báo cáo của mình. Trường đại học Tôn Đức Thắng không liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có)
TP Hồ Chí Minh, ngày 13 tháng 03 năm 2024
Tác giả (ký tên và ghi rõ họ tên)
Trang 6PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN
Phần xác nhận của GV hướng dẫn
_ _ _ _ _
Tp Hồ Chí Minh, ngày tháng năm (ký và ghi họ tên)
Phần đánh giá của GV chấm bài
_ _ _ _ _
Tp Hồ Chí Minh, ngày tháng năm (ký và ghi họ tên)
Trang 9MỤC LỤC
Trang 10DANH MỤC BẢNG CHỮ CÁI VIẾT TẮT
• BFS: Breath – First Search –
• A*: A – Start
• UCS: Uniform – Cost – Search
Trang 11PHẦN 1: TÓM TẮT
I Vấn đề nghiên cứu
Các kiến thức đã được tiếp cận trong quá trình học môn trí tuệ nhân tạo
II Cách giải quyết vấn đề
o Tham khảo tài liệu trên internet
o Tham khảo slide bài giảng môn học và ghi chép trong quá trình học
o Áp dụng những hiểu biết qua các kiến thức đã được tiếp cận trong quá trình học tập
III Kết quả đạt được
o Hoàn thành các câu hỏi nội dung được đưa ra trong bài báo cáo
o Hệ thống lại toàn bộ những kiến thức đã được học trong suốt thời gian học tập
o Bảo đảm kiến thức nền tảng phục vụ cho các môn học sau cũng như công việc sau này
Trang 12PHẦN 2: NỘI DUNG
1 Câu hỏi 1: 8-Puzzle
Trò chơi 8-puzzle có mục tiêu là di chuyển các khối số từ trạng thái bắt đầu để
đạt đư c trạng thái kết quợ ả Trong đó:
• Trạng thái bắ ầt đu có th ể là một cách s p x p bắ ế ất kỳ 8 khối số và ô tr ng trên ốbàn c ờ
• Trạng thái đích là một trong hai cách sắp xếp như mô tả trong bảng sau
1.1 Mô hình hoá bài toán dưới dạng không gian tr ng thái ạ
• Trạng thái b ắt đầu: Bàn cờ được biểu diễn dưới dạng ma trận 3x3n, mỗi ô chứa các giá trị ngẫu nhiên gồm các phần t t ử ừ 1 đến 8, v i 1 là ô tr ng ớ ố
• Trạng thái đích: Ma trận 3x3 được s ắp xếp theo thứ tự tự 1 đến 8, với ô đầu tiên hoặc ô cu i cùng là ô trố ống theo như yêu cầu của đề bài
• Hành động: Di chuy n lên, xu ng, qua trái, qua ph i ể ố ả
• Chi phí đường đi: Mỗi bước di chuyển tiêu tốn 1 đơn vị, không di chuy n ểtiêu tốn 0 đơn vị
Trang 13• Ý tưởng thuật toán :
o Giả s ử thuật toán là 1 đồ thị G = (V, E) Th c hi n l p l ch duy t cho ự ệ ậ ị ệcác đỉnh của đồ th G Việc duyệt các đỉnh s được ưu tiên sao cho ị ẽ
đỉnh nào gần v i nó nhấ ẽớ t s được duyệt trư c ớ
• Giải thuật
o Bước 1: Lấy mộ ỉt đnh bất kỳ trong đồ thị thêm vào cuối hàng đợi
Trạng thái ban đầu
Trang 14o Bước 2: Lấy phân t u tiên cử đầ ủa hàng đợi và thêm nó vào danh sách
đã duyệt
o Bước 3: Tạo một danh sách các đỉnh liền k cề ủa đỉnh đang xét Thêm
những đỉnh không có trong danh sách đã duyệt vào cuối hàng đợi
o Bước 4: Tiếp tụ ặp lc l ại bước 2 và 3 cho đến khi hàng đợi trống
add node.STATE to explored
for each action in problem.ACTIONS(node.STATE) do
child ← CHILD-NODE(problem, node, action)
if child.STATE is not in explored or frontier then
if problem.GOAL-TEST(child.STATE) then return SOLUTION(child)
frontier ← INSERT(child, frontier) 1.2.2 Thuật toán A*
• Ý tưởng thuật toán
Thuật toán A* s t o mẽ ạ ột hàng đợi ưu tiên Tạo 1 hàm heuristic để tính chi phí sau mỗi lần thay đổ ạng thái kể cả i tr trạng thái ban đầu T ừ trạng thái
Trang 15ban đầu thực hiện di chuyển tất cả hoạt động có thể xảy ra, tính toán chi phí
và đưa vào hàng đợi Lấy trạng thái có chi phí thấp nhất ra khỏi hàng đợi để tiếp tục tính toán và thay đổi trạng thái cho đến khi đạt được trạng thái đích
• Giải thuật
o Bước 1: Xác định các trạng thái ti p theo có thế ể x y ra c a bài toán ả ủ
o Bước 2: So sánh xem trạng thái nào có chi phí đường đi ngắn nhấ ểt đ xác định trạng thái tiếp theo
o Bước 3: Tiếp tụ ặp lc l ại cho đến khi đạt được trạng thái đích
• Mã giả
Function AStartSearch(problem, h, g) returns list of actions and path cost explored ← an empty set
frontier ← a priority queue
startNode ← a node with STATE = problem.INTIAL-STATE, cost = 0, heuristic(start,goal)
if curr_state isGoal then
path ← an array empty
loop do
Trang 16if None(curr_node.parent) then return failure
append curr_node.action to path curr_node ← curr_node.parent return reverse of path add curr_state to explored
for each action in problem.ACTION(curr_state) succ_state ← problem.getResult(curr_state, action)
if succ_state not in explored then succ_cost ← curr_node.cost + problem.getCost(curr_state,action)
succ_node ← Node(succ_state,curr_node,action,succ_cost,heuristic(succ_state,goal)
frontier.INSERT(succ_node)
• Nhận xét
1.3 Mã ngu n ồ
1.3.1 Chương trình 1
o Input: trạng thái bắt đầu tu ỳ ý do người dùng nh p; tên thu t toán mong mu n ậ ậ ố
o Output: Danh sách actions để giải trò chơi (Left, Right, Up, Down); tổng chi phí
o Visualization: Sử dụng thư viện graphviz để ẽ đường đi từ trạ v ng thái bắ ầt đu đến trạng thái kết thúc
Trang 171.3.2 Chương trình 2
o Phát sinh ng u nhiên 1000 tr ng thái bẫ ạ ắt đầu
o Chạy thuật toán BFS và A* để tìm ra gi i pháp, tính t ng chi phí ả ổ
o Lấy trung bình chi phí của 1000 lần thí nghiệm cho mỗi thu t toán ậ
o Vẽ biểu đồ ột để đố c i sánh hi u suệ ất của các thuật toán
2 Câu 2 Pacman
Cài đặt các thuật toán thông tin để giúp pacman ăn hết các điểm mồi trong bản
đồ và đi qua bốn góc của bản đồ theo thứ tự bất kỳ
2.1 Mô hình hoá bài toán dưới dạng không gian trạng thái
2.2 Thuật toán UCS và A* để giải trò chơi.
2.2.1 Thuật toán UCS
o Ý tưởng thuật toán
▪ UCS sử d ng mụ ột hàng đợi ưu tiên để duy t các tr ng thái theo ệ ạthứ t ự tăng dần c a chi phí vủ ới trạng thái ban đầu được thêm vào hàng đợi trước tiên
▪ Mỗi lầ ặn l p, node v i chi phí th p nhớ ấ ất được đưa ra khỏi hàng đợi
để duyệt Các tr ng thái tiếp theo được thêm vào hàng đợi v i chi ạ ớphí được tính từ trạng thái hiện tại
o Giải thuật
▪ Bước 1: Thêm trạng thái ban đầu vào cuối hàng đợi ưu tiên
▪ Bước 2: Lấy phần t u tiên cử đầ ủa hàng đợi ưu tiên và thêm vào danh sách đã duyệt
▪ Bước 3: Tạo m t danh sách các trộ ạng thái k cề ủa trạng thái đang xét Thêm những trạng thái chưa được duyệt vào cuối hàng đợi ưu tiên với chi phí tính từ trạng thái ban đầu
Trang 18▪ Bước 4: Lặp lại từ Bước 2 đến khi hàng đợi trống
o Mã giả
Function UCSSearch(problem,start,goal) returns list of actions and path cost
explored ← an empty set
frontier ← a priority queue
startNode ← a node with STATE = problem.INTIAL-STATE,
if curr_state isGoal then
path ← an array empty
loop do
if None(curr_node.parent) then return failure
append curr_node.action to path curr_node ← curr_node.parent return reverse of path
add curr_state to explored for each action in problem.ACTION(curr_state) succ_state ← problem.getResult(curr_state, action)
if succ_state not in explored then succ_cost ← curr_node.cost + problem.getCost(curr_state,action)
Trang 19succ_node ← Node(succ_state,curr_node,action,succ_cost)
frontier.INSERT(succ_node)
o Nhận xét
2.2.2 Thuật toán A*
o Ý tưởng thuật toán
▪ A* sử d ng mụ ột hàng đợi ưu tiên để lưu trữ và duyệt các trạng thái
▪ Tạo một hàm heuristic để ước lượng chi phí t ng thái hi n ừ trạ ệ
tạ ếi đn trạng thái đích
▪ Chi phí tính toán c a A* s ủ ẽ được tính ừ t chi phí thực tế (tính từtrạng thái ban đầu đến trạng thái hiện tại) cộng v i heuristic ớ(ước lư ng từ trạng thái hiện tại đến trợ ạng thái đích)
▪ Mỗi lầ ặn l p, node v i chi phí th p nhớ ấ ất được đưa ra khỏi hàng đợi để duy t Các trạệ ng thái ti p theo được thêm vào hàng đợi ế
với chi phí được tính t ng thái hi n t i ừ trạ ệ ạ
o Giải thuật
▪ Bước 1: Thêm trạng thái ban đầu vào cuối hàng đợi ưu tiên
▪ Bước 2: Lấy phần t u tiên cử đầ ủa hàng đợi ưu tiên và thêm vào danh sách đã duyệt
▪ Bước 3: Tạo m t danh sách các trộ ạng thái k cề ủa trạng thái đang xét Thêm những trạng thái chưa được duyệt vào cuối hàng đợi ưu tiên với chi phí tính từ trạng thái ban đầu
▪ Bước 4: Lặp lại từ Bước 2 đến khi hàng đợi trống
o Mã giả
Trang 20Function AStartSearch(problem,start,goal) returns list of actions and path cost
explored ← an empty set frontier ← a priority queue startNode ← a node with STATE = problem.INTIAL-STATE, cost = 0, heuristic(start,goal)
frontier ← INSERT(startNode) loop do
if EMPTY?(frontier) then return failure curr_node ← POP(frontier) curr_state ← curr_node.state
if curr_state isGoal then path ← an array empty loop do
if None(curr_node.parent) then return failure append curr_node.actio n to path curr_node ← curr_node.parent
add curr_state to return reverse of path
explored
for each action in problem.ACTION(curr_state)succ_state ← problem.getResult(curr_state, action)
Trang 21if succ_state not in explored thensucc_cost ← curr_node.cost + problem.getCost(curr_state,action)
succ_node ← Node(succ_state,curr_node,action,succ_cost,heuristic(succ_state,goal)
2.3 Chương trình để thực thi các thuật toán
- Input: đường dẫn đến tập tin chứa bản đồ; tên thuật toán cần chạy
- Output: danh sách các actions (North, East, West, South, Stop) cần thực
hiện;
- tổng chi phí
- Cấu trúc bản đồ như sau:
o % là vật cản, tường, không thể qua
o P à vị trí ban đầu của pacman
o là vị trí điểm mồi, số lượng bất kỳ
o Các ô trống còn lại pacman có thể đi qua
Trang 22o Không có ma trong trò chơi
2.3.1 Phương pháp giải quyết
2.3.2 Mã nguồn
2.4 Visualization
Trực quan hoá các bước chạy của trò chơi trên màn hình console
3 Câu 3 Graphical Pacman
Trang 23TÀI LIỆU THAM KHẢO