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

Báo cáo chuyên đề học phần nhập môn trí tuệ nhân tạo đề tài áp dụng thuật toán a vào trò chơi ghép tranh

23 5 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

Thông tin cơ bản

Tiêu đề Áp Dụng Thuật Toán A* Vào Trò Chơi Ghép Tranh
Tác giả Vũ Thị Hoài Thu, Lê Thành Kiệt, Nguyễn Thị Thu Hương
Người hướng dẫn TS. Vũ Văn Định
Trường học Trường Đại Học Điện Lực
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo chuyên đề
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 23
Dung lượng 636,9 KB

Nội dung

Mô phỏng các bước di chuyển của game...11Hình 2.1.Ví dụ minh họa về thuật toán A*...13Hình 3.1.Hình ảnh trạng thái ban đầu...20 Trang 6 LỜI NÓI ĐẦUNgày nay, chúng ra đã bước vào thế kỉ

Trang 1

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN NHẬP MÔN TRÍ TUỆ NHÂN TẠO

ĐỀ TÀI:

ÁP DỤNG THUẬT TOÁN A* VÀO TRÒ CHƠI GHÉP TRANH

Sinh viên thực hiện : VŨ THỊ HOÀI THU

LÊ THÀNH KIỆT NGUYỄN THỊ THU HƯƠNG Giảng viên hướng dẫn : TS VŨ VĂN ĐỊNH

Hà Nội, tháng 12 năm 2023

Trang 2

PHIẾU CHẤM ĐIỂM STT Họ và tên sinh viên Nội dung thực hiện Điểm Chữ ký

Trang 3

MỤC LỤC

LỜI NÓI ĐẦU 5

CHƯƠNG 1: GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO 6

1.1 Giới thiệu về trí tuệ nhân tạo 6

1.2 Trí tuệ nhân tạo là gì? 6

1.3 Lịch sửa phát triển 7

1.4 Các lĩnh vực của AI 8

CHƯƠNG 2: GIỚI THIỆU BÀI TOÁN GHÉP TRANH VÀ THUẬT TOÁN A*10 2.1.Giới thiệu về bài toán ghép tranh 10

2.2 Thuật toán A* 11

2.2.1 Giới thiệu về thuật toán 11

2.2.2 Mô tả thuật toán 12

2.2.3 Cài đặt thuật toán 12

2.2.4 Ví dụ minh họa 13

2.2.5 Đánh giá thuật toán 14

CHƯƠNG 3: ÁP DỤNG THUẬT TOÁN VÀO TRÒ CHƠI GHÉP TRANH 15 3.1 Bài toán 15

3.2 Minh họa về trò chơi 16

3.3 Cài đặt chương trình 20

KẾT LUẬN 21

TÀI LIỆU THAM KHẢO 22

Trang 5

DANH MỤC HÌNH ẢNH

Hình 1.1.Mô phỏng trạng thái bắt đầu và kết thúc 10

Hình 1.2 Mô phỏng các bước di chuyển của game 11

Hình 2.1.Ví dụ minh họa về thuật toán A* 13

Hình 3.1.Hình ảnh trạng thái ban đầu 20

Hình 3.2.Hình ảnh trạng thái đích 20

Trang 6

LỜI NÓI ĐẦU

Ngày nay, chúng ra đã bước vào thế kỉ 21, kỷ nguyên của Công nghệ thôngtin, đặc biệt là trí tuệ nhân tạo là yếu tố quan trọng nhất quyết định sự thành côngcủa mỗi ngành hay mỗi quốc gia Trí tuệ nhân tạo đã và đang làm thay đổi cuộcsống của chúng ta, với sự phát triển mạnh mẽ của việc áp dụng các nghiên cứu vềtrí tuệ nhân tạo áp dụng cho cuộc sống Tất cả các ngành đều có thể áp dụng trí tuệnhân tạo một cách rộng rãi Việc áp dụng trí tuệ nhân tạo để giải quyết các vấn đềtrong xã hội và việc phát triển kinh tế đang được nhà nước khuyến khích và đầu tư

