(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng(Luận văn thạc sĩ) Thuật toán Dijkstra Fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng
i ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THƠNG TIN&TRUYỀN THƠNG NGHIÊM QUANG KHẢI THUẬT TỐN DIJKSTRA FIBONACCI HEAP, THUẬT TỐN ACO TÌM ĐƯỜNG ĐI TỐI ƯU VÀ ỨNG DỤNG LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUYÊN - 2015 Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn ii LỜI CAM ĐOAN Tôi xin cam đoan luận văn kết nghiên cứu riêng tơi Các thơng tin trích dẫn luận văn lấy từ nguồn công khai đồng ý tác giả Các kết nêu luận văn kết nghiên cứu riêng tác giả luận văn, chưa có cơng bố cơng trình khác Thái Ngun, ngày 10 tháng năm 2015 Học viên Nghiêm Quang Khải Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn iii LỜI CẢM ƠN Được phân công trường Đại Học Công Nghệ Thông Tin Và Truyền Thông - Đại Học Thái Nguyên đồng ý thầy giáo hướng dẫn PGS - TS Đồn Văn Ban, tơi thực đề tài “Thuật toán Dijkstra Fibonacci heap, thuật tốn ACO tìm đường tối ưu ứng dụng” Để hồn thành đề tài này, tơi nhận hướng dẫn tận tình chu đáo thầy hướng dẫn PGS – TS Đoàn Văn Ban, qua cho phép tơi bày tỏ lịng biết ơn chân thành tới Thầy gia đình Thầy Tơi xin tỏ lòng cảm ơn thầy tận tình hướng dẫn, giảng dạy lớp cao học 12G suốt hai năm qua, cám ơn tri thức thầy cô truyền thụ, cảm ơn tình cảm chân thành thầy dành cho lớp Xin chân thành cám ơn ý kiến đóng góp q báu thầy giáo bạn đồng nghiệp đề tài Chắc chắn đề tài không tránh khỏi thiếu sót, mong nhận ý kiến đóng góp thầy cô, bạn đồng nghiệp bạn độc giả, xin chân thành cảm ơn Thái Nguyên, ngày 10 tháng năm 2015 Học viên Nghiêm Quang Khải Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn iv MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN iii MỞ ĐẦU .1 CHƯƠNG CÁC THUẬT TỐN TÌM ĐƯỜNG ĐI TỐI ƯU TRÊN ĐỒ THỊ 1.1 Các khái niệm lý thuyết đồ thị .4 1.1.1 Định nghĩa đồ thị 1.1.2 Các thuật ngữ 1.1.3 Đường đi, chu trình, đồ thị liên thơng .6 1.1.4 Đồ thị có trọng số 1.2 Cây 1.3 Bài toán đường tối ưu đồ thị 1.4 Thuật toán Dijkstra .10 1.4.1 Phát biểu toán 10 1.4.2.Mơ tả thuật tốn 10 1.5 Thuật toán Dijkstra kết hợp với Fibonacci heap 11 1.5.1 Hàng đợi ưu tiên 11 1.5.2 Fibonacci heap 14 1.5.3 Sơ đồ thuật toán Dijkstra kết hợp với Fibonacci Heap 30 1.6 Kết luận chương .32 CHƯƠNG 33 THUẬT TỐN ĐÀN KIẾN GIẢI BÀI TỐN TÌM ĐƯỜNG ĐI TỐI ƯU 33 2.1 Từ kiến tự nhiên đến kiến nhân tạo 33 2.1.1 Kiến tự nhiên 33 2.1.2 Kiến nhân tạo 36 2.2 Thuật toán ACO tổng quát giải toán chào hàng 37 2.2.2 Thuật toán ACO tổng quát giải toán TSP 38 2.3 Các thuật toán ACO giải toán TSP 39 2.3.1 Thuật toán AS 40 2.3.2 Thuật toán ACS .42 2.3.3 Thuật toán Max-Min (MMAS) 44 2.4 Một số vấn đề việc áp dụng ACO tìm đường tối ưu 46 Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn v 2.4.1 ACO kết hợp với tìm kiếm cục 46 2.4.2 Thông tin heuristic 47 2.4.3 Số lượng kiến 47 2.4.4 Tham số bay 48 2.4.5 Một số đề xuất cải tiến .48 2.5 Kết luận chương .49 CHƯƠNG 50 ỨNG DỤNG THUẬT TOÁN DIJKSTRA FIBONACCI HEAP, THUẬT TOÁN ACO GIẢI CÁC BÀI TỐN TÌM ĐƯỜNG ĐI TRÊN MẠNG GIAO THÔNG 50 3.1 Ứng dụng Dijkstra Fibonacci heap 50 13.1.1 Phát biểu toán 50 3.1.2 Mơ hình hố tốn .50 3.1.3 Mô tả input, output 50 3.1.4 Một số kiểu liệu biến chương trình .51 3.1.5 Một số hàm thủ tục chương trình 52 3.1.6.Sơ đồ thuật toán 55 3.1.7 Các kết thực nghiệm giải toán 56 3.2 Ứng dụng Dijkstra Fibonacci heap, ACO giải toán TSP mở rộng 58 3.2.1 Phát biểu toán 58 3.2.2 Mơ hình hố tốn .58 3.2.3 Mô tả input, output 58 3.2.4 Thuật toán tổng quát giải toán 59 3.2.5 Một số hàm thủ tục chương trình 59 3.2.6 Sơ đồ tổng quát thuật toán giải toán 62 3.2.7 Các kết thực nghiệm giải toán 63 3.3 Kết luận chương .65 KẾT LUẬN .67 TÀI LIỆU THAM KHẢO 69 Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn MỞ ĐẦU Thuật tốn tìm đường tối ưu có nhiều ứng dụng thực tế, xây dựng thuật toán tốt giúp tiết kiệm nhiều tiền bạc, thời gian, công sức người Một số tốn thực tế điển hình cần phải sử dụng thuật tốn tìm đường tối ưu như: - Tìm đường từ địa điểm A đến địa điểm B cho độ dài đường tối ưu nhanh giá cước nhỏ - Tìm đường ngắn xuất từ điểm cho trước, qua số địa điểm cố định cho trước quay trở điểm xuất phát - Tương tự ta có tốn tìm đường cho gói tin gửi từ nút A đến nút B mạng máy tính cho giá cước nhỏ nhanh - Tìm đường tối ưu cho robot, cho tên lửa hành trình, máy bay, phi thuyền v.v tốn quan tâm Đã có nhiều cơng trình nghiên cứu lĩnh vực có nhiều thuật toán tiếng phát minh như: Thuật toán Bellman – Ford, thuật toán Dijkstra, thuật toán Floyd, thuật toán Johnson… Tuy nhiên việc nghiên cứu cải tiến nâng cao hiệu thuật tốn tìm đường tối ưu nhận quan tâm nhiều người, nhiều tổ chức, quan Vì lý nói gợi ý PGS – TS Đoàn Văn Ban, tác giả chọn đề tài để nghiên cứu luận văn tốt nghiệp thạc sĩ Phạm vi nghiên cứu đề tài Các khái niệm đồ thị, thuật tốn tìm đường tối ưu đồ thị, cấu trúc liệu Fibonacci heap, ứng dụng cấu trúc liệu vào việc cải tiến nâng cao hiệu thuật tốn tìm đường tối ưu đồ thị Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn Ứng dụng thuật tốn tìm đường tối ưu đồ thị nghiên cứu để giải số tốn tìm đường tối ưu mạng giao thông Hướng nghiên cứu đề tài - Nghiên cứu thuật tốn Dijkstra tìm đường tối ưu đồ thị, nghiên cứu Fibonacci heap ứng dụng cấu trúc liệu để cải tiến thuật toán Dijkstra - Nghiên cứu thuật toán tối ưu đàn kiến, ứng dụng thuật toán để giải tốn tìm đường tối ưu đồ thị - Ứng dụng hai thuật toán giải số tốn tìm đường tối ưu mạng giao thơng Đề tài gồm có chương: Chương 1: Trình bày số khái niệm đồ thị, số dạng tốn tìm đường tối ưu đồ thị, phần chủ yếu chương trình bày Fibonacci heap dùng cấu trúc liệu để cải tiến nâng cao hiệu thuật tốn Dijkstra Chương 2: Trình bày thuật toán tối ưu đàn kiến thuật toán ACO giải tốn tìm đường tối ưu Thuật toán đàn kiến thuật toán tương đối khả ứng dụng thực tế cao Chương 3: Ứng dụng thuật toán Dijkstra cải tiến thuật toán đàn kiến vào việc giải số toán tìm đường tối ưu mạng giao thơng Ý nghĩa khoa học đề tài: - Thuật toán Dijkstra Fibonacci heap thuật tốn mạnh, ứng dụng để giải toán nghiên cứu lý thuyết thực tiễn Hiện thuật toán chưa phổ biến Việt Nam, đề tài có ích cho người quan tâm đến lĩnh vực Đề tài có Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn thể giúp cho em học sinh Chun Tin có thêm cơng cụ mạnh để giải số tốn có liên quan lập trình - Thuật tốn ACO thuật tốn gần đúng, nhiên hiệu việc giải toán thực tiễn Đề tài ứng dụng thành cơng hai thuật tốn nói vào việc giải số toán mà thực tiễn đặt Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn CHƯƠNG CÁC THUẬT TỐN TÌM ĐƯỜNG ĐI TỐI ƯU TRÊN ĐỒ THỊ 1.1 Các khái niệm lý thuyết đồ thị 1.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ị Định nghĩa 1.1 Đơn đồ thị vô hướng G = (V,E) bao gồm V tập đỉnh, E tập cặp khơng có thứ tự gồm hai phần tử khác V gọi cạnh [3] Định nghĩa 1.2 Đa đồ thị vô hướng G = (V,E) bao gồm V tập đỉnh, E họ cặp khơng có thứ tự gồm hai phần tử khác V gọi cạnh Hai cạnh e1 e2 gọi cạnh lặp chúng tương ứng với cặp đỉnh [3] Định nghĩa 1.3 Đơn đồ thị có hướng G = (V,E) bao gồm V tập đỉnh, E tập cặp có thứ tự gồm hai phần tử khác V gọi cung [3] Định nghĩa 1.4 Đa đồ thị có hướng G = (V,E) bao gồm V tập đỉnh, E họ cặp có thứ tự gồm hai phần tử khác V gọi cung Hai cung e1 e2 gọi cung lặp chúng tương ứng với cặp đỉnh [3] Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn c a d b e a) b) Hình 1.1 Hai loại đồ thị bản: a) Đồ thị vô hướng (6 đỉnh, cạnh) b) Đồ thị có hướng (5 đỉnh, cung) 1.1.2 Các thuật ngữ Định nghĩa 1.5 Hai đỉnh u v đồ thị vô hướng G gọi kề (u,v) cạnh đồ thị G Nếu e = (u,v) cạnh đồ thị nói cạnh liên thuộc với hai đỉnh u v, nói cạnh e nối đỉnh u đỉnh v, đồng thời đỉnh u v gọi đỉnh đầu cạnh (u,v) [3] Để biết cạnh liên thuộc với đỉnh, đưa vào định nghĩa sau: Định nghĩa 1.6 Gọi bậc đỉnh v đồ thị vô hướng số cạnh liên thuộc với kí hiệu deg(v) Định lý 1.1 Giả sử G = (V, E) đồ thị vơ hướng với m cạnh Khi 2m deg(v) [3] vV Hệ 1.1 Trong đồ thị vơ hướng, số đỉnh bậc lẻ (nghĩa có bậc số lẻ) số chẵn [3] Định nghĩa 1.7 Nếu e = (u,v) cung đồ thị có hướng G nói hai đỉnh u v kề nhau, nói cung (u,v) nối đỉnh u đỉnh v Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn ... toán Dijkstra - Nghiên cứu thuật toán tối ưu đàn kiến, ứng dụng thuật toán để giải toán tìm đường tối ưu đồ thị - Ứng dụng hai thuật toán giải số tốn tìm đường tối ưu mạng giao thơng Đề tài... toán ACO giải toán tìm đường tối ưu Thuật tốn đàn kiến thuật toán tương đối khả ứng dụng thực tế cao Chương 3: Ứng dụng thuật toán Dijkstra cải tiến thuật toán đàn kiến vào việc giải số tốn tìm đường. .. 50 ỨNG DỤNG THUẬT TOÁN DIJKSTRA FIBONACCI HEAP, THUẬT TOÁN ACO GIẢI CÁC BÀI TOÁN TÌM ĐƯỜNG ĐI TRÊN MẠNG GIAO THƠNG 50 3.1 Ứng dụng Dijkstra Fibonacci heap 50 13.1.1 Phát biểu toán