Các thuật toán tìm đường đi ngắn nhất trong đồ thị lý thuyết, thuật toán và ứng dụng

74 967 0
Các thuật toán tìm đường đi ngắn nhất trong đồ thị lý thuyết, thuật toán và ứ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

MỤC LỤC LỜI NÓI ĐẦU Chương I: MỘT SỐ KIẾN THỨC CƠ BẢN TRONG LÝ THUYẾT ĐỒ THỊ 1.1 Các khái niệm lý thuyết đồ thị 1.1.1 Định nghĩa đồ thị 1.1.2 Các thuật ngữ 1.1.3 Định nghĩa đường đi, chu trình, đồ thị liên thông 1.2 Đường ngắn 11 1.2.1 Đường ngắn xuất phát từ đỉnh 11 1.2.2 Đường đồ thị chu trình 11 1.2.3 Đường ngắn hai cặp đỉnh 14 1.3 Một số toán dẫn đến toán tìm đường ngắn đồ thị 15 1.3.1 Tìm đường ngắn từ điểm A đến điểm B thành phố 15 1.3.2 Tối ưu hệ thống mạng truyền dẫn 18 Chương II: ĐƯỜNG ĐI NGẮN NHẤT TỪ MỘT ĐỈNH 21 2.1.Thuật toán Bellman-Ford 27 2.2 Thuật toán Dijkstra 31 2.3 Thuật toán tìm kiếm A* 37 Chương III : ĐƯỜNG ĐI NGẮN NHẤT GIỮA TẤT CẢ CÁC CẶP ĐỈNH 40 3.1 Thuật toán Floyd-Warshall 48 3.2 Thuật toán Johnson 55 Chương IV: ỨNG DỤNG THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT VÀO MÔ HÌNH HỆ THỐNG ROUTING TĨNH 60 4.1 Nguyên lý hoạt động Router hệ thống mạng 60 4.2 Ứng dụng thuật toán (Dijkstra) 69 4.3 Thiết kế chương trình áp dụng thuật toán (Floyd-Warshall) 71 4.4 Kết thử nghiệm 71 TÀI LIỆU THAM KHẢO 73 LỜI NÓI ĐẦU 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 Đồ thị 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ử 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 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 : 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 Trong đời sống, thường gặp tình sau: để từ điểm A đến điểm B thành phố, có nhiều đường đi, nhiều cách đi; có lúc ta chọn đường ngắn (theo nghĩa cự ly), có lúc lại cần trọn đường nhanh (theo nghĩa thời gian),v.v… Mục đích đề tài tìm hiểu, nghiên cứu thuật toán tìm đường ngắn đồ thị phục vụ việc nghiên cứu khoa học ứng dụng vào thực tiễn Củng cố rèn luyện kỹ lập trình, nhớ lại thuật toán Chương I : Một số kiến thức lý thuyết đồ thị Chương II : Đường ngắn từ đỉnh Chương III : Đường ngắn tất cặp đỉnh Chương IV : Ứng dụng thuật toán tìm đường ngắn vào mô hình hệ thống routing tĩnh Chương I: MỘT SỐ KIẾN THỨC CƠ BẢN TRONG LÝ THUYẾT ĐỒ 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ị Để hình dung 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 1.1 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 1.1 Sơ đồ mạng máy tính Nhận thấy 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 nối với Sơ đồ mạng máy tính cho hình gọi đơn đồ thị vô hướng ta đến định nghĩa sau: Định nghĩa Đơ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 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 cho hình 1.2 Đồng Nai Hà Tây An Giang Huế Hà Nội Bình Định TPHCM Khánh Hòa Quảng Ngãi Phú Yên Hình 1.2 Sơ đồ mạng máy tính với đa kênh thoại Định nghĩa Đa đồ thị vô hướng G=(V,E) bao gồm V tập đỉnh, E họ cặp 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 Đồng Nai Hà Tây Huế Hà Nội TPHCM An Giang Bình Định Khánh Hòa Quảng Ngãi Phú Yên Hình 1.3 Sơ đồ mạng máy tính với kênh thông báo Rõ ràng đơn đồ thị đa đồ thị, đ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 Mạng cho hình 1.3 Như đa đồ thị mô tả mạng 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, định nghĩa sau: Định nghĩa Giả đồ thị vô hướng G=(V,E) bao gồm V tập đỉnh, E họ cặp thứ tự gồm hai phần tử (không thiết phải khác nhau) V gọi cạnh Cạnh e gọi khuyến có dạng e=(u,u) 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 1.4 máy chủ Hà Nội nhận tin từ máy địa phương, có số máy gửi tin đi, kênh thoại cho phép truyền tin theo hai chiều thay hai cạnh có hướng ngược chiều Hà Tây Đồng Nai Hà Nội Phú Yên Huế TPHCM An Giang Bình Định Khánh Hòa Hình 1.4 Mạng máy tính với kênh thoại chiều Định nghĩa Đơ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 Nếu mạng có đa kênh thoại chiều, ta phải sử dụng đến khái niệm đa đồ thị có hướng: Định nghĩa Đa đồ thị có hướng G=(V,E) bao gồm V tập đỉnh,và E họ cặp có thứ tự gồm hai phần tử khác V gọi cung Hai cung e1 e2 tương ứng với cặp đỉnh gọi cung lặp Trong phần chủ yếu làm việc với đơn đồ thị vô hướng đơn đồ thị có hướng Vì vậy, ngắn gọn, ta bỏ qua tính từ đơn nhắc đến chúng 1.1.2 Các thuật ngữ Trong mục trình bày số thuật ngữ lý thuyết đồ thị Trước tiên, ta xét thuật ngữ mô tả đỉnh cạnh đồ thị vô hướng Định nghĩa Hai đỉnh u v đồ thị có hướng G gọi kề (u,v) cạnh đồ thị G Nếu e=(u,v) cạnh đồ thị ta nói cạnh 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) Để biết có cạnh liên thuộc với đỉnh, ta đưa vào định nghĩa sau Định nghĩa Ta gọi bậc đỉnh v đồ thị vô hướng số cạnh liên thuộc với ta kí hiệu deg(v) b a c f e d g Hình 1.5 Đồ thị vô hướng Thí dụ Xét đồ thị cho hình 1.5, ta có deg(a)=1, deg(b)=4 , deg(c)=4 , deg(f)=3, deg(d)=1 , deg(e)=3 , deg(g)=0 Đỉnh bậc gọi đỉnh cô lập, đỉnh bậc gọi đỉnh treo Trong ví dụ đỉnh g đỉnh cô lập, a d đỉnh treo Bậc đỉnh có tính chất sau : Định lý Giả sử G=(V,E) đồ thị vô hướng với m cạnh Khi 2m=  deg(v) vV Chứng minh Rõ ràng cạnh e=(u,v) tính lần deg(u) lần deg(v) Từ suy tổng tất bậc đỉnh hai lần số cạnh Thí dụ Đồ thị với n đỉnh đỉnh có bậc có cạnh ? Giải: Theo định lý 1, ta có 2m=6n Từ suy số cạnh đồ thị 3n Hệ Trong đồ thị vô hướng, số đỉnh bậc lẻ (nghĩa có bậc số lẻ) số chẵn Chứng minh Thực vậy, gọi O U tương ứng tập đỉnh bậc lẻ tập đỉnh bậc chẵn đồ thị,ta có 2m=  deg(v) +  deg(v) +  deg(v) vV vO vU Do deg(v) chẵn với v đỉnh U nên tổng thứ hai vế phải số chẵn Từ suy tổng thứ (chính tổng bậc đỉnh bậc lẻ) phải số chẵn, tất số hạng số lẻ, nên tổng phải gồm số chẵn số hạng Vì vậy, số đỉnh bậc lẻ phải số chẵn Ta xét thuật ngữ tương tự cho đồ thị có hướng Định nghĩa Nếu e=(u,v) cung đồ thị có hướng G ta nói hai đỉnh u v kề nhau, nói cung(u,v) nối đỉnh u với đỉnh v nói cung khỏi đỉnh u vào đỉnh v Đinh u (v) gọi đỉnh đầu (cuối) cung (u,v) Tương tự khái niệm bậc, đồ thị có hướng ta có khái niệm bán bậc (vào) đỉnh Định nghĩa Ta gọi bán bậc (vào) đỉnh v đồ thị có hướng số cung đồ thị khỏi (đi vào nó) kí hiệu deg+(v)(deg-(v)) a e b c d Hình 1.6 Đồ thị có hướng G Thí dụ Xét đồ thị cho hình 1.6 Ta có deg-(a)=1, deg-(b)=2, deg-(c)=2, deg-(d)=2, deg-(e)=2 deg+(a)=3, deg+(b)=1 deg+(c)=1, deg+(d)=2, deg+(e)=2 Do cung (u,v) tính lần bán bậc vào đỉnh v lần bán bậc đỉnh u nên ta có Định lý Giả sử G=(V,E) đồ thị có hướng,  deg  vV (v)   deg  (v) | E | vV Rất nhiều tính chất đồ thị có hướng không phụ thuộc vào hướng cung Vì vậy, nhiều trường hợp thuận tiện ta bỏ qua hướng cung đồ thị Đồ thị vô hướng thu cách bỏ qua hướng cung gọi đồ thị vô hướng tương ứng với đồ thị có hướng cho 1.1.3 Định nghĩa đường đi, chu trình, đồ thị liên thông Định nghĩa Đường độ dài n từ đỉnh u đến đỉnh v, n số nguyên dương, đồ thị vô hướng G=(V,E) dãy xo, x1 , , xn-1 , xn u= xo , v= xn , (xi , xi+1) ∈ E , i=0,1,2, ,n-1 Đường nói biểu diễn dạng cạnh: (xo, x1) , (xo, x2), , (xn-1 , xn) Đỉnh u gọi đỉnh đầu, đỉnh v gọi đỉnh cuối đường Đường có đỉnh đầu trùng với đỉnh cuối (tức u=v) gọi chu trình Đường hay chu trình gọi đơn cạnh bị lặp lại Thí dụ Trên đồ thị vô hướng cho hình 1.7: a,d,c,f,e đường đơn độ dài Còn d,e,c,a không đường (e,c) cạnh đồ thị Dãy b,c,f,e,b chu trình độ dài Đường a,b,e,d,a,b có độ dài là đường đơn, cạnh (a,b) có mặt hai lần a d b e c a b f d e Hình 1.7 Đường đồ thị c f Khái niệm đường chu trình đồ thị có hướng định nghĩa hoàn toàn tương tự trường hợp đồ thị vô hướng, khác ta ý đến hướng cung Định nghĩa Đường độ dài n từ đỉnh u đến đỉnh v, n số nguyên dương, đồ thị có hướng G=(V,A) dãy , u= , , , , v= ,( , ) ∈ A , i= 0, 1, , , n-1 Đường nói biểu diễn dạng cung: ( , ), , ), , ( , ) Đỉnh u gọi đỉnh đầu, đỉnh v gọi đỉnh cuối đường Đường có đỉnh đầu trùng với đỉnh cuối (tức u=v) gọi chu trình Đường hay chu trình gọi đơn cung bị lặp lại Thí dụ Trên đồ thị có hướng cho hình 1: a độ dài Còn d e c d c f e đường đơn a không đường (e,c) cung đồ thị Dãy b,c,f,e,b chu trình độ dài Đường a b e d a b có độ dài là đường đơn, cung (a,b) có mặt hai lần Xét mạng máy tính Một câu hỏi đặt hai máy tính mạng trao đổi thông tin với trực tiếp qua kênh nối chúng thông qua vài máy tính trung gian mạng ? Nếu sử dụng đồ thị để biểu diễn mạng máy tính (trong đỉnh đồ thị tương ứng với máy tính, cạnh tương ứng với kênh nối) câu hỏi phát biểu ngôn ngữ đồ thị sau: Tồn hay đường cặp đỉnh đồ thị ? Định nghĩa Đồ thị vô hướng G=(V,E) gọi liên thông tìm đường hai đỉnh Như hai máy tính mạng trao đổi thông tin với đồ thị tương ứng với mạng đồ thị liên thông Thí dụ Trong hình 1.8: Đồ thị G liên thông, đồ thị H không liên thông a b H1 c d e H2 g f (G) H3 (H) Hình 1.8 Đồ thị liên thông G đồ thị H gồm thành phần liên thông H1,H2,H3 Định nghĩa Ta gọi đồ thị đồ thị G=(V,E) đồ thị H=(W,F), W ⊆ V F ⊆ E Trong trường hợp đồ thị không liên thông, rã thành số đồ thị liên thông đôi đỉnh chung Những đồ thị liên thông ta gọi thành phần liên thông đồ thị Thí dụ Đồ thị H hình 1.8 gồm thành phần liên thông H1,H2,H3 Trong mạng máy tính có máy (những kênh nối) mà hỏng hóc ảnh hưởng đến việc trao đổi thông tin mạng Các khái niệm tương ứng với tình đưa định nghĩa sau Định nghĩa Đỉnh v gọi đỉnh rẽ nhánh việc loại bỏ v với cạnh liên thuộc với khỏi đồ thị làm tăng số thành phần liên thông đồ thị Cạnh e gọi cầu việc loại bỏ khỏi đồ thị làm tăng số thành phần liên thông đồ thị Thí dụ Trong đồ thị G hình 2, đỉnh d e đỉnh rẽ nhánh, cạnh (d,g) (e,f) cầu Đối với đồ thị có hướng có hai khái niệm liên thông phụ thuộc vào việc ta có xét đến hướng cung hay không Định nghĩa Đồ thị có hướng G=(V,A) gọi liên thông mạnh tìm đường hai đỉnh 59 đặt h(v) = (s,v) tính thuật toán Bellman-Ford for cạnh (u,v)  E[G’] dow(u,v) w(u,v) + h(u) – h(v)_ for đỉnh u V[G] µ,u) để tính $(u,v) với v  V[G] chạy DIJKSTRA(G, w for đỉnh v  V[G] 10  11 d u ,v   (u, v)  h(v)  h(u ) 12 return D Đoạn mã đơn giản thực hành động mà trước Dòng sinh G’ Dòng chạy thuật toán Bellman-Ford G’ với hàm trọng số w đỉnh nguồn s Nếu G’, G, chứa chu trình trọng số âm, dòng thông báo điều Các dòng 4-11 giả sử G không chứa chu trình trọng số âm Dòng 4-5 đặt h(v) giá trị trọng số đường ngắn (s,v) tính thuật toán Bellman-Ford với đỉnh v  V’ Dòng 6-7 tính hàm trọng số µ Với cặp đỉnh u,v  V, vòng lặp for dòng 8-11 tính trọng số w đường ngắn $(u,v) cách gọi thuật toán Dijkstra lần cho đỉnh V Dòng 11 lưu lại ma trận , trọng số đường ngắn (u,v), tính phương trình (3.10) Cuối cùng, dòng 1-2 trả ma trận D đầy đủ Hình 3.6 minh hoạ việc thực thuật toán Johnson Nếu hàng đợi ưu tiên thuật toán Dijkstra cài đặt dựa heap Fibonaci, thời gian chạy thuật toán Johnson O(V2lgV + VE) Cài đặt đơn giản heap nhị phân cho ta thuật toán chạy thời gian O(VElgV), thuật toán mặt tiệm cận chạy nhanh thuật toán Floyd-Warshall đồ thị thưa 60 Chương IV: ỨNG DỤNG THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT VÀO MÔ HÌNH HỆ THỐNG ROUTING TĨNH 4.1 Nguyên lý hoạt động Router hệ thống mạng Giao thức định tuyến động không thực chức tự tìm đường cập nhật bảng định tuyến, xác định tuyến đường tốt thay tuyến đường tốt sử dụng Khả thích ứng nhanh với thay đổi mạng lợi rõ rệt giao thức định tuyến động so với giao thức định tuyến tĩnh Yếu tố trình truyền thông thực thể truyền thông phải nói ngôn ngữ Đối với giao thức định tuyến IP vậy, có giao thức định tuyến IP động chọn lựa; router sử dụng giao thức RIP router khác sử dụng giao thức OSPF, chúng chia sẻ thông tin định tuyến chúng không nói loại ngôn ngữ Chúng ta tìm hiểu giao thức định tuyến động sử dụng, chí xem xét cách router nói nhiều loại ngôn ngữ, trước hết khám phá đặc tính vấn đề phát sinh thường gặp giao thức định tuyến Cơ giao thức định tuyến Tất giao thức định tuyến động xây dựng dựa giải thuật Một cách tổng quan, giải thuật tiến trình (procedure) nhằm giải vấn đề Một giải thuật định tuyến tối thiểu phải xử lý tiến trình sau : Tiến trình chuyển thông tin định tuyến cho router khác Tiến trình nhận thông tin định tuyến từ router khác Tiến trình xác định tuyến đường tốt dựa thông tin nhận từ router khác Tiến trình để router phản ứng với thay đổi hệ thống mạng Một số vấn đề thường gặp giao thức định tuyến : trình xác định đường đi, metrics, hội tụ khả phân tải (load balancing) Quá trình xác định đường 61 Trên hình topo mạng đơn giản với router Router A nhận mạng 192.168.1.0, 192.168.2.0, 192.168.3.0 có interfaces nằm mạng Router B nhận mạng 192.168.3.0, 192.168.4.0, 192.168.5.0 192.168.6.0 Router C nhận mạng 192.168.6.0, 192.168.7.0, 192.168.1.0 Nhìn lướt qua tiến trình chia sẻ thông tin router đơn giản Chúng ta xem xét Router A: Router A kiểm tra địa IP subnetmask tương ứng phát mạng gắn trực tiếp : 192.168.1.0; 192.168.2.0; 192.168.3.0 Router A đưa thông tin mạng bảng định tuyến nó, đia kèm theo trường Flag dùng để mạng mạng nối trực tiếp Router A tạo gói tin với nội dung sau: “Những mạng nối trực tiếp với 192.168.1.0; 192.168.2.0; 192.168.3.0” Router A truyền thông tin đó, hay gọi tin định tuyến cập nhật, tới Router B Router C Router B C thực bước tương tự, gửi tin cập nhật mạng nối trực tiếp chúng tới Router A Router A nhận thông tin đưa vào bảng định tuyến với địa Router gửi tin Lúc Router A nhận tất subnets mạng địa router mà subnets gắn vào 62 Tiến trình xem đơn giản Vậy lại có nhiều giao thức định tuyến giao thức định tuyến lại phức tạp Chúng ta xem lại ví dụ : Sau đưa thông tin vào bảng định tuyến, Router A làm tiếp với tin cập nhật nhận từ B C Ví dụ, liệu Router A có gửi thông tin định tuyến nhận từ B tới C thông tin định tuyến nhận từ C đến B không ? Nếu Router A không chuyển tiếp thông tin cập nhật trên, việc chia sẻ thông tin định tuyến không thành công Ví dụ, kết nối B C không tồn tại, hai Router phát subnets Do đó, Router A phải chuyển tiếp thông tin cập nhật, lại tạo số vấn đề Nếu Router A nhận biết mạng 192.168.4.0 từ B C, chọn Router để tới mạng Cả tuyến đường liệu có hay ko ? Tuyến đường tốt Cơ chế sử dụng để đảm bảo tất router nhận thông tin định tuyến mà không làm cho gói tin định tuyến bị loop mạng Metrics Khi có nhiều tuyến đường để đến mạng đích, Router phải có chế để tính toán tìm đường tốt Metric biến số gán cho routes, có ý nghĩa xếp hạng routes từ tốt đến dở Chúng ta quay lại ví dụ để giải thích cần thiết Metrics Trong ví dụ trên, bảng định tuyến Router A có dạng đơn giản sau : 63 Trong bảng định tuyến này, với mạng đích cùng, Router A tới chúng thông qua Router B Router C Nhưng ví dụ mạng 192.168.7.0 tới thông qua B C, tuyến đường tuyến đường ưa thích Các giao thức định tuyến khác sử dụng loại metric khác Ví dụ, RIP xác định tuyến đường tốt tuyến đường có số lượng hop (router) EIGRP xác định tuyến đường tốt dựa kết hợp băng thông tổng độ trễ tuyến đường Các metric sử dụng : Hop count, bandwidth, load, delay, reliability, cost Sự hội tụ mạng (convergence) Một đặc tính quan trọng giao thức định tuyến thông tin định tuyến bảng định tuyến tất router mạng phải xác Nếu Router A ví dụ xác định tuyến đường tốt đến mạng 192.168.6.0 qua Router C Router C lại xác định tuyến đường tốt để đến mạng 192.168.6.0 qua Router A Khi Router A gửi gói tin có địa đích 192.168.5.0 tới Router C, Router C liền gửi lại cho Router A, Router A lại gửi cho Router C, trình tiếp diễn tạo routing loop Tiến trình đưa tất bảng định tuyến router vào trạng thái đồng xác gọi hội tụ Thời gian cần thiết để chia sẻ thông tin qua mạng tất router tính toán tuyến đường tốt gọi thời gian hội tụ 64 Ví dụ thể mạng hội tụ, thời điểm to xuất thay đổi mạng Kết nối router bên trái bị đứt, router phát cố lớp physical datalink bắt đầu tiến trình thông báo cho router kế cận cố Các router kế cận cập nhật bảng định tuyến chúng đồng thời thông báo cho router kế cận chúng, tiến trình tiếp diễn tất router biết thay đổi Chú ý thời điểm t2, router bên trái phát thay đổi mạng router bên phải chưa phát cố Chúng giữ thông tin cũ tiếp tục chuyên gói tin tới mạng Trong khoảng thời gian ngắn này, mạng chưa hội tụ, thông tin định tuyến lỗi xảy Do thời gian hội tụ phần quan trọng giao thức định tuyến Mạng hội tụ nhanh tốt Load balancing Mục đích load balancing để sử dụng băng thông mạng cách hiệu hơn, sử dụng để làm backup tuyến đường bị ngắt Distance vector routing protocols Hầu hết giao thức định tuyến động thuộc loại : distance vector link-state Hầu hết giải thuật giao thức định tuyến động distance vector 65 phục thuộc vào công trình nghiên cứu Bellman, Ford, Fulkerson, lý chúng thường gọi giải thuật Bellman Ford Ford Fulkerson Lưu ý có trường hợp đặc biệt giao thức EIGRP, dựa giải thuật phát triển Garcia Luna Aceves Cái tên distance vector bắt nguồn từ chất loại giao thức này, tuyến đường quảng bá dạng vector bao gồm cặp thông số (khoảng cách, hướng) khoảng cách tính metric hướng định nghĩa next-hop router Ví dụ, ta nói “Mạng đích A cách hop có theo hướng next-hop router X” Mỗi router học tuyến đường từ cách nhìn router hàng xóm sau đến lượt lại quảng bá tuyến đường từ cách nhìn Bởi router phụ thuộc vào router hàng xóm để lấy thông tên, router hàng xóm phụ thuộc vào router hàng xóm để lấy thông tin, giao thức định tuyến distance vector gọi “routing by rumor” Các giao thức định tuyến distance vector bao gồm : RIP for IP Xerox Networking Systems RIP Novell’s IPX RIP IGRP & EIGRP DEC’s DNA Phase IV AppleTalk’s Routing Table Maintenance Protocol (RTMP) Đặc điểm chung: Một giao thức định tuyến distance vector điển hình sử dụng giải thuật định tuyến mà router định kỳ gửi thông tin cập nhật tới tất neighbor cách quảng bá toàn bảng định tuyến Cập nhật định kỳ: Cập nhật định kỳ có nghĩa hết chu kỳ thời gian thông tin cập nhật truyền Khoảng chu kỳ từ 10 giây với AppleTalk’s RTMP tới 90 giây với IGRP Một vấn đề thông tin cập nhật gửi 66 thường xuyên xung đột CPU Overload có thê xảy ra; thông tin gửi ko thường xuyên thời gian hội tụ lớn mức cho phép Neighrbor Trong cách nhìn router, neighbors có nghĩa routers chia sẻ chung datalink Một giao thức distance vector gửi tin cập nhật tới router neighbor dựa vào chúng để chuyển thông tin cập nhật tới router neighbor chúng Vì lý này, distance vector coi sử dụng thông tin cập nhật hop-by-hop Cập nhật toàn bảng định tuyến Hầu hết giao thức distance vector sử dụng chế đơn giản nói cho neighbor tất biết cách quảng bá toàn bảng định tuyến Routing by Rumor Hình miêu tả hoạt động giải thuật distance vector Trong ví dụ này, metric sử dụng hop count Hệ thống mạng hội tụ thời điểm t3+ Tất router biết tất mạng, địa next-hop router cho mạng 67 khoảng cách để tới mạng Chúng ta sử dụng phương pháp so sánh tương tự Giả sử bị lạc đường mò mẫm đề tìm đường Rồi nhiên nhìn thấy biển báo ghi “Đến Hà Nội, 20km” Chúng ta lựa chọn khác phải tin vào dẫn Chúng ta chút thông tin để kiểm tra xem liệu có đến Hà Nội 20km không, chí hướng hay sai Giao thức distance vector tương tự vâu Các giải thuật distance vector cấp tín hiệu dẫn cho mạng Chúng cung cấp hướng khoảng cách, thêm thông tin chi tiết khó khăn lừa dối tuyến đường Và giống dấu hiệu đường ta trên, chúng ko có khả phát nạn sử đường sai Sau số khó khăn trở ngại với giao thức distance vector: Split Horizon Có loại split horizon : split horizon đơn giản split horizon kết hợp poisoned reverse Couting to Infinity Triggered Updates : Nếu metric cho tuyến đường thay đổi, router gửi tin cập nhật mà không cần chờ cho khoảng thời gian update timer expire Khẳ khôi phục hội tụ nhanh hơn, ngăn việc sử dụng couting to infinity nhiều Việc update định kỳ xảy với triggered update Theo cách vậy, router nhận thông tin không xác từ router chưa hội tụ sau có thông tin xác từ tin triggered update Những tình nhu xảy trình xác lập lại họi tụ, dù triggered update giảm thiếu tình Holddown Timers Triggered Updates tăng khả phản ứng cho mạng hội tụ Holddown timers giúp giảm thiểu khả nhận tin định tuyến sai Nếu khoảng cách tới mạng đích tăng (ví dụ, hop count tăng từ lên 4), router set holddown timer 68 cho mạng đích Cho đến khoảng thời gian expires, router không chấp nhận thêm tin cập nhật tuyến đường Chúng ta thấy rõ ràng bất lợi tính Chúng ta ngăn chặn thông tin không xác phải trả giá tăng lên thời gian hội tụ Cũng giống thông số thời gian khác, holddown timers cần phải cấu hình cẩn thận Nếu holddown timer ngắn, ko hiệu quả, dài, khả định tuyến thông thường bị ảnh hưởng Asynchronous Updates Link-State Routing Protocols Thông tin có ích distance vector giống biển đường Còn thông tin sử dụng link-state lại giống đồ Một router link-state dễ dàng thực định định tuyến sai lầm, có nhìn tổng thể toàn hệ thống mạng Lý là, không giống cách tiếp cận routing-by-rumor distance vector, router linkstate nhận thông tin trực tiếp từ peer router (peer router router chạy giao thức định tuyến) Mỗi router tạo thông tin thân nó, kết nối trực tiếp đến (directly connected links), trạng thái đường link router neighbors trực tiếp Thông tin sau chuyển tới router khác, router tạo copy thông tin này, không thay đổi thông tin Mục tiêu cuối để tất router có nhìn thông toàn mạng, sau chúng tính toán độc lập để tìm đường tốt Giao thức link state, đôi lúc gọi giao thức shortest path first distributed database, xây dựng dựa giải thuật tiếng _ giải thuật Dijkstra Một số giao thức link state là: Open Shortest Path First (OSPF) for IP IS-IS for CLNS IP DEC’s NLSP 69 Mặc dù giao thức link state phúc tạp so với distance vector, chứng cở đơn giản : Mỗi router tạo quan hệ adjacency với neighbor Mỗi router gửi đơn vị liệu có tên LSA (Link state advertisements) tới neighbor LSA liệt kê kết nối router, với kết nối, xác định tên kết nối, trạng thái kết nối, metric router interface gắn với kết nối, neighbor tham gia vào kết nối Mỗi neighbor nhận LSA đó, đến lượt nó, chuyển tiếp LSA đến neighbor Mỗi router lưu copy tất LSA nhận sở liệu Nếu tất hoạt động tốt, sở liệu tất router đồng Cơ sở liệu này, hay gọi topologi database linkstate database, sử dụng giải thuật Dijkstra để tính toán đồ thị mạng, xác định tuyến đường ngắn đến router Giao thức link state sau dựa vào link state database để tìm subnets gắn với router, đưa thông tin vào bảng định tuyến 4.2 Ứng dụng thuật toán (Dijkstra) Hình 4.1 Giao diện ứng dụng tìm kiếm đường ngắn Router mạng máy tính xây dựng ngôn ngữ Java 70 Hình 4.2 Xây dựng mô hình gồm 50 Router với chi phí Hình 4.3 Chạy chương trình tìm kiếm đường từ Router số 35 đến 30, kết thu đường ngắn với chi phí 60 đường hình 71 4.3 Thiết kế chương trình áp dụng thuật toán (Floyd-Warshall) Hình 4.4 Giao diện chương trình ngôn ngữ C# 4.4 Kết thử nghiệm Bài toán: Một hệ thống mạng gồm 11 nút mạng thông số tuyến đường hình 4.4 a Tìm đường ngắn từ Router G đến Router T b Tìm đường ngắn từ Router G đến Router W Hình 4.5 Thông số toán  Chạy chương trình ta thu được: a Tìm đường ngắn từ Router G đến Router T 72 Ta thu quãng đường sau GKCHEIT Tổng quãng đường 106 (như hình 4.6) Hình 4.6 Kết chương trình quãng đường màu xanh b Tìm đường ngắn từ Router G đến Router W Ta thu quãng đường sau GKADLNW Tổng quãng đường 98 (như hình 4.7) Hình 4.7 Kết chương trình quãng đường màu xanh 73 TÀI LIỆU THAM KHẢO Trần Quốc Chiến, Giáo trình lý thuyết đồ thị, Đại học Sư phạm Đà Nẵng Trần Quốc Chiến, “Thuật toán hoán chuyển nguồn đích có trọng số tìm luồng cực đại” Tạp chí Khoa học & Công nghệ, Đại học Sư phạm Đà Nẵng, 4(21)/2007,1-6 Brian Schwab, AI Game Engine Programming (bản điện tử) http://books.google.com.vn/books?id=UbMLAAAAQBAJ&printsec=frontcov er&hl=vi#v=onepage&q&f=false Dijkstra.E, A note on two problems in connection with graphs, Numerische Mathematik, Vol.1, 1959 Glenn Seeman, AI for Game Developers – David M.Bourg (bản điện tử) http://books.google.com.vn/books?id=Sz-SqvmhSYC&printsec=frontcover&hl=vi#v=onepage&q&f=false H.Rosen Kenneth, Toán rời rạc ứng dụng tin học (bản dịch tiếng Việt) Nxb KHKT, Hà Nội, 1997 H.Cormen Thomas, Charles E.Leiserson, Ronald L.Rivest, Introduction To Algorithms, The MIT Press, 1999 H Cormen Thomas , Charles E Leiserson, Ronald L Rivest, and Clifford Stein Introduction to Algorithms, Second Edition MIT Press and McGrawHill, 2001 Section 24.1: The Bellman-Ford algorithm, pp 588–592 H Cormen Thomas , Charles E Leiserson, Ronald L Rivest, and Clifford Stein Introduction to Algorithms, Second Edition MIT Press and McGrawHill, 2001 10 J Misra K M Chandy, Distributed Computation on Graphs, Shortest Path Algorithms, University of Texax at Autin, November 1982 11 Richard Bellman: On a Routing Problem, Quarterly of Applied Mathematics, 16(1), pp 87–90, 1958 12 Wikipedia - http://en.wikipedia.org/wiki/Main_Page [...]... trung vào bài toán tìm đường đi ngắn nhất từ một đỉnh: cho trước một đồ thị G = (V,E), chúng ta muốn tìm một đường đi ngắn nhất từ một đỉnh nguồn cho trước s  V đến mỗi đỉnh v  V Có rất nhiều bài toán có thể giải được bằng thuật toán cho bài toán tìm đường đi ngắn nhất từ một đỉnh, trong đó có các biến thể sau đây: - Tìm đường đi ngắn nhất đến một đỉnh - Tìm đường đi ngắn nhất giữa một cặp - Tìm đường. .. của thuật toán là O(n3) 1.3 Một số bài toán dẫn đến bài toán tìm đường đi ngắn nhất trong đồ thị 1.3.1 Tìm đường đi ngắn nhất từ đi m A đến đi m B trong thành phố Trong đời sống, chúng ta thường gặp những tình huống như sau: để đi từ địa đi m A đến địa đi m B trong thành phố, có nhiều đường đi, nhiều cách đi; có lúc ta chọn đường đi ngắn nhất (theo nghĩa cự ly), có lúc lại cần chọn đường đi nhanh nhất. .. là một đồ thị định hướng G’ = (V’, E’) trong đó V’ V, E’ E, sao cho 1) V’ là tập các đỉnh có thể đến được từ s trong G 2) G’ tạo thành một cây có gốc là s và 3) Với mọi vV’, đường đi duy nhất từ s đến v trong G’ là một đường đi ngắn nhất từ s đến v trong G Các đường đi ngắn nhất không nhất thiết là duy nhất, và cây đường đi ngắn nhất cũng không nhất thiết là duy nhất Hình 2.2 minh hoạ một đồ thị định... dẫn Bài toán tìm đường đi ngắn nhất là một bài toán khá quan trọng trong quá trình thiết kế và phân tích mạng Hầu hết các bài toán định tuyến có thể giải quyết như giải quyết bài toán tìm đường đi ngắn nhất khi một “độ dài” thích hợp được gắn vào mỗi cạnh (hoặc cung) trong mạng Trong khi các thuật toán thiết kế thì cố gắng tìm kiếm cách tạo ra các mạng thỏa mãn tiêu chẩn độ dài đường đi Ta xét các graph... đều gọi INITIALIZE-SINGLE-SOURCE và sau đó thực hiện lặp thủ tục giãn các cạnh.Hơn nữa, thủ tục giãn chỉ có tác dụng nếu nhờ đó đánh giá đường đi ngắn nhất và đỉnh trước thay đổi Các thuật toán trong chương này khác nhau ở chỗ chúng giãn mỗi cạnh bao nhiêu lần và thứ tự mà theo đó chúng giãn các cạnh Trong thuật toán Dijkstra và thuật toán tìm đường đi ngắn nhất cho đồ thị định hướng không có chu trình,... một đồ thị định hướng có trọng số và hai cây đường đi ngắn nhất với cùng một gốc 26 Hình 2.2 (a) Một đồ thị định hướng có trọng số với các trọng số đường đi ngắn nhất từ đỉnh nguồn s (b) Các cạnh tô đậm tạo thành một cây đường đi ngắn nhất có gốc là đỉnh nguồn s (c) Một đường đi ngắn nhất khác với cùng gốc Phép giãn (Relaxing) Thuật toán trong chương này sử dụng kĩ thuật giãn.Với một đỉnh vV, chúng... lớn hơn Thuật toán tìm đường đi ngắn nhất trên đồ thị không có chu trình được mô tả trong sơ đồ sau đây: Procedure Critical_Path; (* Tìm đường đi ngắn nhất từ đỉnh nguồn đến tất cả các đỉnh còn lại trên đồ thị không có chu trình *) Đầu vào: Đồ thị G=(V,E) trong đó V= { v[1], v[2], , v[n] } Đối với mỗi cung (v[i],v[j])  E ta có i

Ngày đăng: 25/05/2016, 22:46

Từ khóa liên quan

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

Tài liệu liên quan