Tại Việt Nam, nhà nước đang đi vào phát triển dịch vụ và đầu tư mạnh mẽvào trí tuệ nhân tạo Vì thế, đó là một xu thế hot và được ưa chuộng hiện nay

Chính vì vậy, chúng em đã lựa chọn đề tài “Áp dụng thuật toán A* vào trò chơi ghép tranh” Game ghép tranh (N-Puzzle) là một trò chơi khá hay và trí tuệ.

Bài toán N-Puzzle là vấn đề cổ điển cho mô hình thuật toán liên quan đến trí tuệnhân tạo, bài toán đặt ra là phải tìm đường đi từ trạng thái hiện tại tới trạng tháiđích Ở đây ra xét bài toán ghép tranh với giao diện đơn giản nhất là bài toán 8 số.Bài toán gồm một ma trận 3x3 các tranh được đánh thứ tự từ 1 đến 8 Nhiệm vụ của

ta là phải sắp xếp từ vị trí 0 với các ô lân cận sao cho đưa chúng trở về đúng thứ tự(trạng thái đích)

Với việc chọn đề tài “Áp dụng thuật toán A* vào trò chơi ghép tranh”

cho học phần “Nhập môn trí tuệ nhân tao” Chúng em đã nhận được sự giảng dạytrực tiếp và sự hướng dẫn nhiệt tình của thầy Vũ Văn Định trong đề tài này Mặc dù

đề tài đã được hoàn thành, nhưng chắc chắn không thể tránh khỏi những thiết sót,

vì vậy chúng em mong muốn nhận được các ý kiến đóng góp của các thầy cô để cóthể hoàn chỉnh đề tài hơn

Chúng em xin chân thành cảm ơn!

Trang 7

CHƯƠNG 1: GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO 1.1 Giới thiệu về trí tuệ nhân tạo

Chắc hẳn trong đời sống chúng ta đã từng được nghe nói đến trí tuệ nhân tạo.Nhiều người đã biết nó là gì, đã biết về nó và khai thác, ứng dụng nó để tạo ra một

số thành tựu nhất định Bên cạnh đó nhiều người vẫn chưa hiểu biết về trí tuệ nhântạo Vậy trí tuệ nhân tạo là gì? Tiềm năng và tương lai của trí tuệ nhân tạo ra sao?

1.2 Trí tuệ nhân tạo là gì?

Để hiểu về trí tuệ nhân tạo (artificial intelligence) là gì thì chúng ra nên bắtđầu với khái niện sự bay nhân tạo (flying machinese)

Đã từ lâu, loài người mong muốn làm ra một cái máy bay mà có thể dichuyển được trên không trung mà không phụ thuộc vào địa hình ở dưới mặt đất haynói cách khác là máy có thể bay được Những chiếc máy biết bay được thiết kế theonguyên lý “vỗ cánh” như con chim chỉ có thể bay được quãng đường rất ngắn vàlịch sử hàng không thực sự sang một trang mới kể từ anh em nhà Wright thiết kếmáy bay dựa trên các nguyên lý của khí động lực học (aerodynamics)

Quay lại câu hỏi trí tuệ nhân tạo là gì? Trí tuệ nhân tạo là sự thông minh củamáy do con người tạo ra Ngay từ chiếc máy tính điện tử đầu tiên ra đời, các nhàkhoa học máy tính đã hướng đến phát triển hệ thống máy tính (gồm cả phần cứng

và phần mềm) sao cho nó có khả năng thông minh như loài người Có nhiều cáchtiếp cận để làm ra trí thông minh của máy, chẳng hạn là nghiên cứu cách bộ nãongười sản sinh ra trí thông minh của loài người như thế nào rồi ta bắt chước nguyên

lý đó, nhưng cũng có những cách khác sử dụng nguyên lý hoàn toàn khác với cáchsản sinh ra trí thông minh của loài người mà vẫn làm ra cái máy thông minh nhưhoặc hơn người

Như vậy, trí tuệ nhân tạo ở đây là nói đến khả năng của máy khi thực hiệncác công việc mà con người thường phải xử lý và khi dáng vẻ ứng xử hoặc kết quả

Trang 8

