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

(Luận văn) thuật toán dijkstra fibonacci heap, thuật toán aco tìm đường đi tối ưu và ứng dụng

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

Thông tin cơ bản

Định dạng
Số trang 74
Dung lượng 1,76 MB

Nội dung

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 lu an n va gh tn to THUẬT TOÁN DIJKSTRA FIBONACCI HEAP, THUẬT p ie TỐN ACO TÌM ĐƯỜNG ĐI TỐI ƯU VÀ ỨNG DỤNG d oa nl w u nf va an lu ll LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH oi m z at nh z m co l gm @ an Lu THÁI NGUYÊN - 2015 n va http://www.ltc.tnu.edu.vn ac th Số hóa Trung tâm Học liệu – ĐHTN si 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 lu an n va tn to p ie gh Nghiêm Quang Khải d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va http://www.ltc.tnu.edu.vn ac th Số hóa Trung tâm Học liệu – ĐHTN si 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 lu Tơi xin tỏ lịng cảm ơn thầy tận tình an hướng dẫn, giảng dạy lớp cao học 12G suốt hai năm qua, cám ơn va n tri thức thầy cô truyền thụ, cảm ơn tình cảm chân thành Xin chân thành cám ơn ý kiến đóng góp quý báu thầy cô p ie gh tn to thầy cô dành cho lớp w giáo bạn đồng nghiệp đề tài oa nl Chắc chắn đề tài không tránh khỏi thiếu sót, mong d nhận ý kiến đóng góp thầy cơ, bạn đồng nghiệp lu Thái Nguyên, ngày 10 tháng năm 2015 ll u nf va an bạn độc giả, xin chân thành cảm ơn oi m Học viên z at nh z @ m co l gm Nghiêm Quang Khải an Lu n va http://www.ltc.tnu.edu.vn ac th Số hóa Trung tâm Học liệu – ĐHTN si 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Ị lu 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ố an n va 1.3 Bài toán đường tối ưu đồ thị gh tn to 1.2 Cây p ie 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 nl w d oa 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 va an lu u nf 1.6 Kết luận chương .32 ll CHƯƠNG 33 m oi THUẬT TOÁN ĐÀN KIẾN GIẢI BÀI TỐN TÌM ĐƯỜNG ĐI TỐI ƯU 33 z at nh z 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 @ l gm 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 m co 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 an Lu 2.4 Một số vấn đề việc áp dụng ACO tìm đường tối ưu 46 n va http://www.ltc.tnu.edu.vn ac th Số hóa Trung tâm Học liệu – ĐHTN si 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 lu an n va 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 p ie gh tn to 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 d oa nl w an lu u nf va 3.3 Kết luận chương .65 ll KẾT LUẬN .67 m oi TÀI LIỆU THAM KHẢO 69 z at nh z m co l gm @ an Lu n va http://www.ltc.tnu.edu.vn ac th Số hóa Trung tâm Học liệu – ĐHTN si 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ố lu địa điểm cố định cho trước quay trở điểm xuất phát an n va - Tương tự ta có tốn tìm đường cho gói tin gửi từ nút tn to 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 p ie gh oa nl w thuyền v.v toán quan tâm d Đã có nhiều cơng trình nghiên cứu lĩnh vực có nhiều thuật an lu toán tiếng phát minh như: Thuật toán Bellman – Ford, thuật toán u nf va Dijkstra, thuật toán Floyd, thuật toán Johnson… ll Tuy nhiên việc nghiên cứu cải tiến nâng cao hiệu thuật tốn m oi tìm đường tối ưu ln nhận quan tâm nhiều người, nhiều tổ z at nh 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ĩ z m co l  Phạm vi nghiên cứu đề tài gm @ Các khái niệm đồ thị, thuật tốn tìm đường tối ưu an Lu đồ thị, cấu trúc liệu Fibonacci heap, ứng dụng cấu trúc liệu vào http://www.ltc.tnu.edu.vn ac th Số hóa Trung tâm Học liệu – ĐHTN n va việc cải tiến nâng cao hiệu thuật tốn tìm đường tối ưu đồ thị si Ứ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 toá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 tốn để giải tốn tìm đường tối ưu đồ thị lu an - Ứng dụng hai thuật toán giải số tốn tìm đường n va tối ưu mạng giao thông ie gh tn to  Đề tài gồm có chương: Chương 1: Trình bày số khái niệm đồ thị, số dạng p tốn tìm đường tối ưu đồ thị, phần chủ yếu chương trình nl w bày Fibonacci heap dùng cấu trúc liệu để cải tiến nâng cao hiệu d oa thuật tốn Dijkstra lu an Chương 2: Trình bày thuật toán tối ưu đàn kiến thuật toán ACO u nf va giải tốn tìm đường tối ưu Thuật toán đàn kiến thuật toán tương ll đối khả ứng dụng thực tế cao m oi Chương 3: Ứng dụng thuật toán Dijkstra cải tiến thuật toán đàn z at nh kiến vào việc giải số tốn tìm đường tối ưu mạng giao thông z  Ý nghĩa khoa học đề tài: @ l gm - Thuật toán Dijkstra Fibonacci heap thuật toán mạnh, m co ứ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 an Lu có ích cho người quan tâm đến lĩnh vực Đề tài có ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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 lu an n va p ie gh tn to d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ an Lu ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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ị lu Định nghĩa 1.1 Đơn đồ thị vô hướng G = (V,E) bao gồm V tập an đỉnh, E tập cặp khơng có thứ tự gồm hai phần tử khác V va n gọi cạnh [3] to gh tn Định nghĩa 1.2 Đa đồ thị vô hướng G = (V,E) bao gồm V tập p ie đỉnh, E họ cặp khơng có thứ tự gồm hai phần tử khác V w gọi cạnh Hai cạnh e1 e2 gọi cạnh lặp chúng oa nl tương ứng với cặp đỉnh [3] d Định nghĩa 1.3 Đơn đồ thị có hướng G = (V,E) bao gồm V tập lu ll u nf cung [3] va an đỉnh, E tập cặp có thứ tự gồm hai phần tử khác V gọi oi m Định nghĩa 1.4 Đa đồ thị có hướng G = (V,E) bao gồm V tập z at nh đỉ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 z với cặp đỉnh [3] m co l gm @ an Lu ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si c a d b e a) b) Hình 1.1 Hai loại đồ thị bản: lu a) Đồ thị vô hướng (6 đỉnh, cạnh) b) Đồ thị có hướng (5 đỉnh, cung) an n va 1.1.2 Các thuật ngữ tn to Định nghĩa 1.5 Hai đỉnh u v đồ thị vô hướng G gọi kề gh (u,v) cạnh đồ thị G Nếu e = (u,v) cạnh đồ thị p ie nói cạnh liên thuộc với hai đỉnh u v, nói cạnh w e nối đỉnh u đỉnh v, đồng thời đỉnh u v gọi đỉnh oa nl đầu cạnh (u,v) [3] d Để biết cạnh liên thuộc với đỉnh, lu va an đưa vào định nghĩa sau: ll u nf Định nghĩa 1.6 Gọi bậc đỉnh v đồ thị vô hướng số cạnh oi m liên thuộc với kí hiệu deg(v) gm @ vV z 2m   deg(v) [3] z at nh Định lý 1.1 Giả sử G = (V, E) đồ thị vô hướng với m cạnh Khi Hệ 1.1 Trong đồ thị vơ hướng, số đỉnh bậc lẻ (nghĩa có bậc m co l số lẻ) số chẵn [3] an Lu Đị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 ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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; lu an until (u = nil) or (nh = 0); n va end; tn to Thủ tục Init: Thủ tục tạo Fibonacci heap gồm N nút, Thủ tục PrintResult: Đưa output p ie gh quản lý biến toàn cục minH oa nl w 3.1.6.Sơ đồ thuật toán d Sơ đồ thuật toán giải tốn tìm đường ngắn có dạng sau: va an lu u nf // input: Đồ thị có hướng G, s, t ll // output: Khoảng cách đường từ s đến t BEGIN oi m Init; z at nh Enter; z m co l END gm PrintResult; @ dijkstra; an Lu ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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 lu an trình giải toán thống kê bảng 3.1 (đơn vị thời gian n va tính giây, N số đỉnh, M số cạnh): to p ie gh tn Bảng 3.1 Thống kê kết thực nghiệm chương trình giải tốn M Thời gian chạy chương trình dùng Dijkstra thường 40000 1600000 1.900 11.807 Test01 100 1000 0.056 0.040 Test02 1000 20000 0.067 0.110 Test03 10000 60000 u nf 0.094 0.174 Test04 20000 200000 ll 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 va an lu d Test00 oa nl w Tên test N Thời gian chạy chương trình dùng Dijkstra heap oi m z at nh z m co l gm 2.148 an Lu ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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 tốn Dijkstra Fibonacci heap so với thuật tốn Dijkstra ngun thủy Nhìn chung đồ thị thưa số đỉnh lớn thuật toán Dijkstra Fibonacci heap tỏ ưu việt so với thuật toán Dijkstra nguyên thủy Tuy nhiên số đỉnh có thuật tốn Dijkstra ngun thủy chạy lại nhanh (test01) Sở dĩ có tượng vì: Độ phức tạp thuật tốn Dijkstra nguyên thủy O(N2) suy số phép tính toán thuật toán cỡ lu C1N2, độ phức tạp thuật toán Dijkstra Fibonacci heap O(Nlog N + M) an suy số phép tính tốn thực tế thuật toán cỡ C2(Nlog N + M) với C1, va n C2 số Do Dijkstra Fibonacci heap phải thao tác với Fibonacci tn to heap tương đối phức tạp nên thực tế C2 > C1 N nhỏ xảy ie gh trường hợp C1N2 < C2(Nlog N + M), điều xảy thuật tốn p Dijkstra nguyên thủy chạy nhanh nl w Các tệp input test tạo hoàn toàn ngẫu nhiên, thuật d oa toán tạo file input sau: an lu - N, M, s, t nhập từ bàn phím u nf va - Dùng mảng c lưu bán bậc đỉnh, ban đầu c[i]:= 0 ll i=1 N Thực M lần sinh số ngẫu nhiên nguyên dương thuộc [1, N] oi m hàm random, sinh số i c[i] tăng đơn vị z at nh - Tạo cung xuất phát từ đỉnh i sau: z Với đỉnh i: Dùng mảng daxet để quản lý đỉnh có cung gm @ nối từ đỉnh i tới, ban đầu daxet[j]:=false  ji, daxet[i] := true Thực l c[i] lần sinh số nguyên ngẫu nhiên u thuộc [1, N] cho daxet[u] = false m co 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] an Lu true để không lặp lại cung ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 58 Thuật tố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 khơng có 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 lu N Từ nút i đến nút j có khơng q đường chiều với độ dài c(i,j) an va 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 n k nút giao thông phân biệt cho trước quay trở s tn to gh Hãy tìm hành trình cho người bán hàng cho độ dài hành p ie trình ngắn nl w 3.2.2 Mơ hình hố tốn d oa Ta coi mạng giao thơng tốn mơ hình đồ an lu thị có hướng, có trọng số sau: Mỗi nút giao thơng đỉnh đồ thị, va đoạn đường chiều nối trực tiếp hai nút giao thông cung đồ ll u nf thị Việc tìm đường ngắn từ nút giao thông s, qua k nút giao thông cho oi m trước trở s quy tốn tìm đường ngắn từ đỉnh s, qua k z at nh đỉ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 z đường chiều nối trực tiếp hai nút nói l gm @ 3.2.3 Mơ tả input, output m co Đồ thị cho dạng danh sách cung mặt khác để thuận lợi nhập an Lu liệu cho input file text Cụ thể: ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 59 Input: Được cho file text có tên TSP.INP có dạng sau: Dịng đầu số nguyên 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 lu Các dịng sau ghi số hiệu đỉnh đường ngắn xuất phát từ s thỏa an n va mãn yêu cầu toán tn to 3.2.4 Thuật toán tổng quát giải toán Bước 1: Xây dựng đồ thị G1 = (V1, E1) sau: p ie gh Thuật toán tổng quát giải toán gồm hai bước sau: w oa nl V1 gồm k +1 đỉnh đồ thị cho s k đỉnh cố định phải qua d theo yêu cầu toán lu va an E1 xây dựng sau: Hai đỉnh i, j thuộc E1 trọng số cung (i, u nf j) C(i,j) = D(i,j), D(i,j) khoảng cách từ i đến j đồ thị G cho ll Để cha ̣y đươ ̣c với N, M lớn ta dùng Dijkstra Fibonacci heap để tính D(i, j) oi m z at nh 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 toán z người chào hàng đồ thị G1) @ l gm 3.2.5 Một số hàm thủ tục chương trình m co Chương trình sử dụng thuật toán Dijkstra Fibonacci heap nên thủ an Lu tục thực thao tác Fibonacci heap trình bày mục ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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 cịn 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; lu // input: Đồ thị G Output: đồ thị G1 an n va var i:integer; tn to begin gh for i:= to k1 + p ie for j := to k1 + c[i,j] := vocung; for i := to k1+1 nl w d oa begin init(tendinh[i]); an lu dijkstra(tendinh[i]); va oi z at nh c[i,j] := vocung m if i = j then ll u nf for j:= to k1 + else c[i,j] := d[tendinh[j]]^.key; z end; l gm @ end; m co 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 an Lu ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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 lu mô tả thủ tục MMAS_cycle: an n va procedure MMAS_cycle; tn to var l: int64;d : longint; s:real; ie gh Begin p init1; nl w repeat d oa inc(buoclap); u nf va begin an lu for i:= to m libest := vocung; ll oi m w[1] :=1; fillchar(p,sizeof(p),0); z an Lu lotteryWheel(j); m co begin l for j:= to n gm l:= 0; @ daxet[1] := true; z at nh fillchar(daxet,sizeof(daxet),false); ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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; lu an if libest < lgbest then va n begin lgbest := libest; to gh tn gbest := ibest; p ie tmax:= m/lgbest; end; oa nl w tmin:= tmax/10; d pheromoneupdat; lu va an until (buoclap >= N_C); End; u nf ll 3.2.6 Sơ đồ tổng quát thuật toán giải toán Make_graph; z at nh Enter; oi m Begin z m co l End gm PrintResult; @ MMAS_cycle; an Lu ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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 lu Bảng 3.2 Thống kê kết thực nghiệm chương trình giải tốn an va n Tên test M K NC X Y SK 1000 10994 21 200000 15 1000 10994 21 10000 16 15 10994 21 200000 16 15 41 400000 20 400000 20 12 20 p ie gh tn to N nl w Test00 d oa 1000 lu 10994 1000 10994 1000 10994 41 1200 26181 51 1200 26181 51 1200 26181 51 41 ll u nf Test01 va an 1000 m oi 25 100000 z z at nh 25 400000 2 gm @ Test02 400000 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, m co l 25 ĐỘ DÀI ĐƯỜNG ĐI an Lu ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 64 Dưới kết chụp lại hình lần chạy thử chương trình với test00: lu Thống kê kết bảng 3.2 cho ta số nhận xét sau: an n va + Thuật toán ln có tính hội tụ (số vịng lặp nhiều lời giải thu tn to có xu hướng tốt (test00, test01) ie gh + Khi độ dài G-best lớn làm cho Tmin, Tmax bé, mùi đa số p cung nhanh chóng giảm Tmin, tỉ lệ Y X nhỏ khả nl w tìm lời giải tốt G-best có khó, khả hội tụ d oa chậm Ví dụ test00 y = 2, x = số vòng lặp lên đến 200000 kết an lu không tốt cho y = 16, x = mà số vòng lặp 10000 va Hay test01: Khi x = 1, y = y = 6, kết cho thấy G-best không ll u nf thay đổi số vòng lặp lên tới 400000 (khi số vòng lặp = kết oi m vậy), nhiên tăng y lên 12 thu G-best tốt thấy z at nh 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 đề z gm @ cần nghiên cứu kỹ thêm l + Khi số đỉnh G1 lớn, G1 đồ thị đầy đủ nên số cung lớn m co nên số cách lớn, dẫn đến khả tìm đường tốt G- an Lu best 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 ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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 lu - Để đảm bảo đồ thị liên thông mạnh, xuất phát từ đỉnh ta duyệt an n va vòng qua tất đỉnh theo thứ tự tăng dần quay 1, c[i, i+1] = cung khả chọn) tăng M lên đơn vị, làm tương tự với gh tn to c[i, i +1] gán cho trọng số không âm (thường lớn để p ie cung (N, 1) w - 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 đồ d oa nl thị G dạng danh sách cạnh an lu 3.3 Kết luận chương u nf va Chương luận văn áp dụng thuật toán Dijkstra Fibonacci heap ll thuật tốn MMAS để giải hai tốn có nhiều ứng dụng thực oi m tế tốn tìm đường ngắn hai điểm mạng giao thơng z at nh 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 z gm @ 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 l m co trăm lần an Lu Đố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 toán (k +1)! Vì ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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)), dùng thuật tốn khác thuật tốn Floyd độ phức tạp O(k n3) dùng thuật toá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 toán nhiều lu an n va p ie gh tn to d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ an Lu ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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 tố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 lu Fibonacci heap khơng lớn nhanh chóng xác định an va nút cực tiểu thủ tục EXTRACT_MIN Luận văn ứng dụng thành n công Dijkstra Fibonacci heap vào việc giải tốn tìm đường ngắn - Thuật toán ACO thuật toán tối ưu gần đúng, nhiên p ie gh tn to mạng giao thơng, hiệu trình bày chương w ứng dụng để giải toán thực tiễn cách hiệu Thuật oa nl ACO kết hợp thông tin heuristic thông tin cường độ vết mùi nhờ mô d hoạt động đàn kiến có ưu điểm trội sau: Việc tìm kiếm lu va an ngẫu nhiên dựa thông tin heuristic cho phép tìm kiếm linh hoạt u nf mềm dẻo miền rộng thuật toán heuristic sẵn có, cho ta lời giải ll tốt tìm lời giải tối ưu Việc sử dụng thông tin cường độ m oi vết mùi cho phép ta bước thu hẹp không gian tìm kiếm mà khơng z at nh loại bỏ lời giải tốt, nâng cao chất lượng thuật toán z Đề tài sử dụng kết hợp hai thuật toán Dijkstra Fibonacci heap @ gm ACO (MMAS) giải thành cơng tốn TSP mở rộng - l toán thường hay gặp thực tế Quá trình thực nghiệm chương trình giải m co toán cho chương trình chạy thử 03 test, kết an Lu nhận cho thấy thuật toán dùng chương trình hiệu ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 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 toá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 lu an 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 n va nhật mùi định lớn đến hiệu thuật tốn, đề tài tn to phát triển theo hướng nghiên cứu xây dựng quy tắc cập nhật mùi gh tốt ứng dụng thuật toán vào việc giải số p ie toán lĩnh vực sinh học, tin học, điện điện tử d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ an Lu ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si 69 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Đỗ Đức Đông (2012), Phương pháp tối ưu đàn kiến ứng dụng - Luận án tiến sĩ công nghệ thông tin, Trường đại học công nghệ - Đại học Quốc gia Hà Nội [2] Đỗ Xuân Lôi (1995), Cấu trúc liệu giải thuật, Nhà xuất khoa học kỹ thuật [3] Nguyễn Đức Nghĩa, Nguyễn Tơ Thành (1997), Tốn rời rạc, Nhà xuất giáo dục lu an Tiếng Anh n va tn to [4] Thomas H Cormen, Charles E Leiserson, and Ronald L Rivest (1990), Introduction to Algorithms, Cambridge, Massachusetts [5] Marco Dorigo and Thomas Stutzle (2004), Ant Colony Optimization,The MIT gh p ie Press,Cambridge, Masachusetts w [6] MIHAEL L FREDMAN, ROBERT ENDRE TARJAN (1987), Fibonacci d oa nl Heaps and Their Uses in Improved Network Optimization Algorithms ll u nf va an lu oi m z at nh z m co l gm @ an Lu ac th http://www.ltc.tnu.edu.vn n va Số hóa Trung tâm Học liệu – ĐHTN si

Ngày đăng: 24/07/2023, 09:43

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

TÀI LIỆU LIÊN QUAN

w