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

Nhập môn trí tuệ nhân tạo đề ti áp dụng thuật toán a vo bi toán tìm đường đi ngắn nhất

32 6 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

Đị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 ĐỀ TI: ÁP DỤNG THUẬT TỐN A* VO BI 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: CI ĐẶ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   TI 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 BI TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT” cho  bài tập ln 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 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 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 qung đường ngắn lịch sử hàng không thực sang trang mi 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ó 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 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 mi thành thực, thành tựu đạt không h 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 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 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 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 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 vi 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 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 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 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 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 nhiu chuyên gia người   Vào năm 1990 đầu kỷ 21, AI đ đạt thành tựu to ln nhất, 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ể, 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 mi 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 mi) 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 ln thông tin min ứ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 ln (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 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í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 vi nhiệm vụ đưa ra, xác định dy 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ó nhiu ứ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 ln cung cấp kết luận dựa thơng tin Có nhiu 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 vi trạng thái hay lựa chọn giá trị ý nghĩa đối vi 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

Ngày đăng: 18/05/2023, 05:54

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

TÀI LIỆU LIÊN QUAN

w