thực hiện của máy là tốt hơn hoặc tương đương với con người thì ta gọi đó là máythông minh hay máy đó có trí thông minh Hay nói cách khác, đánh giá sự thôngminh của máy không phải dựa trên nguyên lý nó thực hiện nhiệm vụ đó có giốngcách con người thực hiện hay không mà dựa trên kết quả hoặc dáng vẻ ứng xử bênngoài của nó có giống với kết quả hoặc dáng vẻ ứng xử của con người hay không.

1.3 Lịch sửa phát triển

Vào năm 1943, Warren McCulioch và Walter Pitts bắt đầu thực hiện nghiêncứu ba cơ sở lý thuyết cơ bản: triết học cơ bản và chức năng của các noron thầnkinh; phân tích các mệnh đề logic và lý thuyết dự đoán của Turing Các tác giả đãnghiên cứu đề xuất mô hình noron nhân tạo, mỗi noron đặc trưng bởi hai trạng thái

“bật”, “tắt” và phát hiện mạng noron có khả năng học

Thuật ngữ “Trí tuệ nhân tạo” (Artificial Intelligence – AI) được thiết lập bởiJohn McCarthy tại Hội thảo đầu tiên về chủ đề này vào mùa hè năm 1956 Đồngthời, ông cũng đề xuất ngôn ngữ lập trình Lisp – một trong những ngôn ngữ lậptrình hàm tiêu biểu, được sử dụng trong lĩnh vực AI Sau đó, Alan Turing đưa ra

“Turing test” như là một phương pháp kiểm chứng hành vi thông minh

Thập kỷ 60, 70 Joel Moses viết chương trình Macsyma – chương trình toánhọc sử dụng cơ sở tri thức đầu tiên thành công Marvin Minsky và Seymour Papertđưa ra các chứng minh đầu tiên về giới hạn của các mạng nơ-ron đơn giản Ngônngữ lập trình logic Prolog ra đời và được phát triển bởi Alain Colmerauer TedShortliffe xây dựng thành công một số hệ chuyên gia đầu tiên trợ giúp chuẩn đoántrong y học, các hệ thống này sử dụng ngôn ngữ luật để biểu diễn tri thức và suydiễn

Vào đầu những năm 1980, những nghiên cứu thành công liên quan đến AInhư các hệ chuyên gia (expert systems) – một dạng của chương trình AI mô phỏngtri thức và các kỹ năng của một hoặc nhiều chuyên gia con người

Trang 9

Vào những năm đầu 1990 và đầu thế ký 21, AI đã đạt được những thành tựu

to lớn, AI được áp dựng trong logic, khai phá dữ liệu, chẩn đoán y học và nhiềulĩnh vực ứng dụng khác trong công nghiệp Sự thành công dựa vào nhiều yếu tố:tăng khả năng tính toán của máy tính, tập trung giải quyết các bài toán con cụ thể

và một sự chuyển giao mới của các nhà nghiên cứu cho các phương pháp toán họcvững chắc và chuẩn khoa học chính xác

1.4 Các lĩnh vực của AI

- Lập luận, suy diễn tự động: Khái niệm lập luận (reasoning), và suy diễn(reference) được sử dụng rất phổ biến trong lĩnh vực AI Lập luận là suy diễnlogic, dùng để chỉ một tiến trình rút ra kết luận (tri thức mới) từ những giảthiết đã cho (được biểu diễn dưới dạng cơ sở tri thức) Như vậy, để thực hiệnlập luận người ta cần có các phương pháp lưu trữ cơ sở tri thức và các thủ tụclập luận trên cơ sở tri thức đó

- Biểu diễn tri thức: Muốn máy tính có thể lưu trữ và xử lý tri thức thì cần cócác phương pháp biểu diễn tri thức Các phương pháp biểu diễn tri thức ởđây bao gồm các ngôn ngữ biểu diễn và các kỹ thuật xử lý tri thức Một ngônngữ biểu diễn tri thức được đánh giá là “tốt” nếu nó có tính biểu đạt cao vàcác tính hiệu quả của thuật toán lập luận trên ngôn ngữ đó Tính biểu đạt củangôn ngữ thể hiện khả năng biểu diễn một phạm vi rộng lớn các thông tintrong một miền ứng dụng Hiệu quả của các thuật toán lập luận thể hiện chiphí về thời gian và không gian dành cho việc lập luận Tuy nhiên, hai yếu tốnày dường như đối nghịch nhau, tức là nếu ngôn ngữ có tính biểu đạt cao thìthuật toán lập luận trên đó sẽ có độ phức tạp lớn và ngược lại, ngôn ngữ đơngiản, có tính biểu đạt thấp thì thuật toán lập luận trên đó sẽ có hiệu quả cao

