Professional Documents
Culture Documents
Lê Thành Kiệt
2
21810310349
2
MỤC LỤC
LỜI NÓI ĐẦU..........................................................................................................5
CHƯƠNG 2: GIỚI THIỆU BÀI TOÁN GHÉP TRANH VÀ THUẬT TOÁN A*10
KẾT LUẬN.............................................................................................................21
3
4
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
5
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ông
tin, đặ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ông
của mỗi ngành hay mỗi quốc gia. Trí tuệ nhân tạo đã và đang làm thay đổi cuộc
số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ạy
trự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!
6
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ân
tạ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ể di
chuyển được trên không trung mà không phụ thuộc vào địa hình ở dưới mặt đất hay
nó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ế theo
nguyê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ủa
má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ách
tiế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ão
ngườ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ách
sả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ện
cá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ả
7
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áy
thông minh hay máy đó có trí thông minh. Hay nói cách khác, đánh giá sự thông
minh 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ống
cá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ên
ngoà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ên
cứ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ần
kinh; 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ởi
John McCarthy tại Hội thảo đầu tiên về chủ đề này vào mùa hè năm 1956. Đồng
thời, ông cũng đề xuất ngôn ngữ lập trình Lisp – một trong những ngôn ngữ lập
trì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án
họ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ôn
ngữ lập trình logic Prolog ra đời và được phát triển bởi Alain Colmerauer. Ted
Shortliffe xây dựng thành công một số hệ chuyên gia đầu tiên trợ giúp chuẩn đoán
trong 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à suy
diễn.
Vào đầu những năm 1980, những nghiên cứu thành công liên quan đến AI
như các hệ chuyên gia (expert systems) – một dạng của chương trình AI mô phỏng
tri thức và các kỹ năng của một hoặc nhiều chuyên gia con người.
8
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ều
lĩ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ọc
vữ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ễn
logic, 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ện
lậ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ục
lậ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ôn
ngữ 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ủa
ngô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 tin
trong 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 chi
phí 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ữ đơn
giả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ểu
diễ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ả.
9
- 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 (AI
tập trung vào việc máy tính học từ dữ liệu và kinh nghiệm để tự cải thiện
hiệ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ác
má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ủa
họ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ơ-ron
sâ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ệu
suấ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ụng
trên ngôn ngữ của con người. Các ứng dụng trong nhận dạng tiếng nói, nhận
dạ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ăng
thự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 xung
quanh.
10
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ài
toá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ành
mộ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ảnh
ghé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 đúng
thứ tự). Trong mỗi bước, bạn chỉ có thể di chuyển một mảnh ghép vào ô trống theo
mộ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ật
toán thông minh như A* (A star), BFS (Breadth-First Search), DFS (Depth-First
Search) 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
11
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
13
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ếp
củ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
14
Hình 2.1.Ví dụ minh họa về thuật toán A*
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(Mở
N(trạng rộng
Bước thái đc các OPEN CLOSE Father
chọn) trạng
thái)
0 A(60)
1 A B, H B(64), H(53) A
2 H G, I, A B(64), G(34), I(45) A, H {A}
3 G H, K, F B(64), I(45), K(32), F(53) A, H, G {H}
4 K G, F, J B(64), J(32), F(49), I(45) A, H, G {G}
5 K (dừng) {K}
15
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ả.
16
3.2. Minh họa về trò chơi
Trạng thái đầu
17
G(u) = 1, h(u) = 4 => f(u) = 5
18
2. Từ trạng thái ban đầu trên. Chọn trạng thái tốt nhất sẽ là f = 3. Ta sẽ có:
G(u) = 2, h(u) = 4 => f(u) = 6.
Kiểm tra thấy đã tồn tại trong CLOSE. Đánh giá không tốt hơn trạng thái
cũ nên không phát triển tiếp.
19
3. Ta có thể phát triển 2 trạng thái
G(u) = 3, h(u) = 2 => f(u) = 5
20
3.3. Cài đặt chương trình
Trạng thái ban đầu
21
KẾT LUẬN
Thông qua việc tìm hiểu và nghiên cứu đề tài này mà chúng em có cái nhìn
toàn diện hơn trong việc ứng dụng trí tuệ nhân tạo vào giải quyết vấn đề thực tế.
Đây là bài toán cổ điển trong trí tuệ nhân tạo cho các thuật toán mô hình hóa
liên quan đến tìm kiếm có tri thức bổ sung.
Sau một thời gian tìm hiểu và nghiên cứu cùng với sự chỉ dẫn của thầy,
chúng em đã hòa thành đề tài ghép tranh với thuật toán tìm kiếm A*. Song vẫn
không thể tránh được các thiếu sót, mong thầy, cô có thể chỉ dẫn để báo cáo có
thể hoàn thiện một cách tốt nhấ.
Bài toán ghép tranh trên thực hiện với ma trận 3x3 và có độ khó không cao.
Chúng em sẽ tiếp tục nghiên cứu và áp dụng thuật toán A* cho bài toán ghéo
tranh với mức độ khó hơn như 4x4, 5x5, NxN,…
22
TÀI LIỆU THAM KHẢO
[1] Artificial Intelligence and Soft Computing: Behavioral and Cognitive Modeling
of the Human Brain
[2] PGS.TS Từ Minh Phương, Giáo trình Nhập môn trí tuệ nhân tạo, Nhà xuất
bảnThông tin và truyền thông, xuất bản năm 2014.
[3] http://en.wikipedia.org/wiki/A*_search_algorithm
[4] http://en.wikipedia.org/wiki/Fifteen_puzzle
23