Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
1 MB
Nội dung
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 ĐỀ TI: ÁP DỤNG THUẬT TỐN A* VO BI TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT Sinh viên thực : NGUYỄN ĐỨC ANH VŨ ĐỨC MẠNH NGUYỄN TRẦN TUẤN DƯƠNG Giảng viên hướng dẫn : VŨ VĂN ĐỊNH Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : CÔNG NGHỆ PHẦN MỀM Lớp : D15CNPM4 Khóa : D15 Hà Nội, tháng 11 năm 2022 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: Họ tên Nguyễn Đức Anh Vũ Đức Mạnh Nguyễn Trần Tuấn Dương Mã Sinh Viên 20810340224 20810340245 20810340256 Chữ ký Chữ ký Ghi Giảng viên chấm: Họ tên Giảng viên chấm 1: Giảng viên chấm 2: Mục lục LỜI MỞ ĐẦU .3 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 1.1.1 Trí tuệ nhân tạo ? 1.1.2 Lịch sử 1.1.3 Lĩnh vực AI .6 CHƯƠNG 2: GIẢI THUẬT A* TRÊN ĐỒ THỊ 2.1 Giới thiệu Heuristic hàm Heuristic .8 2.2 Giới thiệu giải thuật tìm kiếm A* Thuật giải A* CHƯƠNG 3: CI ĐẶT, ĐÁNH GIÁ THỬ NGIỆM 10 3.1 Cài đặt với c++ .10 3.1.1 Tạo hai file txt 10 3.1.2 Code 11 3.1.3 Kết đạt .22 3.1.4 Kết luận .22 3.2 Hiện thực hóa thuật giải A* việc tìm đường ma trận javascript .23 3.2.1 Cài đặt thuật toán 23 3.2.2 Giao diện chương trình 23 KẾT LUẬN 29 TI LIỆU THAM KHẢO 29 LỜI MỞ ĐẦU Bài tốn “Tìm đường ngắn thuật giải A* ” toán thú vị, thuật toán quan trọng phổ biến Trí tuệ Nhân tạo Chính chúng em đ đến việc lựa chọn đ tài “ ÁP DỤNG THUẬT TỐN A* GIẢI QUYẾT BI TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT” cho bài tập ln mơn trí tuệ nhân tạo Mặc dù đ tài đ hoàn thành, chắn khơng thể tránh khỏi thiếu sót, chúng em mong muốn nhận ý kiến đóng góp thầy để hoàn thiện 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.1GIỚ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 vi 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 dưi mặt đất, hay nói cách khác máy bay Khơng có ngạc nhiên ý tưởng làm máy bay từ nghiên cứu cách chim bay Những máy biết bay thiết kế theo nguyên lý “vỗ cánh” chim bay qung đường ngắn lịch sử hàng không thực sang trang mi 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ở ln bay qung đường vịng quanh gii Nó khơng thiết phải có ngun lý bay chim bay chim (dáng vẻ), cịn 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 mm) 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 mi thành thực, thành tựu đạt không h nhỏ: đ làm hệ thống (phần mm chơi cờ vua chạy siêu máy tinh GeneBlue) thắng vua cờ gii; đ làm phần mm 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ó nhiu 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 no người sản sinh trí thơng minh lồi người nhưthế ta bắt chưc nguyên lý đó, có cách khác sử dụng ngun lý hồn tồn khác vi 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 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 vi 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 khơng phải dựa ngun 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 vi kết dáng vẻ ứng xử người hay không Các nhiệm vụ người thường xuyên 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 vi 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 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 tố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 đ xt 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 v 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 v gii 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 chẩ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ỹ phân tích nhiu chuyên gia người Vào năm 1990 đầu kỷ 21, AI đ đạt thành tựu to ln nhất, AI áp dụng logic, khai phá liệu, chẩn đoán y học nhiu lĩnh vực ứng dụng khác công nghiệp Sự thành công dựa vào nhiu yếu tố: tăng khả tính tốn máy tính, tập trung giải toán cụ thể, xây dựng mối quan hệ AI lĩnh vực khác giải toán tương tự, chuyển giao mi nhà nghiên cứu cho phương pháp tốn học vững chuẩn khoa học xác 1.1.3 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 mi) từ giả thiết đ cho (được biểu diễn dưi 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 ln thông tin min ứng dụng Tính hiệu thuật tốn lập luận thể chi phí v 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ínhbiểu đạt cao thuật tốn lập luận có độ phức tạp ln (tính hiệu thấp)và 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 ln 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ínhbiểu đạt đủ tốt (tùy theo ứng dụng) lập luận hiệu Lập kế hoạch: khả suy mục đích cần đạt đối vi nhiệm vụ đưa ra, xác định dy hành động cần thực để đạt mục đích Học máy: lĩnh vực nghiên cứu AI phát triển mạnh mẽ có nhiu ứng dụng lĩnh vực khác khai phá liệu, khám phá tri thức,… 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,… Hệ chuyên gia: cung cấp hệ thống có khả suy luận để đưa kết luận Các hệ chuyên gia có khả xử lý lượng thông tin ln cung cấp kết luận dựa thơng tin Có nhiu hệ chuyên gia tiếng hệ chuyên gia y học MYCIN, đoán nhận cấu trúc phân tử từ cơng thức hóa học DENDRAL, … CHƯƠNG 2: GIẢI THUẬT A* TRÊN ĐỒ THỊ 2.1 Giới thiệu Heuristic hàm Heuristic Heuristic phương pháp giải vấn đ dựa đoán, ưc chừng, kinh nghiệm, trực giác để tìm giải pháp gần tốt nhanh chóng Hàm Heuristic hàm ứng vi trạng thái hay lựa chọn giá trị ý nghĩa đối vi vấn đ dựa vào giá trị hàm ta lựa chọn hành động 2.2 Giới thiệu giải thuật tìm kiếm A* A* giải thuật tìm kiếm đồ thị, tìm đường từ đỉnh đến đỉnh đích có sử dụng hàm để ưc lượng khoảng cách hay gọi hàm Heuristic Từ trạng thái A* xây dựng tất đường đi dùng hàm ưc lược khoảng cách (hàm Heuristic) để đánh giá đường tốt Tùy theo dạng khác mà hàm Heuristic đánh giá khác A* ln tìm đường ngắn tồn đường A* lưu giữ tập đường qua đồ thị, từ đỉnh bắt đầu đến đỉnh kết thúc, tập đỉnh tiếp lưu tập Open Thứ tự ưu tiên cho đường đươc định hàm Heuristic đánh giá f(x) = g(x) + h(x) g(x) chi chi phí đường từ điểm xuất phát thời điểm h(x) hàm ưc lượng chi phí từ đỉnh đến đỉnh đích f(x) thường có giá trị thấp độ ưu tiên cao Thuật giải A* Open: tập trạng thái đ sinh chưa xét đến Close: tập trạng thái đ xét đến Cost(p, q): khoảng cách p, q g(p): khoảng cách từ trạng thái đầu đến trạng thái p { if (Open[i].color == 1) count++; } return count; } int Find(int n, Node *Open) { for (int i = 0; i < n; i++) if (Open[i].color == 1) return i; return -1; } int FindMin(int n, Node *Open) { int minIndex = Find(n, Open); int = Open[minIndex].f; for (int i = 0; i < n; i++) { if (Open[i].f < && Open[i].color == 1) { minIndex = i; = Open[i].f; } } return minIndex; } void Init(int n, int *b) { for (int i = 0; i < n; i++) { p[i].index = i; p[i].color = 0; p[i].g = b[i]; p[i].parent = 0; p[i].f = p[i].g; p[i].h = 0; } } int FindPoint(int n, Node *q, int o) { for (int i = 0; i < n; i++) if (q[i].index == o) return i; return -1; } void AStar(int a[100][100], int n, int start, int finsh, int b[]) { int l = 0; Open[l] = p[start]; Open[l].color = 1; Open[l].f = Open[l].h + Open[l].g; l++; int w = 0; while (Count(l, Open) != 0) // kiem tra xem tap Open co phan tu nao khong { int k = FindMin(n, Open); // tim vi tri nho nhat Open Open[k].color = 2; // cho diem tim duoc vao Close Close[w] = Open[k]; Close[w].color = 2; w++; p[FindPoint(n, p, Open[k].index)].color = 2; if (FindPoint(n, p, Open[k].index) == finsh) { cout