1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

74 4 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

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 download by : skknchat@gmail.com ii LỜI CAM ĐOAN Tôi xin cam đoan luận văn kết nghiên cứu riêng 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 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 download by : skknchat@gmail.com 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 toán ACO tìm đường tối ưu ứng dụng” Để hồn thành đề tài này, 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 truyền thụ, cảm ơn tình cảm chân thành thầy cô dành cho lớp Xin chân thành cám ơn ý kiến đóng góp quý báu thầy cô 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 download by : skknchat@gmail.com 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 download by : skknchat@gmail.com 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 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 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 download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 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ố toá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 luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung Ứ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 tốn tối ưu đàn kiến thuật toán ACO giải tố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 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 luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 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ố tốn mà thực tiễn đặt Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 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 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 luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 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] vV 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 luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 55 if (u = nil) or (u^.sohieu = t) then Break; i := head[u^.sohieu]; while i begin if Relax(u^.sohieu, adj[i].v, adj[i].w) then FIB_HEAP_DECREASE_KEY(minH,d[adj[i].v], d[u^.sohieu]^.key +adj[i].w); i := adj[i].link; end; until (u = nil) or (nh = 0); end; Thủ tục Init: Thủ tục tạo Fibonacci heap gồm N nút, quản lý biến toàn cục minH Thủ tục PrintResult: Đưa output 3.1.6.Sơ đồ thuật tốn Sơ đồ thuật tốn giải tốn tìm đường ngắn có dạng sau: // input: Đồ thị có hướng G, s, t // output: Khoảng cách đường từ s đến t BEGIN Enter; Init; dijkstra; PrintResult; END Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 56 3.1.7 Các kết thực nghiệm giải toán Thực nghiệm kiểm tra chương trình 11 test có tên Test00, Test01, , Test09, Test10 Các file input, output lưu thư mục có tên cột thứ Hình thức file output mô tả mục 3.1.3, nội dung file output test thứ - Test00: 341 25097 23364 18174 7928 10086 38541 4461 11683 34627 30000 Kết (thời gian chạy chương trình) thực nghiệm chạy chương trình giải tốn thống kê bảng 3.1 (đơn vị thời gian tính giây, N số đỉnh, M số cạnh): Bảng 3.1 Thống kê kết thực nghiệm chương trình giải tốn N Thời gian chạy chương trình dùng Dijkstra heap M Tên test Thời gian chạy chương trình dùng Dijkstra thường Test00 40000 1600000 1.900 11.807 Test01 100 1000 0.056 0.040 Test02 1000 20000 0.067 0.110 Test03 10000 60000 0.094 0.174 Test04 20000 200000 0.412 3.994 Test05 40000 600000 0.980 9.758 Test06 80000 1000000 1.398 6.196 Test07 100000 2000000 2.587 19.570 Test08 300000 3000000 2.923 70.682 Test09 1000000 5000000 7.573 > 3000 Test10 20000 400000 0.269 2.148 Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 57 Tên test cột bảng thực chất tên thư mục chứa test đó, điều cần quan tâm thời gian chạy hai chương trình cột cột Số liệu bảng chứng minh tính ưu việt thuật toán Dijkstra Fibonacci heap so với thuật toán Dijkstra nguyên thủy Nhìn chung đồ thị thưa số đỉnh lớn thuật tốn Dijkstra Fibonacci heap tỏ ưu việt so với thuật toán Dijkstra ngun thủy Tuy nhiên số đỉnh có thuật toán Dijkstra nguyên thủy chạy lại nhanh (test01) Sở dĩ có tượng vì: Độ phức tạp thuật toán Dijkstra nguyên thủy O(N2) suy số phép tính tốn thuật tốn cỡ C1N2, độ phức tạp thuật toán Dijkstra Fibonacci heap O(Nlog N + M) suy số phép tính tốn thực tế thuật tốn cỡ C2(Nlog N + M) với C1, C2 số Do Dijkstra Fibonacci heap phải thao tác với Fibonacci heap tương đối phức tạp nên thực tế C2 > C1 N nhỏ xảy trường hợp C1N2 < C2(Nlog N + M), điều xảy thuật tốn Dijkstra ngun thủy chạy nhanh Các tệp input test tạo hồn tồn ngẫu nhiên, thuật tốn tạo file input sau: - N, M, s, t nhập từ bàn phím - Dùng mảng c lưu bán bậc đỉnh, ban đầu c[i]:= 0 i=1 N Thực M lần sinh số ngẫu nhiên nguyên dương thuộc [1, N] hàm random, sinh số i c[i] tăng đơn vị - Tạo cung xuất phát từ đỉnh i sau: Với đỉnh i: Dùng mảng daxet để quản lý đỉnh có cung nối từ đỉnh i tới, ban đầu daxet[j]:=false  ji, daxet[i] := true Thực c[i] lần sinh số nguyên ngẫu nhiên u thuộc [1, N] cho daxet[u] = false Với u sinh ta có cung (i,u), trọng số cung sinh ngẫu nhiên Sau ghi cung (i,u) tệp input ta gán cho daxet[u] true để không lặp lại cung Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 58 Thuật toán mô tả cho phép ta tạo file input lưu đồ thị dạng danh sách cung với số đỉnh lớn tới hàng triệu cung bị lặp 3.2 Ứng dụng Dijkstra Fibonacci heap, ACO giải toán TSP mở rộng 3.2.1 Phát biểu tốn Cho mạng giao thơng gồm N nút, nút đánh số từ đến N Từ nút i đến nút j có khơng q đường chiều với độ dài c(i,j) Một người bán hàng, xuất phát từ nút giao thông s, phải đưa hàng đến k nút giao thông phân biệt cho trước quay trở s Hãy tìm hành trình cho người bán hàng cho độ dài hành trình ngắn 3.2.2 Mơ hình hố tốn Ta coi mạng giao thơng tốn mơ hình đồ thị có hướng, có trọng số sau: Mỗi nút giao thông đỉnh đồ thị, đoạn đường chiều nối trực tiếp hai nút giao thông cung đồ thị Việc tìm đường ngắn từ nút giao thơng s, qua k nút giao thông cho trước trở s quy tốn tìm đường ngắn từ đỉnh s, qua k đỉnh cho trước quay đỉnh s trên đồ thị có hướng G = (V ,E), với V tập đỉnh ứng với nút giao thông, E tập cung ứng với đoạn đường chiều nối trực tiếp hai nút nói 3.2.3 Mô tả input, output Đồ thị cho dạng danh sách cung mặt khác để thuận lợi nhập liệu cho input file text Cụ thể: Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 59 Input: Được cho file text có tên TSP.INP có dạng sau: Dịng đầu số ngun dương N, M, s, k, N số đỉnh, M số cung đồ thị, s đỉnh xuất phát K số đỉnh cho trước phải qua M dòng tiếp theo, dòng ghi số nguyên dương u, v, l với ý nghĩa có cung từ u đến v có độ dài (trọng số) l Dòng cuối ghi k số nguyên dương phân biệt tên đỉnh cần phải qua Output: Kết ghi file text có tên TSP.OUT có dạng sau: Dịng đầu số nguyên T độ dài đường ngắn tìm Các dòng sau ghi số hiệu đỉnh đường ngắn xuất phát từ s thỏa mãn yêu cầu toán 3.2.4 Thuật toán tổng quát giải toán Thuật toán tổng quát giải toán gồm hai bước sau: Bước 1: Xây dựng đồ thị G1 = (V1, E1) sau: V1 gồm k +1 đỉnh đồ thị cho s k đỉnh cố định phải qua theo yêu cầu toán E1 xây dựng sau: Hai đỉnh i, j thuộc E1 trọng số cung (i, j) C(i,j) = D(i,j), D(i,j) khoảng cách từ i đến j đồ thị G cho Để cha ̣y đươ ̣c với N, M lớn ta dùng Dijkstra Fibonacci heap để tính D(i, j) Bước 2: Dùng thuật tốn ACO (MMAS) tìm chu trình xuất phát từ s qua đỉnh lần đồ thị G1 (việc làm giải tốn người chào hàng đồ thị G1) 3.2.5 Một số hàm thủ tục chương trình Chương trình sử dụng thuật tốn Dijkstra Fibonacci heap nên thủ tục thực thao tác Fibonacci heap trình bày mục Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 60 3.1.5 sử dụng chương trình giải tốn Ngồi chương trình cịn sử dụng thêm số thủ tục sau: Thủ tục Make_graph: Xây dựng đồ thị G1 Thủ tục hoạt động sau: Từ đỉnh u đồ thị G1 ta dùng thủ tục Dijkstra Fibonacci heap tìm khoảng cách từ đỉnh đến tất đỉnh lại đồ thị G, từ ta tính khoảng cách từ u đến đỉnh G1 Đoạn mã chương trình mô tả thủ tục Make_graph: procedure make_graph; // input: Đồ thị G Output: đồ thị G1 var i:integer; begin for i:= to k1 + for j := to k1 + c[i,j] := vocung; for i := to k1+1 begin init(tendinh[i]); dijkstra(tendinh[i]); for j:= to k1 + if i = j then c[i,j] := vocung else c[i,j] := d[tendinh[j]]^.key; end; end; Thủ tục tkcb: Thủ tục dùng để tìm chu trình G1 thuật tốn tham lam để làm sở cho việc khởi tạo Tmax, Tmin Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 61 Thủ tục lotteryweel(k : longint): Thủ tục Thủ tục chọn ngẫu nhiên trình bày chương 2, thủ tục cho phép xác định đỉnh kiến đỉnh k Thủ tục pheromoneupdat: Cập nhật lại vết mùi trình bày chương Thủ tục init1: Khởi tạo vết mùi giá trị ban đầu cho số đại lượng Thủ tục MMAS_cycle: Thủ tục dùng để tìm chu trình ngắn G1, xuất phát từ s thỏa mãn yêu cầu toán Đoạn mã nguồn mô tả thủ tục MMAS_cycle: procedure MMAS_cycle; var l: int64;d : longint; s:real; Begin init1; repeat inc(buoclap); for i:= to m begin libest := vocung; w[1] :=1; fillchar(daxet,sizeof(daxet),false); fillchar(p,sizeof(p),0); daxet[1] := true; l:= 0; for j:= to n begin lotteryWheel(j); Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 62 l := l + c[w[j-1],w[j]]; end; l := l + c[w[n],1]; if l< libest then begin libest := l; ibest := w; end; end; if libest < lgbest then begin lgbest := libest; gbest := ibest; tmax:= m/lgbest; tmin:= tmax/10; end; pheromoneupdat; until (buoclap >= N_C); End; 3.2.6 Sơ đồ tổng quát thuật toán giải toán Begin Enter; Make_graph; MMAS_cycle; PrintResult; End Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 63 3.2.7 Các kết thực nghiệm giải toán Thực nghiệm tiến hành test, test chương trình thực 06 lần Mỗi lần thực hiện, chương trình tự động khởi tạo lại cường độ vết mùi qua 10000 vịng lặp mà độ dài G-best khơng thay đổi Kết thống kê bảng 3.2 Trong bảng 3.2: N số đỉnh (nút giao thông), M số cung (số đường chiều nối trực tiếp hai nút giao thông), K số nút giao thơng buộc phải qua, NC số vịng lặp vịng repeat, X, Y hiểu cơng thức (2.1), SK số kiến tham gia tìm lời giải Bảng 3.2 Thống kê kết thực nghiệm chương trình giải tốn Tên test Test00 Test01 Test02 N M K NC X Y SK 1000 10994 21 200000 15 1000 10994 21 10000 16 15 1000 10994 21 200000 16 15 1000 10994 41 400000 20 1000 10994 41 400000 20 1000 10994 41 400000 12 20 1200 26181 51 1 25 1200 26181 51 100000 25 1200 26181 51 400000 25 Số hóa Trung tâm Học liệu – ĐHTN ĐỘ DÀI ĐƯỜNG ĐI 116793, 118358, 117187, 116778, 116458, 116587 111766, 111968, 111415, 111944, 112052,112147 106916, 108236, 106410, 106270, 105933, 106936 208911, 208911, 208911, 208911, 208911, 208911 208911, 208911, 208911, 208911, 208911, 208911 208819, 204349, 208911, 202159, 208766, 207800 119549, 119549, 119549, 119549, 119549, 119549, 119549, 119549, 119549, 119549, 119549, 119549, 119549, 119549, 119549, 119549, 119549, 119549, http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 64 Dưới kết chụp lại hình lần chạy thử chương trình với test00: Thống kê kết bảng 3.2 cho ta số nhận xét sau: + Thuật toán ln có tính hội tụ (số vịng lặp nhiều lời giải thu có xu hướng tốt (test00, test01) + Khi độ dài G-best lớn làm cho Tmin, Tmax bé, mùi đa số cung nhanh chóng giảm Tmin, tỉ lệ Y X nhỏ khả tìm lời giải tốt G-best có khó, khả hội tụ chậm Ví dụ test00 y = 2, x = số vòng lặp lên đến 200000 kết không tốt cho y = 16, x = mà số vòng lặp 10000 Hay test01: Khi x = 1, y = y = 6, kết cho thấy G-best khơng thay đổi số vịng lặp lên tới 400000 (khi số vòng lặp = kết vậy), nhiên tăng y lên 12 thu G-best tốt thấy Tác giả đề xuất cách khắc phục tình trạng độ dài G-best lớn co độ dài G–best theo hệ số c với c tham số Tuy nhiên vấn đề cần nghiên cứu kỹ thêm + Khi số đỉnh G1 lớn, G1 đồ thị đầy đủ nên số cung lớn nên số cách lớn, dẫn đến khả tìm đường tốt Gbest có thấp thủ tục tkcb dùng thông tin heuristic mạnh tìm lời giải ban đầu tốt Kết test02 thể điều Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 65 Các tệp input test thử nghiệm chương trình tạo ngẫu nhiên theo thuật toán sau: - N, M, s, K nhập từ bàn phím - Xây dựng ma trận trọng số c đồ thị G sau: Ban đầu c[i,j] :=  i, j = N Thực M lần tìm cặp số nguyên dương ngẫu nhiên u, v thỏa mãn ≤ u ≠ v ≤ N c[u,v] = (dùng vịng lặp repeat để tìm cặp u, v) Với cặp (u,v) ta gán cho c[u,v] trọng số dương hàm random - Để đảm bảo đồ thị liên thông mạnh, xuất phát từ đỉnh ta duyệt vòng qua tất đỉnh theo thứ tự tăng dần quay 1, c[i, i+1] = c[i, i +1] gán cho trọng số không âm (thường lớn để cung khả chọn) tăng M lên đơn vị, làm tương tự với cung (N, 1) - Dựa vào ma trận trọng số c vừa xây dựng, in tệp input biểu diễn đồ thị G dạng danh sách cạnh 3.3 Kết luận chương Chương luận văn áp dụng thuật toán Dijkstra Fibonacci heap thuật tốn MMAS để giải hai tốn có nhiều ứng dụng thực tế tốn tìm đường ngắn hai điểm mạng giao thơng tốn TSP mở rộng Với tốn tìm đường ngắn nhất, áp dụng Dijkstra Fibonacci heap hiệu nhiều so với áp dụng thuật toán Dijkstra nguyên thủy Trong trường hợp số đỉnh lớn đồ thị thưa chương trình áp dụng Dijkstra Fibonacci heap chạy nhanh hàng trăm lần Đối với toán TSP mở rộng tìm lời giải xác ta phải xét tất hoán vị k +1 nên độ phức tạp thuật tốn (k +1)! Vì Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 66 chương trình thực với k nhỏ cỡ vài chục Khi áp dụng thuật toán MMAS, kết gần chương trình thực với k lên đến hàng nghìn Khi kết hợp MMAS Dijkstra Fibonacci heap phần xây dựng đồ thị G1 độ phức tạp O(k  (n log n +m)), cịn dùng thuật tốn khác thuật tốn Floyd độ phức tạp O(k n3) dùng thuật tốn Dijkstra bình thường độ phức tạp O(kn2) Vì đồ thị thưa việc dùng Dijkstra Fibonacci heap giúp nâng cao hiệu thuật tốn nhiều Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 67 KẾT LUẬN Đề tài trình bày, ứng dụng hai thuật tốn tìm đường tối ưu: - Thuật toán Dijkstra Fibonacci heap tương đối mạnh, ứng dụng để giải toán nghiên cứu lý thuyết thực tiễn Điểm mấu chốt Fibonacci heap trì hỗn số thao tác chưa cần thực cịn có thể, mục đích việc nhằm chờ đến lúc buộc phải thực cơng việc trì hỗn thực lúc nhiều cơng việc, điều giúp giảm bớt phép tính tốn Mặt khác, số lượng Fibonacci heap khơng lớn nhanh chóng xác định nút cực tiểu thủ tục EXTRACT_MIN Luận văn ứng dụng thành công Dijkstra Fibonacci heap vào việc giải tốn tìm đường ngắn mạng giao thơng, hiệu trình bày chương - Thuật tốn ACO thuật tốn tối ưu gần đúng, nhiên ứng dụng để giải toán thực tiễn cách hiệu Thuật ACO kết hợp thông tin heuristic thông tin cường độ vết mùi nhờ mô hoạt động đàn kiến có ưu điểm trội sau: Việc tìm kiếm ngẫu nhiên dựa thông tin heuristic cho phép tìm kiếm linh hoạt mềm dẻo miền rộng thuật tốn heuristic sẵn có, cho ta lời giải tốt tìm lời giải tối ưu Việc sử dụng thông tin cường độ vết mùi cho phép ta bước thu hẹp khơng gian tìm kiếm mà khơng loại bỏ lời giải tốt, nâng cao chất lượng thuật toán Đề tài sử dụng kết hợp hai thuật toán Dijkstra Fibonacci heap ACO (MMAS) giải thành cơng tốn TSP mở rộng - tốn thường hay gặp thực tế Q trình thực nghiệm chương trình giải tốn cho chương trình chạy thử 03 test, kết nhận cho thấy thuật toán dùng chương trình hiệu Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung 68 Hướng phát triển đề tài: Việc nghiên cứu cấu trúc liệu trừu tượng ứng dụng chúng để cải tiến thuật tốn, việc tìm tịi nâng cấp thuật tốn, ứng dụng thuật toán vào việc giải toán thực tiễn vấn đề nhiều người quan tâm Trong khuôn khổ luận văn nên đề tài nghiên cứu cấu trúc liệu trừu tượng Fibonacci heap ứng dụng để cải tiến thuật tốn Dijkstra tìm đường tối ưu Về thuật toán tối ưu đàn kiến dừng lại nghiên cứu ứng dụng ban đầu Trong tương lai đề tài mở rộng nghiên cứu sâu rộng cấu trúc liệu trừu tượng ứng dụng chúng Thuật toán tối ưu đàn kiến thuật toán tương đối mới, quy tắc cập nhật mùi định lớn đến hiệu thuật tốn, đề tài phát triển theo hướng nghiên cứu xây dựng quy tắc cập nhật mùi tốt ứng dụng thuật toán vào việc giải số toán lĩnh vực sinh học, tin học, điện điện tử Số hóa Trung tâm Học liệu – ĐHTN http://www.ltc.tnu.edu.vn luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung download by : skknchat@gmail.com luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung luan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dungluan.van.thac.si.thuat.toan.dijkstra.fibonacci.heap.thuat.toan.aco.tim.duong.di.toi.uu.va.ung.dung

Ngày đăng: 08/01/2024, 00:56

Xem thêm:

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

TÀI LIỆU LIÊN QUAN

w