Do đó, một thách thức lớn trong lĩnh vực AI là xây dựng các ngôn ngữ biểudiễn tri thức mà có thể cân bằng hai yếu tố này, tức là ngôn ngữ có tình biểuđạt đủ tốt và có thể lập luận hiệu quả

Trang 10

- Lập kế hoạch: Khả năng suy ra các mục đích cần đạt được đối với các nhiệm

vụ đưa ra, và xác định dãy các hoạt động cần thực hiện để đạt được mụcđích

- Học máy (Machine Learning – ML) là một lĩnh vực của trí tuệ nhân tạo (AItập trung vào việc máy tính học từ dữ liệu và kinh nghiệm để tự cải thiệnhiệu suất mà không cần lập trình cụ thể Qua quá trình này, máy tính xácđịnh mô hình và quy luật từ dữ liệu, giúp dự đoán và ra quyết định một cách

tự động Học máy có ứng dụng rộng rãi trong nhiều lĩnh vực như thị giácmáy tính, xử lý ngôn ngữ tự nhiên, y tế, tài chính, quảng cáo trực tuyến vànhiều lĩnh vực Đặc biệt là deep learning là một phân nhóm quan trọng củahọc máy tập trung vào việc xây dựng và huấn luyện các mô hình dạng nơ-ronsâu để tự động học và hiểu dữ liệu phức tạp Điều này giúp cải thiện hiệusuất và đem lại đột phá trong khả năng hiểu và xử lý thông tin từ dữ liệu lớn

- Xử lý ngôn ngữ tự nhiên: là một nhánh của AI, tập trung vào các ứng dụngtrên ngôn ngữ của con người Các ứng dụng trong nhận dạng tiếng nói, nhậndạng chữ viết, dịch tự động, tìm kiếm thông tin,…

- Robotics: là lĩnh vực nghiên cứu và phát triển các robot hoặc máy tự động,tập trung vào thiết kế, xây dựng, và lập trình các thiết bị tự động có khả năngthực hiện các tác vụ và nhiệm vụ một cách độc lập hoặc theo hướng dẫn.Robotics sử dụng nhiều nguyên tắc từ Trí tuệ nhân tạo, cơ khí, điện tử và tựđộng hóa để phát triển các robot có khả năng tương tác với môi trường xungquanh

Trang 11

CHƯƠNG 2: GIỚI THIỆU BÀI TOÁN GHÉP TRANH VÀ THUẬT TOÁN A* 2.1.Giới thiệu về bài toán ghép tranh

Game ghép tranh (N-Puzzle) là một trò chơi khá hay về trí tuệ, nó được biếtđến với các tên khác như “Game puzzle”, “Mystic Square” nằm trong nhóm các bàitoán puzzle (xếp hình, đẩy hộp,…) Trò chơi N-Puzzle là một trò chơi giải đố trí tuệdựa trên việc di chuyển các mảnh ghép để tạo thành một hình ảnh hoàn chỉnh từmột trạng thái ban đầu đã bị xáo trộn Trong trò chơi này, bản đồ được chia thànhmột lưới vuông hay một ma trận vuông với khích thước NxN, tạo thành N^2 mảnhghép

Mục tiêu của trò chơi là di chuyển các mảnh ghép từ trạng thái ban đầu(trạng thái đã bị xáo trộn) đến trạng thái cuối cùng (trạng thái đã được sắp xếp đúngthứ tự) Trong mỗi bước, bạn chỉ có thể di chuyển một mảnh ghép vào ô trống theomột trong các hướng trên, xuống, trái, phải

Có nhiều cách để giải quyết trò chơi N-Puzzle, bao gồm sử dụng các thuậttoán thông minh như A* (A star), BFS (Breadth-First Search), DFS (Depth-FirstSearch) hoặc các phương pháp heuristic như Manhattan distance

 Mô phỏng trạng thái bắt đầu và kết thúc

Trang 12

Hình 1.1.Mô phỏng trạng thái bắt đầu và kết thúc

 Mô phỏng các bước di chuyển

Hình 1.2 Mô phỏng các bước di chuyển của game

2.2 Thuật toán A*

2.2.1 Giới thiệu về thuật toán

Trong khoa học máy tính A*, là thuật toán tìm kiếm đồ thị Thuật toán nàytìm một đường từ nút khởi đầu tới nút đích cho trước (hoặc tới nút thỏa mãn mộtđiều kiện đích) Thuật toán này sử dụng “đánh giá Heuristic” để xếp loại từng núttheo ước lượng về tuyến đường tốt nhất Thuật toán này duyệt các nút theo thứ tựđánh giá của Heuristic.Do đó, thuật toán A* là một ví dụ của tìm kiếm theo lựachọn tốt nhất (Best-first search)

Thuật toán A* được mô tả lần đầu vào năm 1968 bởi Peter Hart, NilsNilsson, và Bertram Raphael Trong bài báo của họ, thuật toán được gọi là thuậttoán A; khi sử dụng thuật toán này với một đánh giá heuristic thích hợp sẽ thu đượchoạt động tối ưu, do đó mà có tên A*

Điểm khác biệt của A* đối với tìm kiếm theo lựa chọn tốt nhất là nó có thểtính toán đến khoảng cách đã đi Điều đó làm cho A* đầy đủ và tối ưu, nghĩa là A*

Trang 13

bảo sẽ chạy nhanh hơn các thuật toán đơn giản hơn Trong một môi trường dạng

mê cung, cách duy nhất để đến đích có thể là trước hết phải đi về phía xa đích vàcuối cùng mới quay trở lại Trong trường hợp đó, việc thử các nút theo thứ tự “gầnđích hơn thì được thử trước” có thể gây tốn thời gian

2.2.2 Mô tả thuật toán

Nếu n là trạng thái đích (có đường đi từ trạng thái ban đầu u0 tới u)

Ta xác định hàm đánh giá: f(u) = g(u) + h(u)

 f(u): Tổng chi phí ước lượng của đường đi từ nút đến đích

 g(u): Tổng chi phí từ gốc u tới nút hiện tại u

 h(u): hàm đánh giá heuristic nhằm tính chi phí nhỏ nhất có thể để đến đích

từ u Hàm f(u) có giá trị càng thấp thì độ ưu tiên của u càng cao

Một ước lượng heuristic h(u) được xem là được chấp nhận nếu với mọi nút unếu tồn tại 0 ≤ h(u) ≤ h*(u) Trong đó h*(u) để đi từ nút n đến đích

2.2.3 Cài đặt thuật toán

OPEN: Bao gồm các trạng thái đang được chờ để xét Trong tập OPEN ta sẽ

ưu tiên cho nút có chi phí bé nhất so với các nút còn lại trong tập OPEN để pháttriển

CLOSE: tập chứa các trạng thái đã được xét đến Nếu có một trạng thái khácđang xét mà trùng với trạng thái trong tập CLOSE và có tổng chi phí đường đi tốthơn thì trạng thái đó sẽ thay thế trạng thái cũ trong tập CLOSE

Khi xét đến một trạng thái ni trong OPEN bên cạnh việc lưu trữ 3 giá trị cơbản g, h, f để so sánh độ ưu tiên của trạng thái đó, A* còn lưu trữ thêm hai thông sốsau:

 Trạng thái cha của trạng thái ui (ký kiệu Father(v)): cho biết đường đi dẫnđến trạng thái u

 Danh sách các trạng thái kề với u: chứa các trạng thái kế tiếp v của u

Trang 14

Thuật toán có thể được mô tả như sau:

BEGIN

1 Khởi tạo danh sách OPEN chứa trạng thái ban đầu

CLOSE rỗng

2 Vòng lặp

 if OPEN rỗng: thông báo tìm thất bại, thoát vòng lặp

else chọn ui trong OPEN sao cho f(ui)min

 Lấy ui ra khỏi OPEN và đưa ni vào CLOSE

- Nếu ui là đích thì thoát và thông báo đường đi đến ni

Ngược lại ui không phải đích Tạo danh sách tất cả cá trạng thái kế tiếpcủa ui Gọi trạng thái này là uk Với mới uk:

 Tính g(uk) = g(ui) + cost(ui, uk)h(uk)

f(uk) = g(uk) + h(uk)

 Đặt Father(uk) = ui

 Nếu uk chưa xuất hiện trong OPEN và CLOSE thì thêm uk vào OPEN

2.2.4 Ví dụ minh họa

Trang 15

h(A) = 60 h(B) = 53 h(C) = 36 h(D) = 35 h(E) = 35

h(F) = 19 h(G) = 16 h(H) = 38 h(I) = 23 h(J) = 0 h(K) = 7

 Đỉnh bắt đầu A

 Đỉnh kết thúc K

 Ước lượng khoảng cách từ đỉnh hiện tại đến đỉnh kết thúc

Bảng 2.1 Các bước tìm đường đi của ví dụ

Vậy đường đi là AHGK

2.2.5 Đánh giá thuật toán

2.2.5.1 Ưu điểm

- Thuật toán chứa cả tìm kiếm theo chiều sâu, tìm kiếm theo chiều rộng và

những hàm Heuristic khác

- Một thuật toán hiệu quả, linh động, và tối ưu

- Tìm kiếm đến đích nhanh hơn với sự định hướng của hàm heuristic

Hình 2.1.Ví dụ minh họa về thuật toán A*

Trang 16

2.2.5.2 Nhược điểm

- Hiệu suất của A* phụ thuộc lớn vào chất lượng của heuristic được sử dụng.Nếu heuristic không chính xác có thể dẫn đến tìm kiếm không hiệu quả

- Trong lưới lớn hoặc khi chi phí giữa các ô quá lớn, A* có thể mất thời gian

và không hiệu quả

CHƯƠNG 3: ÁP DỤNG THUẬT TOÁN VÀO TRÒ CHƠI GHÉP TRANH 3.1 Bài toán

Game ghép tranh (N-Puzzle) là một trò chơi khá hay và trí tuệ, nó được biếtđến với nhiều phiên bản và tên gọi khác nhau như: 8-puzzle, 15-puzzle, Bosspuzzle Bài toán N-puzzle là vấn đề cổ điển cho mô hình thuật toán liên quan đếntrí tuệ nhân tạo Bài toán đặt ra là phải tìm đường đi từ trạng thái hiện tại tới trạngthái đích Phần mền N-Puzzle là một chương trình xây dựng trò chơi và giải quyếtbài toán này Phần mềm được viết trên ngôn ngữ C#, sử dụng giao diện để môphỏng trò chơi và thuật toán A* để tìm đường đi Người dùng có thể sử dụng chứcnăng tìm lời giải nhờ thuật toán A*

Yêu cầu xây dựng bảng ô vuông n hàng, n cột Bảng gồm 1 ô trống và n2-1 ôchứa hình ảnh Xuất phát từ một cách xếp bất kì, ta sẽ di chuyển ô trống lên, xuống,trái, phải để đưa các ô về vị trí đích Chương trình có chức năng tự động chơi ở bất

kì trạng thái nào đó được tạo bởi sự hoán vị của n2 phần tử.Ở đây ta xét bài toánghép tranh với giao diện đơn giản nhất là bài toán 8 số

Bài toán gồm một ma trận 3x3 các tranh được đánh thứ tự từ 1 đến 8 Trạngthái ban đầu, các ô số được đánh thứ tự ngẫu nhiên, 1 ô trống đánh số 0 Nhiệm vụcủa ta là phải sắp xếp từ vị trí 0 với các ô lân cận sao cho đưa chúng trở về đúngthứ tự (trạng thái đích)

Ngày đăng: 27/02/2024, 14:28

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

TÀI LIỆU LIÊN QUAN

w