Báo cáo đồ án trí tuệ nhân tạo: Xây dựng chương trình tìm kiếm đường đi từ một đỉểm nào đó trên bản đồ đến một điểm khác trên bản đồ bằng phương pháp tìm kiếm Greedy Best First Search

13 1.6K 9
Báo cáo đồ án trí tuệ nhân tạo: Xây dựng chương trình tìm kiếm đường đi từ một đỉểm nào đó trên bản đồ đến một điểm khác trên bản đồ bằng phương pháp tìm kiếm Greedy Best First Search

Đ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

Báo cáo môn học Nhập môn trí tuệ nhân tạo Đề bài: Không gian trạng thái được mô tả là một bản đồ giao thông của một xã, phường nào đó. Hãy xây dựng chương trình cho phép tìm kiếm đường đi từ một đỉểm nào đó trên bản đồ đến một điểm khác trên bản đồ bằng phương pháp tìm kiếm Greedy Best First Search. Tên học viên: Khuất Đình Đăng Giảng viên: TS. Ngô Hữu Phúc Yêu cầu: Mô phỏng bằng chương trình. Ngôn ngữ sử dụng là VC++.Net hoặc C#.NET I.Phương pháp tìm kiếm Greedy Best First Search Phương pháp tìm kiếm Greedy Best First Search là một dạng đặc biệt của phương pháp tìm kiếm Greedy Best First Search. Lấy ý tưởng của giải thuật tìm kiếm theo chiều rộng kết hợp với hàm đánh giá để tìm kiếm trong không gian trạng thái. 1.Hàm đánh giá. a.Khái niệm. Trong tìm kiếm sử dụng kinh nghiệm, ta xây dựng một hàm đánh giá h(n). Với mỗi trạng thái u thuộc vào không gian trạng thái, hàm đánh giá sẽ xác định “giá” của trạng thái đó. “Giá” của u là một giá trị số h(u) tượng trưng cho “độ tốt” của trạng thái u, tức là khả năng từ u đi được đến đích. Trong tìm kiếm sử dụng kinh nghiệm, hàm đánh giá có vai trò rất quan trọng. Nếu xây dựng được hàm đánh giá tốt, việc tìm kiếm sẽ rất nhanh. Ngược lại, với một hàm đánh giá tồi, công việc tìm kiếm có thể đi chệch hướng và tìm kiếm kém hiệu quả. Không có một phương pháp chung để xây dựng hàm đánh giá tổng quát cho mọi bài toán. Việc xây dựng hàm đánh giá tùy thuộc vào vấn đề cần giải quyết. b.Một số ví dụ về hàm đánh giá.

