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

55 630 0
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 hoàn thành luận văn hƣớng dẫn bảo cô 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 cô giáo Kính chúc quý 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 toá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 cô giáo Th.s Lƣu Thị Bích Hƣơng tham khảo số nguồn tài liệu nƣớc Internet Khóa luận hoàn toà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, xin hoàn toà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ị 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 toán tìm kiếm Breath First Search (BFS) 29 2.2 Thuật toán tìm kiếm Depth First Search (DFS) 33 2.3 Thuật toán tìm kiếm Depthwise Search 34 2.4 Thuật toán tìm kiếm tốt 35 T 2.5 Thuật toá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 toá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 toán nhƣ: tìm đƣờng ngắn hai thành phố mạng giao thông Chúng ta 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 toá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 toá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 toán tìm đƣờng ngắn cho, nhằm mục đích mô 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 toán tìm đƣờng ngắn + Xây dựng ứng dụng dựa thuật toá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 toá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 toá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 toán tìm đƣờng ngắn Cấu trúc khoá luận Ngoà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 toá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ú Yê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 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 thứ tự đỉnh phân biệt Trong trƣờng hợp hai máy tính thƣờng xuyên 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 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ó khuyên (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 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 luôn 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 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 toá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ả toá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ự đoán) chi phí đƣờng từ đỉnh n đến đích Việc chọn giá trị xấp xỉ h0(n) h(n) phƣơng pháp tổng quát đƣợc xem nhƣ nghệ thuật Giá trị chuyên gia đƣa Lúc Thuật toá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, thoát 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)[...]... L(u) nhỏ nhất {L(u): độ dài đƣờng đi ngắn nhất từ a đến u} S := S \ {u} End Định lý 4 Thuật toán Dijkstra tìm đường đi có độ dài ngắn nhất trên đồ thị sau nhãn thời gian cỡ O(n2) Chứng minh Trƣớc tìm đƣờng đi ngắn nhất từ đỉnh s đến các đỉnh còn lại của đồ thị Giả sử rằng ở một bƣớc lặp nào đó các nhãn cố định cho ta độ dài các đƣờng đi ngắn nhất từ s đến các đinh có nhãn cố định, ta sẽ 22 chứng minh... thuật toán là O(m), do mỗi cung của đồ thị phải xét qua đúng một lần Các thuật toán mô tả ở trên thƣờng đƣợc ứng dụng vào việc xây dựng nhìn phƣơng pháp giải bài toán đi u khiển việc thực hiện những dự án lớn, gọi tắt là PERT (Project Evaluation and Review Technique) và CMD ( Critical path method) 1.4.4 Đƣờng đi ngắn nhất giữa tất cả các cặp đỉnh Rõ ràng, ta có thể giải bài toán tìm đƣờng đi ngắn nhất. .. thì thủ tục tìm kiếm theo chiều sâu sẽ dừng và cho kết quả là một đƣờng đi từ n0 đến tập ĐICH Đƣờng đi nhận đƣợc theo thuật toán BFS (nếu có) sẽ là đƣờng đi ngắn nhất còn đƣờng đi nhận đƣợc theo thuật toán DFS (nếu có) có thể không phải là đƣờng đi ngắn nhất Hơn nữa, nếu đồ thị vô hạn thì thủ tục DFS có thể lặp vô hạn, thậm chí trong đồ thị G tồn tại đƣờng đi từ n0 tới tập ĐICH 32 Thuật toán: procedure... giải nếu có Vào: Cây G = (N, A), đỉnh gốc n0, tập ĐICH  N Ra: Đƣờng đi p từ đỉnh n0 tới đỉnh n*  ĐICH Ví dụ 12: Áp dụng thuật toán tìm kiếm theo chiều rộng với cây sau, tập ĐICH = {r, p} Thứ tự duyệt là: a b c d e f g h k l Đƣờng đi: a c f l p 29 Nếu trong cây G tồn tại ít nhất một đƣờng đi từ n0 tới tập ĐICH thì thủ tục tìm kiếm theo chiều rộng dừng và cho ta đƣờng đi p có độ dài ngắn nhất (thậm... Thuật toán cần phải thực hiện n-1 bƣớc lặp, vậy thời gian tính toán của thuật toán là cỡ O(n2) Định lý đƣợc chứng minh Khi đã tìm đƣợc độ dài đƣờng đi ngắn nhất d[v] thì đƣòng đi này có thể tìm dựa vào nhãn Trƣớc[v], v  V Ví dụ 10 Tìm đƣờng đi ngắn nhất từ đỉnh 1 đến các đỉnh còn lại của đồ thị ở hình sau: 23 Kết quả tính toán theo thuật toán đƣợc trình bày trong bản dƣới đây Qui ƣớc viết thành 2 phần... các bƣớc tiếp theo, vì thế ta đánh dấu Nếu chỉ cần tìm đƣờng đi ngắn nhất từ s đến một đỉnh t nào đó thì ta có thể kết thúc thuật toán khi trở thành có nhãn cố định 1.4.3 Đƣờng đi trong đồ thị không có chu trình Bây giờ ta xét trƣờng hợp riêng thứ hai của bài toán tìm đƣờng đi ngắn nhất, mà để giải nó có thể xây dựng thuật toán với độ phức tạp tính toán O(n2), đó là đồ thị không có chu trình (còn trọng... d(v) cho độ dài đƣờng đi ngắn nhất từ s đến v với mọi v  S1 là đúng với bƣớc lặp đầu tiên Theo qui nạp là suy ra thuật toán cho ta đƣờng đi ngắn nhất từ s đến mọi đỉnh của đồ thị Bây giờ sẽ đánh giá số phép toán cần thực hiện theo thuật toán Ở mỗi bƣớc lặp để tìm ra đi m u cần thực hiện O(n) phép toán, để gán nhãn lại cũng cần thực hiện một số lƣợng phép toán cũng là O(n) Thuật toán cần phải thực hiện... tính không âm của các trọng số dễ dàng suy ra rằng dãy t, v, u, không chứa đỉnh lặp lại và kết thúc ở đỉnh s Rõ ràng dãy thu đƣợc xác định đƣờng đi ngắn nhất từ s đến t 1.4.1 Đƣờng đi ngắn nhất xuất phát từ một đỉnh Phần lớn các thuật toán tìm khoảng cách giữa hai đỉnh s và t đƣợc xây dựng nhờ Thuật toántính toán, mà ta có thể mô tả đại thể nhƣ sau: từ ma trận 20 trọng số a[u, v], u, v  V, ta tính... thu đƣợc định nghĩa độ dài đuờng đi nhƣ là số cung của đƣờng đi Bài toán tìm đƣờng đi ngắn nhất trên đồ thị dƣới dạng tổng quát có thể đƣợc phát biểu dƣới dạng tổng quát nhƣ sau: Tìm đƣờng đi có độ dài nhỏ nhất từ một đỉnh xuất phát s  V đến đỉnh cuối (đích) t  V Đƣờng đi nhƣ vậy sẽ gọi là đường đi ngắn nhất từ s đến t còn độ dài của nó, sẽ kí hiệu là d(s, 19 t) và còn gọi là khoảng cách từ s đến... xét) và bắt đầu từ đó tiếp tục quá trình tìm kiếm với đỉnh này 31 + Nếu với mọi đỉnh kề với i đều đã đƣợc xét thì i coi nhƣ duyệt xong và quay trở lại tìm kiếm từ đỉnh mà từ đó ta đi đến đƣợc i Vào: Cây G = (N, A), đỉnh gốc n0, tập ĐICH  N Ra: Đƣờng đi p từ đỉnh n0 tới đỉnh n*  ĐICH Ví dụ 13: Áp dụng thuật toán tìm kiếm theo chiều sâu với cây sau, tập ĐICH = {o, p} Thứ tự duyệt: a b d h Đƣờng đi: ... vậy, em chọn đề tài Thuật toá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 toán tìm đƣờng ngắn xây dựng ứng dụng cài đặt chƣơng... độ phức tạp thuật toán O(n3) 28 Chương THUẬT TOÁN TÌM ĐƢỜNG ĐI NGẮN NHẤT 2.1 Thuật toán tìm kiếm Breath First Search (BFS) Thuật toán tìm kiếm rộng tìm kiếm tất nút mức không gian toán, trƣớc... Đƣờ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 toán tìm kiếm Breath First Search (BFS) 29 2.2 Thuật toán tìm kiếm Depth First Search (DFS) 33 2.3 Thuật

Ngày đăng: 08/11/2015, 20:08

Từ khóa liên quan

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

Tài liệu liên quan