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ỉ
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 TỐN A* VÀO TRỊ CHƠI GHÉP TRANH Sinh viên thực : VŨ THỊ HOÀI THU LÊ THÀNH KIỆT Giảng viên hướng dẫn NGUYỄN THỊ THU HƯƠNG Ngành : TS VŨ VĂN ĐỊNH Chuyên ngành Lớp : CÔNG NGHỆ THÔNG TIN Khóa : CƠNG NGHỆ PHẦN MỀM : D16CNPM7 : 2021 Hà Nội, tháng 12 năm 2023 PHIẾU CHẤM ĐIỂM STT Họ tên sinh viên Nội dung thực Điểm Chữ ký Vũ Thị Hoài Thu 21810310193 Lê Thành Kiệt 21810310349 Nguyễn Thị Thu Hương 21810310340 Họ tên giảng viên Chữ ký Ghi Giảng viên chấm 1: Giảng viên chấm 2: MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG 1: GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO .6 1.1 Giới thiệu trí tuệ nhân tạo 1.2 Trí tuệ nhân tạo gì? 1.3 Lịch sửa phát triển .7 1.4 Các lĩnh vực 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 toán ghép tranh 10 2.2 Thuật toán A* 11 2.2.1 Giới thiệu thuật toán 11 2.2.2 Mơ tả thuật tố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 TỐN VÀO TRỊ CHƠI GHÉP TRANH 15 3.1 Bài toán .15 3.2 Minh họa 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 DANH MỤC HÌNH ẢNH Hình 1.1.Mơ trạng thái bắt đầu kết thúc 10 Hình 1.2 Mơ bước di chuyển game 11 Hình 2.1.Ví dụ minh họa 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 LỜI NÓI ĐẦU Ngày nay, chúng bước vào kỉ 21, kỷ nguyên Công nghệ thông tin, đặc biệt trí tuệ nhân tạo yếu tố quan trọng định thành công ngành hay quốc gia Trí tuệ nhân tạo làm thay đổi sống chúng ta, với phát triển mạnh mẽ việc áp dụng nghiên cứu trí tuệ nhân tạo áp dụng cho sống Tất ngành áp dụng trí tuệ nhân tạo cách rộng rãi Việc áp dụng trí tuệ nhân tạo để giải vấn đề xã hội việc phát triển kinh tế nhà nước khuyến khích đầu tư Tại Việt Nam, nhà nước vào phát triển dịch vụ đầu tư mạnh mẽ vào trí tuệ nhân tạo Vì thế, xu hot ưa chuộng Chính vậy, chúng em lựa chọn đề tài “Áp dụng thuật tốn A* vào trị chơi ghép tranh” Game ghép tranh (N-Puzzle) trò chơi hay trí tuệ Bài tốn N-Puzzle vấn đề cổ điển cho mơ hình thuật tốn liên quan đến trí tuệ nhân tạo, tốn đặt phải tìm đường từ trạng thái tới trạng thái đích Ở xét tốn ghép tranh với giao diện đơn giản toán số Bài toán gồm ma trận 3x3 tranh đánh thứ tự từ đến Nhiệm vụ của ta là phải sắp xếp từ vị trí với ô lân cận 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 tố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 giảng dạy trực tiếp hướng dẫn nhiệt tình thầy Vũ Văn Định đề tài Mặc dù đề tài hồn thành, chắn khơng thể tránh khỏi thiết sót, chúng em mong muốn nhận ý kiến đóng góp thầy để hồn chỉnh đề tài Chúng em xin chân thành cảm ơn! CHƯƠNG 1: GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO 1.1 Giới thiệu trí tuệ nhân tạo Chắc hẳn đời sống nghe nói đến trí tuệ nhân tạo Nhiều người biết gì, biết khai thác, ứng dụng để tạo số thành tựu định Bên cạnh nhiều người chưa hiểu biết trí tuệ nhân tạo Vậy trí tuệ nhân tạo gì? Tiềm tương lai trí tuệ nhân tạo sao? 1.2 Trí tuệ nhân tạo gì? Để hiểu trí tuệ nhân tạo (artificial intelligence) chúng nên bắt đầu với khái niện bay nhân tạo (flying machinese) Đã từ lâu, loài người mong muốn làm máy bay mà di chuyển khơng trung mà khơng phụ thuộc vào địa hình mặt đất hay nói cách khác máy bay Những máy biết bay thiết kế theo nguyên lý “vỗ cánh” chim bay quãng đường ngắn lịch sử hàng không thực sang trang kể từ anh em nhà Wright thiết kế máy bay dựa nguyên lý khí động lực học (aerodynamics) Quay lại câu hỏi trí tuệ nhân tạo gì? Trí tuệ nhân tạo thơng minh máy người tạo Ngay từ máy tính điện tử đời, nhà khoa học máy tính hướng đến phát triển hệ thống máy tính (gồm phần cứng phần mềm) cho có khả thơng minh lồi người Có nhiều cách tiếp cận để làm trí thơng minh máy, chẳng hạn nghiên cứu cách não người sản sinh trí thơng minh lồi người ta bắt chước nguyên lý đó, có cách khác sử dụng nguyên lý hồn tồn khác với cách sản sinh trí thơng minh loài người mà làm máy thông minh người Như vậy, trí tuệ nhân tạo nói đến khả máy thực công việc mà người thường phải xử lý dáng vẻ ứng xử kết thực máy tốt tương đương với người ta gọi máy thơng minh hay máy có trí thơng minh Hay nói cách khác, đánh giá thông minh máy dựa nguyên lý thực nhiệm vụ có giống cách người thực hay không mà dựa kết dáng vẻ ứng xử bên ngồi có giống với kết dáng vẻ ứng xử người hay không 1.3 Lịch sửa phát triển Vào năm 1943, Warren McCulioch Walter Pitts bắt đầu thực nghiên cứu ba sở lý thuyết bản: triết học chức noron thần kinh; phân tích mệnh đề logic lý thuyết dự đoán Turing Các tác giả nghiên cứu đề xuất mơ hình noron nhân tạo, noron đặc trưng hai trạng thái “bật”, “tắt” phát mạng noron có khả học Thuật ngữ “Trí tuệ nhân tạo” (Artificial Intelligence – AI) thiết lập John McCarthy Hội thảo chủ đề vào mùa hè năm 1956 Đồng thời, ông đề xuất ngôn ngữ lập trình Lisp – ngơn ngữ lập trình hàm tiêu biểu, sử dụng lĩnh vực AI Sau đó, Alan Turing đưa “Turing test” 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 tốn học sử dụng sở tri thức thành công Marvin Minsky Seymour Papert đưa chứng minh giới hạn mạng nơ-ron đơn giản Ngôn ngữ lập trình logic Prolog đời phát triển Alain Colmerauer Ted Shortliffe xây dựng thành công số hệ chuyên gia trợ giúp chuẩn đoán y học, hệ thống sử dụng ngôn ngữ luật để biểu diễn tri thức suy diễn Vào đầu năm 1980, nghiên cứu thành công liên quan đến AI hệ chuyên gia (expert systems) – dạng chương trình AI mơ tri thức kỹ nhiều chuyên gia người Vào năm đầu 1990 đầu ký 21, AI đạt thành tựu to lớn, AI áp dựng logic, khai phá liệu, chẩn đoán y học nhiều lĩnh vực ứng dụng khác công nghiệp Sự thành công dựa vào nhiều yếu tố: tăng khả tính tốn máy tính, tập trung giải toán cụ thể chuyển giao nhà nghiên cứu cho phương pháp toán học vững chuẩn khoa học xác 1.4 Các lĩnh vực AI - Lập luận, suy diễn tự động: Khái niệm lập luận (reasoning), suy diễn (reference) sử dụng phổ biến lĩnh vực AI Lập luận suy diễn logic, dùng để tiến trình rút kết luận (tri thức mới) từ giả thiết cho (được biểu diễn dạng sở tri thức) Như vậy, để thực lập luận người ta cần có phương pháp lưu trữ sở tri thức thủ tục lập luận sở tri thức - Biểu diễn tri thức: Muốn máy tính lưu trữ xử lý tri thức cần 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 bao gồm ngôn ngữ biểu diễn kỹ thuật xử lý tri thức Một ngôn ngữ biểu diễn tri thức đánh giá “tốt” có tính biểu đạt cao tính hiệu thuật tốn lập luận ngơn ngữ Tính biểu đạt ngôn ngữ thể khả biểu diễn phạm vi rộng lớn thông tin miền ứng dụng Hiệu thuật toán lập luận thể chi phí thời gian khơng gian dành cho việc lập luận Tuy nhiên, hai yếu tố dường đối nghịch nhau, tức ngơn ngữ có tính biểu đạt cao thuật tốn lập luận có độ phức tạp lớn ngược lại, ngôn ngữ đơn giản, có tính biểu đạt thấp thuật tốn lập luận có hiệu cao Do đó, thách thức lớn lĩnh vực AI xây dựng ngôn ngữ biểu diễn tri thức mà cân hai yếu tố này, tức ngơn ngữ có tình biểu đạt đủ tốt lập luận hiệu - Lập kế hoạch: Khả suy mục đích cần đạt nhiệm vụ đưa ra, xác định dãy hoạt động cần thực để đạt mục đích - Học máy (Machine Learning – ML) lĩnh vực trí tuệ nhân tạo (AI tập trung vào việc máy tính học từ liệu kinh nghiệm để tự cải thiện hiệu suất mà khơng cần lập trình cụ thể Qua q trình này, máy tính xác định mơ hình quy luật từ liệu, giúp dự đoán định cách tự động Học máy có ứng dụng rộng rãi nhiều lĩnh vực 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 nhiều lĩnh vực Đặc biệt deep learning phân nhóm quan trọng học máy tập trung vào việc xây dựng huấn luyện mơ hình dạng nơ-ron sâu để tự động học hiểu liệu phức tạp Điều giúp cải thiện hiệu suất đem lại đột phá khả hiểu xử lý thông tin từ liệu lớn - Xử lý ngôn ngữ tự nhiên: nhánh AI, tập trung vào ứng dụng ngôn ngữ người Các ứng dụng 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ĩnh vực nghiên cứu phát triển robot máy tự động, tập trung vào thiết kế, xây dựng, lập trình thiết bị tự động có khả thực tác vụ nhiệm vụ cách độc lập theo hướng dẫn Robotics sử dụng nhiều nguyên tắc từ Trí tuệ nhân tạo, khí, điện tử tự động hóa để phát triển robot có khả 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 toán ghép tranh Game ghép tranh (N-Puzzle) trò chơi hay trí tuệ, biết đến với tên khác “Game puzzle”, “Mystic Square” nằm nhóm tốn puzzle (xếp hình, đẩy hộp,…) Trị chơi N-Puzzle trị chơi giải đố trí tuệ dựa việc di chuyển mảnh ghép để tạo thành hình ảnh hồn chỉnh từ trạng thái ban đầu bị xáo trộn Trong trò chơi này, đồ chia thành lưới vuông hay ma trận vng với khích thước NxN, tạo thành N^2 mảnh ghép Mục tiêu trò chơi di chuyển 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 (trạng thái xếp thứ tự) Trong bước, bạn di chuyển mảnh ghép vào ô trống theo hướng trên, xuống, trái, phải Có nhiều cách để giải trị chơi N-Puzzle, bao gồm sử dụng thuật tốn thông minh A* (A star), BFS (Breadth-First Search), DFS (Depth-First Search) phương pháp heuristic Manhattan distance Mô trạng thái bắt đầu kết thúc 11 Hình 1.1.Mơ trạng thái bắt đầu kết thúc Mô bước di chuyển Hình 1.2 Mô bước di chuyển game 2.2 Thuật toán A* 2.2.1 Giới thiệu thuật toán Trong khoa học máy tính A*, thuật tốn tìm kiếm đồ thị Thuật tốn tìm đườ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 điều kiện đích) Thuật tốn sử dụng “đánh giá Heuristic” để xếp loại nút theo ước lượng tuyến đường tốt Thuật toán duyệt nút theo thứ tự đánh giá Heuristic.Do đó, thuật tốn A* ví dụ tìm kiếm theo lựa chọn tốt (Best-first search) Thuật tốn A* mơ tả lần đầu vào năm 1968 Peter Hart, Nils Nilsson, Bertram Raphael Trong báo họ, thuật toán gọi thuật toán A; sử dụng thuật toán với đánh giá heuristic thích hợp thu hoạt động tối ưu, mà có tên A* Điểm khác biệt A* tìm kiếm theo lựa chọn tốt tính tốn đến khoảng cách Điều làm cho A* đầy đủ tối ưu, nghĩa A* ln tìm đường ngắn tồn đường A* không đảm 12 bảo chạy nhanh thuật toán đơn giản Trong môi trường dạng mê cung, cách để đến đích trước hết phải phía xa đích cuối quay trở lại Trong trường hợp đó, việc thử nút theo thứ tự “gần đích thử trước” gây tốn thời gian 2.2.2 Mơ tả thuật tốn Nếu n trạng thái đích (có đường 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 đường từ nút đến đích g(u): Tổng chi phí từ gốc u tới nút u h(u): hàm đánh giá heuristic nhằm tính chi phí nhỏ để đến đích từ u Hàm f(u) có giá trị thấp độ ưu tiên u cao Một ước lượng heuristic h(u) xem chấp nhận với nút u tồn ≤ h(u) ≤ h*(u) Trong h*(u) để từ nút n đến đích 2.2.3 Cài đặt thuật tốn OPEN: Bao gồm trạng thái chờ để xét Trong tập OPEN ta ưu tiên cho nút có chi phí bé so với nút lại tập OPEN để phát triển CLOSE: tập chứa trạng thái xét đến Nếu có trạng thái khác xét mà trùng với trạng thái tập CLOSE có tổng chi phí đường tốt trạng thái thay trạng thái cũ tập CLOSE Khi xét đến trạng thái ni OPEN bên cạnh việc lưu trữ giá trị g, h, f để so sánh độ ưu tiên trạng thái đó, A* cịn lưu trữ thêm hai thơng số sau: Trạng thái cha trạng thái ui (ký kiệu Father(v)): cho biết đường dẫn đến trạng thái u Danh sách trạng thái kề với u: chứa trạng thái v u 13 Thuật tốn mơ tả sau: BEGIN Khởi tạo danh sách OPEN chứa trạng thái ban đầu CLOSE rỗng Vòng lặp if OPEN rỗng: thơng báo tìm thất bại, vịng lặp else chọn ui OPEN cho f(ui)min Lấy ui khỏi OPEN đưa ni vào CLOSE - Nếu ui đích thơng báo đường đến ni Ngược lại ui khơng phải đích Tạo danh sách tất cá trạng thái ui Gọi trạng thái uk Vớ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 OPEN CLOSE thêm uk vào OPEN 2.2.4 Ví dụ minh họa 14 Hình 2.1.Ví dụ minh họa 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) = h(K) = Đỉnh bắt đầu A Đỉnh kết thúc K Ước lượng khoảng cách từ đỉnh đến đỉnh kết thúc Bảng 2.1 Các bước tìm đường ví dụ Bước N(trạng V(Mở OPEN CLOSE Father thái đc rộng chọn) trạng thái) A(60) A B, H B(64), H(53) A H G, I, A B(64), G(34), I(45) A, H {A} G H, K, F B(64), I(45), K(32), F(53) A, H, G {H} K G, F, J B(64), J(32), F(49), I(45) A, H, G {G} K (dừng) {K} Vậy đường AHGK 2.2.5 Đánh giá thuật toán 2.2.5.1 Ưu điểm - Thuật tốn chứa tìm kiếm theo chiều sâu, tìm kiếm theo chiều rộng hàm Heuristic khác - Một thuật toán hiệu quả, linh động, tối ưu - Tìm kiếm đến đích nhanh với định hướng hàm heuristic 15 2.2.5.2 Nhược điểm - Hiệu suất A* phụ thuộc lớn vào chất lượng heuristic sử dụng Nếu heuristic khơng xác dẫn đến tìm kiếm khơng hiệu - Trong lưới lớn chi phí q lớn, A* thời gian khơng hiệu CHƯƠNG 3: ÁP DỤNG THUẬT TỐN VÀO TRỊ CHƠI GHÉP TRANH 3.1 Bài toán Game ghép tranh (N-Puzzle) trị chơi hay trí tuệ, biết đến với nhiều phiên tên gọi khác như: 8-puzzle, 15-puzzle, Boss puzzle Bài toán N-puzzle vấn đề cổ điển cho mơ hình thuật tốn liên quan đến trí tuệ nhân tạo Bài tốn đặt phải tìm đường từ trạng thái tới trạng thái đích Phần mền N-Puzzle chương trình xây dựng trị chơi giải tốn Phần mềm viết ngơn ngữ C#, sử dụng giao diện để mơ trị chơi thuật tốn A* để tìm đường Người dùng sử dụng chức tìm lời giải nhờ thuật tốn A* u cầu xây dựng bảng vuông n hàng, n cột Bảng gồm ô trống n2-1 chứa hình ảnh Xuất phát từ cách xếp bất kì, ta di chuyển trống lên, xuống, trái, phải để đưa ô vị trí đích Chương trình có chức tự động chơi trạng thái tạo hoán vị n2 phần tử.Ở ta xét toán ghép tranh với giao diện đơn giản tốn số Bài toán gờm một ma trận 3x3 các tranh được đánh thứ tự từ đến Trạng thái ban đầu, các ô số được đánh thứ tự ngẫu nhiên, ô trống đánh số Nhiệm vụ của ta là phải sắp xếp từ vị trí với lân cận cho đưa chúng trở về đúng thứ tự (trạng thái đích) 16 3.2 Minh họa trò chơi Trạng thái đầu Các bước tốn xếp hình Từ trạng thái ban đầu sinh ba trạng thái G(u) = 1, h(u) = => f(u) = 17 G(u) = 1, h(u) = => f(u) = G(u) = 1, h(u) = => f(u) = 18 Từ trạng thái ban đầu Chọn trạng thái tốt f = Ta có: G(u) = 2, h(u) = => f(u) = Kiểm tra thấy tồn CLOSE Đánh giá không tốt trạng thái cũ nên không phát triển tiếp G(u) = 2, h(u) = =>f(u) = 19 Ta phát triển trạng thái G(u) = 3, h(u) = => f(u) = G(u) = 3, h(u) = => f(u) = =>Trạng thái đích 20