HỌC VIỆN KỸ THUẬT QUÂN SỰ KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO MƠN HỌC TRÍ TUỆ NHÂN TẠO Giáo viên hướng dẫn: Ngô Hữu Phúc HÀ NỘI 3/2010 Báo cáo mơn học Nhập mơn trí tuệ nhân tạo Đề bài: Không gian trạng thái mô tả đồ giao thơng xã, phường Hãy xây dựng chương trình cho phép tìm kiếm đường từ đỉểm đồ đến điểm khác đồ phương pháp tìm kiếm Greedy Best First Search Tên học viên: Khuất Đình Đăng Giảng viên: TS Ngô Hữu Phúc Yêu cầu: Mô chương trình Ngơn ngữ sử dụng VC++.Net C#.NET I Phương pháp tìm kiếm Greedy Best First Search Phương pháp tìm kiếm Greedy Best First Search dạng đặc biệt phương pháp tìm kiếm Greedy Best First Search Lấy ý tưởng giải thuật tìm kiếm theo chiều rộng kết hợp với hàm đánh giá để tìm kiếm khơng gian trạng thái Hàm đánh giá a Khái niệm Trong tìm kiếm sử dụng kinh nghiệm, ta xây dựng hàm đánh giá h(n) Với trạng thái u thuộc vào không gian trạng thái, hàm đánh giá xác định “giá” trạng thái “Giá” u giá trị số h(u) tượng trưng cho “độ tốt” trạng thái u, tức khả từ u đến đích Trong tìm kiếm sử dụng kinh nghiệm, hàm đánh giá có vai trị quan trọng Nếu xây dựng hàm đánh giá tốt, việc tìm kiếm nhanh Ngược lại, với hàm đánh giá tồi, công việc tìm kiếm chệch hướng tìm kiếm hiệu Khơng có phương pháp chung để xây dựng hàm đánh giá tổng quát cho toán Việc xây dựng hàm đánh giá tùy thuộc vào vấn đề cần giải b Một số ví dụ hàm đánh giá Trong tốn tìm kiếm đường đồ, xây dựng hàm đánh giá:  Đường chim bay từ thành phố sang thành phố khác,  Sử dụng khoảng cách thực đường thành phố,  Sử dụng khoảng cách số trọng số khác ảnh hưởng tới việc tìm kiếm (đóng vai trị làm tăng thời gian di chuyển thành phố), Xét tốn số, ta xây dựng hàm đánh sau:  Hàm H1: với trạng thái u, H1(u) số quân sai vị trí // H1(u) = Trạng thái đích Trạng thái đích u  Hàm H2: H2(u) tổng khoảng cách vị trí quân trạng thái u với vị trí trạng thái đích // H2(u) = Phương pháp Greedy Best First Search a Ý tưởng Tìm kiếm Greedy Best First Search = tìm kiếm theo chiều rộng + hàm đánh giá Hàm đánh giá sử dụng phương pháp tìm kiếm hàm ước lượng giá từ trạng thái u đến trạng thái đích Tức xác định khả từ trạng thái u đến trạng thái đích Node lựa chọn để phát triển bước node có “giá” đến trạng thái đích “tốt nhất” theo u cầu tốn Tức chọn node “được cho là” gần với trạng thái đích để phát triển Ví dụ: tìm kiếm đồ, hàm h(n) = Khoảng cách theo đường chim bay từ n đến thành phố đích Tìm kiếm đường với giá tính theo Km: Ở ví dụ trên, xuất phát từ thành phố Arad đến đích thành phố Bucharest b Cài đặt Sử dụng hàng đợi có ưu tiên Sắp xếp node hàng đợi theo thứ tự tăng dần hàm đánh giá Procedure Greedy_Best_First_Search; Begin Khởi tạo queue L chứa trạng thái ban đầu; Loop If L rỗng then { thông báo thất bại; stop; } Loại trạng thái u đầu queue L; If u trạng thái kết thúc then { thông báo thành công; stop; } For trạng thái v kề u Xen v vào queue L cho node L xếp theo thứ tự tăng dần hàm đánh giá; End; c Đánh giá giải thuật GBFS • Tính đủ: Khơng Có thể vào vịng lặp quẩn (trường hợp tốn có khơng gian trạng thái vô hạn ta duyệt phải nhánh vô hạn nghiệm tốn khơng nằm nhánh • đó.) Độ phức tạp thời gian: O(bm) Nếu hàm heuristic xấp xỉ tốt thực tế thời gian chạy • • giảm nhiều Độ phức tạp không gian: O(bm) Lưu trữ tất Nodes Tính tối ưu: khơng có tính đủ nên giải thuật khơng có tính tối ưu II Các kết đạt Mô đồ giao thông xã, phường Bản đồ giao thông xã, phường mơ tả chương trình đồ thị vơ hướng Mỗi đỉnh đồ thị tượng trưng cho điểm đồ Mỗi đỉnh gán số thứ tự Mỗi cạnh nối đỉnh đồ thị tượng trưng cho đường nối điểm đồ Trọng số gắn với cạnh nối đỉnh đồ thị tượng trưng cho khoảng cách thực tế điểm đồ Giá trị ghi cạnh đồ thị khoảng cách thực tế điểm đồ Giá trị ghi đỉnh đồ thị giá trị hàm đánh giá tính đỉnh Xây dựng hàm Giá trị hàm đánh giá h(n) đánh giá h(n) đỉnh u thuộc không gian trạng thái xác định tổng khoảng cách chim bay từ trạng theo đường thái u đến trạng thái đích khoảng cách thực tế từ trạng thái trước expand trạng thái u đến h(u) = dcb(u, e) + d(father(u),u) Trong đó, dcb(u,e) khoảng cách tính theo đường chim bay từ u đến đích; father(u) trạng thái “cha” trạng thái u, trước expand u; d(father(u),u) khoảng cách thực tế từ father(u) đến u Kết làm a Các bước xây dựng đồ tìm đường đồ Click vào background để tạo đỉnh  Click vào đỉnh rê chuột đến đỉnh khác để tạo cạnh nối sau nhập độ dài cạnh nối  Nhập đỉnh bắt đầu đỉnh kết thúc  Nhấn Tìm để bắt đầu tìm kiếm  Thơng báo kết thông qua MessageBox RichTextBox b Cấu trúc chương trình Các lớp chương trình:  Lớp dinh mô tả đỉnh đồ thị tương ứng với điểm đồ Lớp khai báo thuộc tính sau: private Graphics gr; private int x, y, ID; private int r = 30; public double H; private SolidBrush sbr = new SolidBrush(Color.Blue); private bool selected; - gr, sbr sử dụng để hiển thị hình dạng đỉnh x, y xác định vị trí tâm đỉnh ID xác định số thứ tự đỉnh R: bán kính đỉnh (đỉnh thể hình trịn bán kính r) H giá trị hàm đánh giá đỉnh Selected xác định đỉnh có chọn chuột hay khơng Các phương thức lớp: public bool ifChecked(int _x, int _y) xác định có phải đỉnh trỏ đến chuột hay không public void show(PaintEventArgs e) hiển thị đỉnh hình trịn bán kính r số thứ tự đỉnh public void showH(PaintEventArgs e) hiển thị giá trị hàm đánh giá bên hình trịn  Lớp canh mơ tả cạnh đồ thị tương ứng với đường đồ Các thuộc tính lớp canh private int xdau, ydau, xcuoi, ycuoi; // tọa độ đỉnh cạnh private int dinhdau, dinhcuoi; // số thứ tự đỉnh private Graphics gr; private Pen pen = new Pen(Color.Black, 1); // gr pen dùng để “vẽ” cạnh hình private int dodai; // độ dài cạnh Các phương thức lớp: public void show(PaintEventArgs e) // hiển thị cạnh hình đường thẳng public void showS(PaintEventArgs e) // hiển thị độ dài cạnh  Lớp bando thực chất ma trận kể đồ thị Lớp có thuộc tính, mảng chiều public int[,] duongdi; ma trận kề đồ thị số nguyên public int sophantu; thể số chiều ma trận Lớp có contructor tính tốn giá trị ma trận kề dựa vào đỉnh cạnh đồ thị  Lớp GBFS định nghĩa thuật toán GBFS Các thuộc tính lớp khai báo sau: // // // // // // ArrayList alC; mảng cạnh đồ thị ArrayList alD; mảng đỉnh đồ thị dinh start, end; đỉnh bắt đầu đỉnh kết thúc int tongquangduong; độ dài đường tìm từ đỉnh đầu đến đỉnh kết thúc int sodinh; số đỉnh đồ thị int[,] Matrix; ma trận kề đồ thị Các phương thức lớp: public double birdFly(dinh p) // trả khoảng cách đường chim bay từ đỉnh p đến đỉnh kết thúc double F(dinh p,dinh cha) // tính toán giá trị hàm đánh giá p public void GBFS_algorith(RichTextBox r, ArrayList arrlCanh) // tìm kiếm đường từ đỉnh bắt đầu đến đỉnh kết thúc thuật toán GBFS Thông báo kết thông qua RichTextBox MessageBox c Xử lí kiện Sự kiện Paint PictureBox: private void pictureBox1_Paint(object sender, PaintEventArgs e) // hiển thị cạnh, đỉnh đồ thị Sự kiện nhấn chuột: private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { //nếu nhấn chuột trái if (e.Button == MouseButtons.Left) { foreach (dinh temp in pList) // nhấn vào đỉnh if (temp.ifChecked(e.X, e.Y)) { drag = true; // cập nhật tọa độ đỉnh đầu, đỉnh cuối cạnh trùng với tọa độ tâm đỉnh nhấn c.X1 = c.X2 = temp.X; c.Y1 = c.Y2 = temp.Y; // lưu ID đỉnh đầu cạnh = ID đỉnh nhấn c.P1 = temp.getID; return; } // nhấn vị trí “trống” if (ID

Ngày đăng: 25/03/2014, 22:19

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan