Luận Văn Thuật toán tìm đường đi ngắn nhất và xây dựng ứng dụng

55 64 1
Luận Văn Thuật toán tìm đường đi ngắn nhất và xây dựng ứng dụng

Đ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

LỜI CẢM ƠN Em khơng hồn thành luận văn khơng có hƣớng dẫn bảo giáo Lƣu Thị Bích Hƣơng Em xin chân thành cảm ơn hƣớng dẫn Cô Xin chân thành cảm ơn giúp đỡ, động viên bạn lớp K34CNTT trình thực luận văn Là sinh viên lần đầu nghiên cứu khoa học chắn đề tài em không tránh khỏi thiếu sót, em mong đóng góp ý kiến thầy cô giáo bạn để đề tài em đƣợc hoàn thiện Một lần em xin chân thành cảm ơn công lao dạy dỗ bảo thầy giáo Kính chúc q thầy cô giáo mạnh khoẻ, tiếp tục đạt đƣợc nhiều thắng lợi nhgiên cứu khoa học nghiệp trồng ngƣời Em xin chân thành cảm ơn! Hà Nội, tháng 04 năm 2012 Sinh viên thực Ngô Thị Quyên LỜI CAM ĐOAN Tên là: Ngô Thị Quyên Sinh viên lớp: K34-CNTT, Trƣờng ĐH Sƣ Phạm Hà Nội Tôi xin cam đoan: Đề tài “Thuật tốn tìm đường ngắn xây dựng ứng dụng” kết nghiên cứu riêng tôi, dƣới hƣớng dẫn giáo Th.s Lƣu Thị Bích Hƣơng tham khảo số nguồn tài liệu nƣớc ngồi Internet Khóa luận hồn tồn khơng chép từ tài liệu có sẵn Kết nghiên cứu không trùng với tác giả khác Nếu sai, tơi xin hồn tồn chịu trách nhiệm! Hà Nội, ngày 20 tháng năm 2012 Ngƣời cam đoan Ngô Thị Quyên MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN MỞ ĐẦU Chương CÁC KHÁI NIỆM CƠ BẢN VỀ LÝ THUYẾT ĐỒ THỊ 1.1 Định nghĩa đồ thị 1.2 Các thuật ngữ 12 1.3 Định nghĩa đƣờng đi, chu trình, đồ thị liên thơng 15 1.4 Một số khái niệm 19 1.4.1 Đƣờng ngắn xuất phát từ đỉnh 20 1.4.2 Thuật toán Dijkstra 21 1.4.3 Đƣờng đồ thị khơng có chu trình 24 1.4.4 Đƣờng ngắn tất cặp đỉnh 28 Chương THUẬT TOÁN TÌM ĐƢỜNG ĐI NGẮN NHẤT 29 2.1 Thuật tốn tìm kiếm Breath First Search (BFS) 29 2.2 Thuật tốn tìm kiếm Depth First Search (DFS) 33 2.3 Thuật tốn tìm kiếm Depthwise Search 34 2.4 Thuật tốn tìm kiếm tốt 35 T 2.5 Thuật tốn tìm đƣờng có giá thành nhỏ A 38 2.6 Tìm kiếm cực tiểu sử dụng hàm đánh giá – Thuật toán A* 41 2.7 Thuật tốn tìm kiếm leo đồi 44 2.8 Tìm kiếm với tri thức bổ sung 47 Chương XÂY DỰNG ỨNG DỤNG 48 3.1 Phát biểu toán 48 3.2 Giải toán 49 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 54 TÀI LIỆU THAM KHẢO 55 MỞ ĐẦU Mục đích lý chọn đề tài 1.1 Lý chọn đề tài Lý thuyết đồ thị lĩnh vực nghiên cứu có từ lâu đời có nhiều ứng dụng đại Những tƣ tƣởng lý thuyết đồ thị đƣợc đề xuất từ năm đầu kỷ 18 nhà toán học lỗi lạc ngƣời Thụy Sĩ Leonhard Euler Chính ơng ngƣời sử dụng đồ thị để giải toán tiếng cầu thàng phố Konigsberg Đồ thị đƣợc sử dụng để giải toán nhiều lĩnh vực khác Chẳng hạn, đồ thị sử dụng để xác định mạch vòng vấn đề giải tích mạch điện Chúng ta phân biệt hợp chất hoá học hữu khác với công thức phân tử nhƣng khác cấu trúc phân tử nhờ đồ thị Chúng ta xác định xem hai máy tính mạng trao đổi thông tin đƣợc với hay không nhờ mơ hình đồ thị mạng máy tính Đồ thị có trọng số cạnh sử dụng để giải tốn nhƣ: tìm đƣờng ngắn hai thành phố mạng giao thơng Chúng ta cịn sử dụng đồ thị để giải toán lập lịch, thời khoá biểu, phân bố tần số cho trạm phát truyền hình Chính vậy, em chọn đề tài “Thuật tốn tìm đƣờng ngắn xây dựng ứng dụng” nhằm tìm hiểu khái niệm bản, toán ứng dụng quan trọng lý thuyết đồ thị, thuật tốn tìm đƣờng ngắn xây dựng ứng dụng cài đặt chƣơng trình máy tính 1.2 Mục đích Tìm hiểu khái niệm bản, toán ứng dụng quan trọng lý thuyết đồ thị, thuật toán tìm đƣờng ngắn xây dựng ứng dụng Nhiệm vụ, yêu cầu 2.1 Nhiệm vụ Phải nêu đƣợc khái niệm lý thuyết đồ thị, thuật tốn tìm đƣờng ngắn cho, nhằm mục đích mơ q trình hiển thị đƣờng dựa ngôn ngữ Visual C# 2.2 Yêu cầu Do nhiệm vụ nêu trên, luận văn phải thực đƣợc yêu cầu sau: + Trình bày khái niệm lý thuyết đồ thị + Làm rõ thuật tốn tìm đƣờng ngắn + Xây dựng ứng dụng dựa thuật tốn tìm hiểu Phƣơng pháp nghiên cứu - Phƣơng pháp nghiêm cứu lý luận: Nghiên cứu qua việc đọc sách, báo tài liệu liên quan nhằm xây dựng sở lý thuyết đề tài biện pháp cần thiết để giải vấn đề đề tài - Phƣơng pháp chuyên gia: Tham khảo ý kiến chuyên gia để thiết kế chƣơng trình phù hợp với yêu cầu thực tiễn, nội dung xử lý nhanh đáp ứng yêu cầu ngày cao ngƣời sử dụng - Phƣơng pháp thực nghiệm: Thông qua quan sát thực tế, yêu cầu sở, lý luận đƣợc nghiên cứu kết đạt đƣợc qua phƣơng pháp Đối tƣợng, phạm vi nghiên cứu 4.1 Đối tƣợng nghiên cứu Các khái niệm lý thuyết đồ thị, thuật tốn tìm đƣờng ngắn 4.2 Phạm vi nghiên cứu Phạm vi luận văn em dừng lại việc nghiên cứu phần ứng dụng việc tìm đƣờng ngắn Ý nghĩa khoa học đề tài Nếu đề tài “Thuật tốn tìm đƣờng ngắn xây dựng ứng dụng” đƣợc thực trở thành tài liệu tham khảo cho sinh viên việc nghiên cứu thuật tốn tìm đƣờng ngắn Cấu trúc khố luận Ngồi phần mở đầu kết luận, khoá luận bao gồm chƣơng: Chƣơng Các khái niệm lý thuyết đồ thị Chƣơng Lý thuyết thuật tốn tìm đƣờng ngắn Chƣơng Xây dựng ứng dụng Chương CÁC KHÁI NIỆM CƠ BẢN VỀ LÝ THUYẾT ĐỒ THỊ 1.1 Định nghĩa đồ thị Đồ thị cấu trúc rời rạc bao gồm đỉnh cạnh nối đỉnh Chúng ta phân biệt loại đồ thị khác kiểu số lƣợng cạnh nối hai đỉnh đồ thị Để hình dung đƣợc lại cần đến loại đồ thị khác nhau, nêu ví dụ sử dụng chúng để mơ tả mạng máy tính Giả sử ta có mạng gồm máy tính kênh điện thoại (gọi tắt tên thoại) nối máy tính Chúng ta biểu diễn vị trí đặt máy tính điểm kênh thoại nối chúng đoạn nối, xem hình Hà Tây Đồng Nai Huế Hà Nội An Giang TPHCM Bình Định Quãng Ngãi Phú n Khánh Hịa Hình Sơ đồ mạng máy tính Nhận thấy rằng, mạng hình 1, hai máy tính cho phép nhiều kênh thoại nối chúng, kênh thoại cho phép liên lạc hai chiều khơng có máy tính lại đƣợc nối với Sơ đồ mạng máy tính cho hình đƣợc gọi đơn đồ thị vô hướng, ta đến định nghĩa sau: Định nghĩa Một đơn đồ thị G = (V, E) gồm tập khác rỗng V mà phần tử gọi đỉnh tập E phần tử gọi cạnh, cặp khơng có thứ tự đỉnh phân biệt Trong trƣờng hợp hai máy tính thƣờng xun phải truyền tải nhiều thơng tin ngƣời ta phải nối hai máy nhiều kênh thoại Mạng với đa kênh thoại máy tính đƣợc cho hình Hình Sơ đồ mạng máy tính với đa kênh thoại Định nghĩa Một đa đồ thị G = (V, E) gồm tập khác rỗng V mà phần tử gọi đỉnh họ E phần tử gọi cạnh, cặp khơng có thứ tự đỉnh phân biệt Hai cạnh đƣợc gọi cạnh bội hay song song chúng tƣơng ứng với cặp đỉnh Hình Sơ đồ mạng máy tính với kênh thông báo Rõ ràng, đơn đồ thị đa đồ thị, nhƣng đa đồ thị đơn đồ thị, đa đồ thị có hai hay nhiều cạnh nối cặp đỉnh Trong mạng máy tính có kênh thoại nối máy tính với (chẳng hạn với mục đích thơng báo) Mạng nhƣ đƣợc cho hình Nhƣ đa đồ thị mô tả đƣợc mạng nhƣ vậy, có khun (cạnh nối đỉnh vói nó) Trong trƣờng hợp cần sử dụng đến khái niệm giả đồ thị vô hƣớng, đƣợc định nghĩa nhƣ sau: Định nghĩa Một giả đồ thị G = (V, E) gồm tập khác rỗng V mà phần tử gọi đỉnh họ E phần tử gọi cạnh, cặp khơng có thứ tự đỉnh (không thiết phân biệt) Với vV, (v, v)E ta nói có khuyên đỉnh v Các kênh thoại mạng máy tính cho phép truyền tin theo chiều Chẳng hạn hình máy chủ Hà Nội nhận tin từ 10 Đỉnh xuất phát (1), đỉnh đích (10) Kết Đƣờng tìm đƣợc sau thực thuật giải tìm đƣờng có giá thành nhỏ AT l (1), (3), (6), (10) Thuật giải AT đƣợc chứng minh ln ln tìm đƣợc đƣờng với giá thành nhỏ nhƣ tồn đƣờng đồ thị thuật giải tối ƣu theo nghĩa số đỉnh đóng q trình tìm kiếm 2.6 Tìm kiếm cực tiểu sử dụng hàm đánh giá – Thuật toán A* Đối với nhiều tốn, việc tìm kiếm đƣờng cực tiểu đƣợc định hƣớng tập trung xung quanh đƣờng tốt nhất; sử dụng thông tin đặc tả tốn gọi heuristic Đối với việc tìm kiếm đƣờng với chi phí cực tiểu, ngƣời ta sử dụng hàm đánh giá heuristic nhƣ sau: + Gọi g(n) giá cực tiểu đƣờng từ n0->n Tại đỉnh n, g(n) xác định đƣợc + Gọi h(n) giá cực tiểu đƣờng từ n->DICH, h(n) không xác định đƣợc Þ ngƣời ta tìm cách ƣớc lƣợng giá trị 41 + Đặt f0(n)=g0(n)+h0(n) dự đoán chi phí cực tiểu đƣờng từ n0->DICH có qua đỉnh n g0(n) chi phí đƣờng từ đỉnh xuất phát đến đỉnh n thời điểm xét h0(n) ƣớc lƣọng (dự đốn) chi phí đƣờng từ đỉnh n đến đích Việc chọn giá trị xấp xỉ h0(n) h(n) khơng có phƣơng pháp tổng quát đƣợc xem nhƣ nghệ thuật Giá trị chuyên gia đƣa Lúc Thuật tốn tìm kiếm cực tiểu thay việc xét hàm g hàm f 2.6.1 Thuật toán procedure A*(uo); begin g(uo)=0; f(uo)=g(uo); open:=[uo]; closed:=[]; while open[] begin loại trạng thái bên trái open, gọi u Đƣa u vào closed; if (u đích) then thơng báo thắng lợi, else begin Sinh v u; For v thuộc con(u) begin g(v):=g(u)+c[u,v]; If v không thuộc open hay closed begin f(v):=g(v)+h(v); cha(v):=u; Bỏ v vào open; end 42 If v thuộc open (tồn v’ thuộc open, cho v=v’) If g(v)

Ngày đăng: 01/08/2020, 16:51

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan