Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 41 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
41
Dung lượng
2,68 MB
Nội dung
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUN ĐỀ HỌC PHẦN NHẬP MƠN TRÍ TUỆ NHÂN TẠO ĐỀ T!I: ÁP DỤNG THUẬT TOÁN QUAY LUI VÉT CẠN GIẢI QUYẾT B!I TOÁN MÃ ĐI TUẦN Sinh viên thực : WHAT YOUR NAME? HOW ARE YOU? DO YOU CRY A LOT? Giảng viên hướng dẫn : MYSTERIO Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : CƠNG NGHỆ PHẦN MỀM Lớp : D14XYZ99 Khóa : 2019-2023 Hà Nội, tháng 12 năm 2021 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: STT Họ tên Chữ ký Nhiệm vụ What Your Name? Mã SV: 111111111111 How Are You? Mã SV: 12345678910 Do You Cry A Lot? Mã SV: 10-1-2-3-4-5-6 Giảng viên chấm: Họ tên Chữ ký Ghi Gi ng ả viên chấấm 1: Gi ng ả viên chấấm 2: MỤC LỤC DANH MỤC HÌNH ẢNH LỜI MỞ ĐẦU CHƯƠNG 1: GIỚI THIỆU VỀ AI V! THUẬT TOÁN QUAY LUI VÉT CẠN 1.1 GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO 1.1.1 Trí tuệ nhân tạo ? 1.1.2 Lịch sử 1.1.3 Lĩnh vực AI 1.2 10 GIỚI THIỆU VỀ KỸ THUẬT QUAY LUI 1.2.1 8 11 Tư tưởng 11 1.2.2 Heuristic 12 1.2.3 Phương pháp 12 1.2.4 Mơ hình tốn 13 1.3 KẾT LUẬN 14 CHƯƠNG 2: B!I TOÁN MÃ ĐI TUẦN 2.1 B!I TOÁN 2.1.1 Nước quân Mã ♘ bàn cờ 2.1.2 Xuất xứ toán 2.2 GIẢI QUYẾT B!I TOÁN 2.2.1 Ý tưởng 2.2.2 Thiết kế thuật toán CHƯƠNG 3: C!I ĐẶT, ĐÁNH GIÁ THỬ NGIỆM 3.1 Cài đặt với C++ 3.1.1 Code 16 16 16 18 18 18 19 23 23 23 3.1.2 Kết đạt 26 3.1.3 Kết luận 26 3.2 Cặt đặt với C# Winform 3.2.2 Giao diện chương trình 3.2.3 Kết luận 26 32 38 KẾT LUÂ{N 39 T!I LIÊ{U THAM KHẢO 40 DANH MỤC HÌNH ẢNH Hình Cây mơ tả thuật tốn quay lui Hình Vị trí xuất phát quân Mã bàn cờ Hình Nước quân Mã Hình Mã rìa giống đồ trang trí Hình Các nước có ngựa Hình Kết đạt với C++ Hình Giao diện chạy chương trình Hình Nhập kích thước bàn cờ tạo bàn cờ Hình Chọn vị trí bắt đầu cho qn mã Hình 10 Qn mã có đầy đủ nước Hình 11 Qn mã cạnh bàn cờ có số nước Hình 12 Quân mã tuần Hình 13 Kết cuối 12 13 14 16 22 28 29 30 31 32 33 34 LỜI MỞ ĐẦU Bài toán “ Mã tuần” toán thú vị, tương đối kinh điển thuật toán quay lui vét cạn – thuật toán quan trọng phổ biến Trí tuệ Nhân tạo Mã tuần (hay hành trình qn mã) tốn việc di chuyển quân mã bàn cờ vua ( x 8) Quân mã đặt ô bàn cờ trống phải di chuyển theo quy tắc cờ vua để qua ô bàn cờ lần Chính vây` chúng em đến viê `c lựa chọn đề tài “ÁP DỤNG THUẬT TOÁN QUAY LUI VÉT CẠN GIẢI QUYẾT B!I TOÁN MÃ ĐI TUẦN” cho tâ `p lớn môn Cấu trúc da liê u` giải thuâ `t nâng cao Chúng em vô biết ơn thầy Mysterio, người trực tiếp giảng dạy, hướng dẫn nhiệt tình cho chúng em trình nghiên cứu thực đề tài Mặc dù đề tài hoàn thành, chắn khơng thể tránh khỏi nhang thiếu sót, chúng em mong muốn nhận ý kiến đóng góp thầy để hoàn thiện naa Chúng em xin chân thành cảm ơn! CHƯƠNG 1: GIỚI THIỆU VỀ AI V! THUẬT TỐN QUAY LUI VÉT CẠN 1.1 GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO 1.1.1 Trí tuệ nhân tạo ? Để hiểu trí tuệ nhân tạo (artificial intelligence) bắt đầu với khái niệm bay nhân tạo (flying machines), tức máy bay Đã từ lâu, loài người mong muốn làm máy 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 Khơng có ngạc nhiên nhang ý tưởng làm máy bay từ nghiên cứu cách chim bay Nhang 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) Các máy bay nay, thấy, có sức trở lớn bay quãng đường vịng quanh giới Nó khơng thiết phải có nguyên lý bay chim bay chim (dáng vẻ), tốt chim Quay lại câu hỏi Trí tuệ nhân tạo Trí tuệ nhân tạo trí 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 hiể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 Mặc dù nay, theo quan niệm người viết, ước mơ xa thành thực, nhang thành tựu đạt không nhỏ: làm hệ thống (phần mềm chơi cờ vua chạy siêu máy tinh GeneBlue) thắng vua cờ giới; làm phần mềm chứng minh tốn hình học; v.v Hay nói cách khác, số lĩnh vực, máy tính thực tốt tương đương người (tất nhiên khơng phải tất lĩnh vực) Đó hệ thống thơng minh Có nhiều cách tiếp cận để làm trí thơng minh máy (hay trí tuệ nhân tạo), chẳng hạn nghiên cứu cách não người sản sinh trí thơng minh loài người nhưthế ta bắt chước nguyên lý đó, có nhang cách khác sử dụng nguyên lý hoàn toàn khác với cách sản sinh trí thơng minh lồi người mà làm máy thông minh người; giống máy bay bay tốt chim có chế bay khơng phải giống chế bay chim 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 Các nhiệm vụ người thường xun phải thực là: giải tốn (tìm kiếm, chứng minh, lập luận), học, giao tiếp, thể cảm xúc, thích nghi với mơi trường xung quanh, v.v., dựa kết thực nhiệm vụ để kết luận có thơng minh hay khơng Mơn học Trí tuệ nhân tạo nhằm cung cấp phương pháp luận để làm hệ thống có khả thực nhiệm vụ đó: giải tốn, học, giao tiếp, v.v cách làm có người hay khơng mà kết đạt dáng vẻ bên người Trong mơn học này, tìm hiểu phương pháp để làm cho máy tính biết cách giải toán, biết cách lập luận, biết cách học, v.v 1.1.2 Lịch sử 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 nga “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 nga lập trình Lisp – nhang ngơn nga 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 nga 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 chẩn đoán 10 return 0; } 3.1.2 Kết đạt Với n = 8; x = 1; y =1: Hình 6: Kết đạt với C++ 3.1.3 Kết luận - Ưu điểm: Cài đặt thuật toán nhanh , dễ hiểu dễ cài đặt ngắn gọn - Nhược điểm: Chạy lâu đệ quy nhiều lần, khơng có giao diện khó hình dung 3.2 Cặt đặt với C# Winform 3.2.1 Cài đặt thuật toán Bước 1: Cấu trúc nước quân mã struct nuocDi { public int n; //So o co the di tiep public int x, y; //Vi tri 27 }; Bước 2: Khai báo biến cần thiết private int x, y; // toạ độ quân mã private int kichThuoc; //kích thước bàn cờ private bool ngung = false; private int[,] duongDi = new int[2501, 2501]; private int[,] vt = new int[2, 2501]; public int[,] _vt = new int[2, 2501]; quân mã //đường quân mã //vị trí quân mã //mảng tổng hợp vị trí int[] dx = { 2, 1, -1, -2, -2, -1, 1, }; //mảng chứa nước có quân mã int[] dy = { 1, 2, 2, 1, -1, -2, -2, -1 }; nuocDi temp = new nuocDi(); Bước 3: Set giá trị cho biến public void SetGT(int _x, int _y, int _kt) { x = _x; y = _y; kichThuoc = _kt; } Bước 4: Khởi tạo private void KhoiTao() { 28 //Khoi tao gia tri ban dau cho vi tri cua quan ma = for (int i = 0; i < kichThuoc * kichThuoc; i++) { vt[0, i] = 0; vt[1, i] = 0; _vt[0, i] = 0; _vt[1, i] = 0; } //Khoi tao duong di cua quan Ma = for (int i = 0; i < kichThuoc; i++) { for (int j = 0; j < kichThuoc; j++) { duongDi[i, j] = 0; } } //một quân mã nước } Bước 5: Tính số nước đi tiếp quân mã private int TinhSoNuocDi(int _x, int _y) { int i, j, n = 0; for (int k = 0; k < 8; k++) 29 { i = _x + dx[k]; j = _y + dy[k]; //ô nằm bàn cờ quân Mã chưa qua if (i >= && i = && j = && i = && j 0) { //Sap xep cac nuoc di tang dan theo so o co the di tiep 31 for (i = 0; i < soNuocDi - 1; i++) { for (j = i + 1; j < soNuocDi; j++) { if (luaChon[i].n > luaChon[j].n) { temp = luaChon[i]; luaChon[i] = luaChon[j]; luaChon[j] = temp; } } } //lưu tọa độ bước for (i = 0; i < soNuocDi; i++) { duongDi[luaChon[i].x, luaChon[i].y] = buoc + 1; vt[0, buoc] = luaChon[i].x; vt[1, buoc] = luaChon[i].y; TimDuong(luaChon[i].x, luaChon[i].y, buoc + 1); duongDi[luaChon[i].x, luaChon[i].y] = 0; } } } 32 } } 3.2.2 Giao diện chương trình 3.2.2.1 Giao diện chạy chương trình Hình 7: Giao diện chạy chương trình 3.2.2.2 Nhập kích thước bàn cờ tạo bàn cờ ( sử dụng thư viện System.Drawing để vẽ bàn cờ ) 33 Hình 8: Nhập kích thước bàn cờ tạo bàn cờ 34 3.2.2.3 Chọn vị trí bắt đầu cho quân mã ( cách click vào ô bàn cờ ) Hình 9: Chọn vị trí bắt đầu cho quân mã 35 3.2.2.4 Xem vị trí quân mã Hình 10: Qn mã có đầy đủ nước 36 Hình 11: Qn mã cạnh bàn cờ có số nước 37 3.2.2.5 Bắt đầu tuần ( click vào button tuần ) Hình 12: Quân mã tuần 38 3.2.2.6 Kết cuối Hình 13: Kết cuối 3.2.3 Kết luận - Uư Điểm: Có giao diện dễ sử dụng, gần gũi với người dùng - Nhược Điểm: Code dài cài đặt phức tạp người tiếp cận lập trình 39 KẾT L{N Với kiến thức có mình, chúng em hoàn thành yêu cầu tiến hành thực hiê `n đề tài “ÁP DỤNG THUẬT TOÁN QUAY LUI VÉT CẠN GIẢI QUYẾT B!I TOÁN MÃ ĐI TUẦN” Tuy nhiên, trình làm khơng tránh khỏi nhang thiếu sót, có nhang chỗ cịn vướng mắc, vậy, chúng em mong góp ý giúp đỡ thầy giáo, để hoàn thiện ! Chúng em xin gửi lời cảm ơn chân thành tới giảng viên Phạm Đức Hồng giảng viên giảng dạy môn Nhập mơn Trí tuệ nhân tạo lớp D14XYZ99 tận tình hướng dẫn chúng em hồn thành đề tài này! Chúng em xin chân thành cảm ơn! 40 T!I LIÊ{U THAM KHẢO Internet Wikipedia (tài liệu) 41