Bài tập lớn mạng máy tính xây DỰNG CHƯƠNG TRÌNH mô PHỎNG THUẬT TOÁN tìm ĐƯỜNG đi NGẮN NHẤT

26 769 0
Bài tập lớn mạng máy tính xây DỰNG CHƯƠNG TRÌNH mô PHỎNG THUẬT TOÁN tìm ĐƯỜNG đi NGẮN NHẤT

Đ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

Bài tập lớn mạng máy tính xây DỰNG CHƯƠNG TRÌNH mô PHỎNG THUẬT TOÁN tìm ĐƯỜNG đi NGẮN NHẤT Bài tập lớn mạng máy tính xây DỰNG CHƯƠNG TRÌNH mô PHỎNG THUẬT TOÁN tìm ĐƯỜNG đi NGẮN NHẤT Bài tập lớn mạng máy tính xây DỰNG CHƯƠNG TRÌNH mô PHỎNG THUẬT TOÁN tìm ĐƯỜNG đi NGẮN NHẤT

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG - - BÁO CÁO MẠNG MÁY TÍNH Nhóm 10 Đề tài 9: XÂY DỰNG CHƯƠNG TRÌNH PHỎNG THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT MỤC LỤC DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ LỜI NÓI ĐẦU Sự phát triển Internet đồng nghĩa với việc tăng trưởng quy công nghệ nhiều loại mạng LAN, WAN … Và đặc biệt lưu lượng thông tin mạng tăng đáng kể Chính điều làm cho vấn đề chia sẻ thông tin mạng vấn đề định tuyến trở nên quan trọng hết Trong việc thiết kế mạng lựa chọn giao thức định tuyến cho phù hợp với chi phí, tài nguyên tổ chức đặc biệt quan trọng Internet phát triển mạnh, lượng người truy nhập tăng yêu cầu định tuyến phải tin cậy, tốc độ chuyển mạch nhanh không gây lặp mạng Hơn nhiều tổ chức tham gia vào mạng nhiều giao thức đưa vào sử dụng dẫn đến phức tạp định tuyến gia tăng, số lượng giao thức để phục vụ cho việc định tuyến có nhiều Việc hiểu biết thiết kế mạng thông tin cỡ lớn có sử dụng thiết bị định tuyến trở thành nhu cầu vô cấp thiết thực tế Nó đòi hỏi người thiết kế mạng phải có hiểu biết sâu giao thức sử dụng cho việc thiết kế mạng loại giao thức định tuyến khác Trong giới hạn tập lớn chúng em xin chọn đề tài “Lập trình hình định tuyến sử dụng thuật tốn tìm đường ngắn – Shortest path routing" Trong trình thực đề tài này, chúng em cố gắng để hồn thành tốt có lẽ vốn kiến thức hạn hẹp yếu tố khách quan khác mà không tránh khỏi thiếu sót Chúng em mong đóng góp ý kiến, phê bình hướng dẫn thêm thầy bạn đọc Cuối chúng em xin gửi lời cảm ơn chân thành tới thầy TS hướng dẫn chúng em hoàn thành tập lớn Chúng em xin chân thành cảm ơn! 1.1 CƠ SỞ LÝ THUYẾT 1.2 Tìm hiểu khái niệm định tuyến mạng thông tin 1.2.1 Định tuyến (Routing) Định tuyến trình chọn lựa đường mạng máy tính để giử liệu qua Việc định tuyến thực cho nhiều loại mạng, có mạng điện thoại, liên mạng, Internet, mạng giao thông Định tuyến hướng, di chuyển gói (dữ liệu) đánh địa từ mạng nguồn chúng, hướng đến đích cuối thơng qua node trung gian Thiết bị phần cứng chuyên dùng gọi router (bộ định tuyến) Tiến trình định tuyến thường hướng dựa vào bảng định tuyến, bảng chứa lộ trình tốt đến đích khác mạng Vì vậy, việc xây dựng bảng định tuyến, tổ chức nhớ router, trở nên vô quan trọng cho việc định tuyến hiệu Routing khác với bridging (bắc cầu) nhiệm vụ cấu trúc địa gợi lên gần gũi địa tương tự mạng, qua cho phép nhập liệu bảng định tuyến đơn để tả lộ trình đến nhóm địa Vì thế, routing làm việc tốt bridging mạng lớn, trở thành dạng chiếm ưu việc tìm đường mạng internet 1.2.2 Các lớp thuật toán định tuyến Thuật toán vector (distance – vector routing protocol): Thuật toán dùng thuật tốn Bellman-Ford Nó định số, gọi trọng số cho liên kết node mạng Các node gửi thông tin từ điểm A đến điểm B qua đường mang lại tổng trọng số thấp (là tổng trọng số kết nối node dùng) Thuật toán hoạt động với hành động đơn giản Khi node khởi động lần đầu, biết node kề trực tiếp với nó, trọng số trực tiếp để đến (thơng tin, danh sách đích, tổng trọng số node bước để gửi liệu đến tạo nên bảng định tuyến, hay bảng khoảng cách) Mỗi node, tiến trình, gửi đến "hàng xóm" tổng chi phí để đến đích mà biết Các node "hàng xóm" phân tích thơng tin so sánh với thông tin mà chúng "biết"; điều cải thiện thơng tin chugns có đưa vào bảng định tuyến Đến kết thúc, tất node mạng tìm bước truyền kế tiếp, tối ưu đến tất đích tổng chi phí tốt Thuật toán trạng thái kết nối (Link-state routing protocols) Khi áp dụng thuật toán trạng thái kết nối, node sử dụng sở liệu đồ mạng với dạng đồ thị Để làm điều này, node phát tới tổng thể mạng thông tin node khác mà kết nối node góp thơng tin cách độc lập vào đồ Sử dụng đồ này, router sau định tuyến đường tốt từ đến node khác Các router trao đổi gói tin LSA với router khác Đây gói tin nhỏ, chứa thông tin router Mỗi router dựa vào LSA để tìm đường Mỗi router xác định xác topology mạng Chính router đưa định để đưa packet đến đích tốt Mỗi router mạng báo cáo trạng thái nó, link nối trực tiếp trạng thái link Router nhân thông tin với tất router mạng Cuối tất router mạng có nhìn giống topology mạng Thuật toán làm theo cách thuật toán Dijkstra (thuật tốn mà ta tìm hiểu ứng dụng), cách xây dựng cấu trúc liệu khác, dạng cây, node gốc chứa node khác mạng Bắt đầu với ban đầu chứa Sau tụ tập node chưa thêm vào cây, thêm node có trọng số thấp để đến node có Tiếp tục q trình đến node thêm Cây sau phục vụ để xây dựng bảng định tuyến, đưa bước truyền tối ưu để từ node đến kì node khác mạng Thuật tốn định tuyến trạng thái kết nối phản ứng nhanh nhạy khoảng thời gian có hạn, thay đổi kết nối Ngồi ra, gói gửi qua mạng định tuyến trạng thái kết nối nhỏ gói dùng định tuyến vector 1.3 Giao thức định tuyến Giao thức định tuyến dùng thi hành thuật toán định tuyến để thuận tiện cho việc trao đổi thông tin mạng, cho phép router xây dựng bảng định tuyến cách linh hoạt Trong số trường hợp, giao thức định tuyến tự chạy đè lên giao thức định tuyến Giao thức định tuyến gồm dạng sau đấy: Giao thức định tuyến trong: - Router Information Protocol (RIP) - Open Shortest Path First (OSPF) - Intermedicate System to Intermedicate System (IS-IS) - Interior Gateway Routing Protocol (IGRP) - Enhanced IGRP (EIGRP) Giao thức định tuyến ngoài: - Exterior Gateway Protocol (EGP) - Border Gateway Protocol (BGP) - Constrained Shortest Path First (CSPF) 1.4 Lý thuyết Graph Một Graph G, định nghĩa tập đỉnh V tập cạnh E Các đỉnh thường gọi nút (node) chúng biểu diễn vị trí (ví dụ điểm chứa lưu lượng khu vực chứa thiết bị truyền thông) Các cạnh gọi liên kết chúng biểu diễn phương tiện truyền thơng Graph biểu diễn sau: G = (V, E) Hình ví dụ Graph Hình 1: Một graph đơn giản Theo lý thuyết, V tập hợp rỗng khơng có xác định thực tế, V tập hợp xác định khác rỗng, nghĩa biểu diễn: V = {vi |i = 1, 2, , N} Trong N số lượng nút Tương tự E biểu diễn: E = {ej |j = 1, 2, , M} Một liên kết ej tương ứng với kết nối cặp nút Có thể biểu diễn liên kết ej nút i k bởi: ej = (vi, vk) ej = (i,k) Một liên kết gọi tới nút hai điểm cuối liên kết Nút i k gọi kề tồn liên kết (i,k) chúng Những nút xem nút "hàng xóm" Bậc nút số lượng liên kết tới nút số lượng nút hàng xóm Một liên kết có hai hướng Khi thứ tự nút khơng có ý nghĩa Ngược lại, thứ tự nút có ý nghĩa Trong trường hợp thứ tự nút có ý nghĩa, liên kết xem cung định nghĩa: aj = [vi, vk] aj = [i, k] k gọi cận kề hướng i cung [i,k] tồn bậc hướng i số lượng cung Một graph gọi mạng liên kết nút có mặt liên kết chứa thuộc tính độ dài, dung lượng, loại, Các mạng sử dụng để hình vấn đề cần quan tâm truyền thơng, thuộc tính riêng biệt nút liên kết liên quan đến vấn đề cụ thể truyền thông Một graph có liên kết gọi graph vơ hướng, graph có cung gọi graph hữu hướng Một graph hữu hướng có liên kết vô hướng Thông thường, graph giả sử vơ hướng phân biệt khơng có ý nghĩa Có thể có khả xảy tượng xuất nhiều liên kết cặp nút Những liên kết gọi liên kết song song Một graph có liên kết song song gọi multigraph Cũng có khả xuất liên kết nút nút Những liên kết gọi self loop Một graph khơng có liên kết song song self loop gọi graph đơn giản Một graph phức tạp trình bày Hình 2, đó, nút B nút C có self loop, liên kết [A, D], [A, B] liên kết song song Hình Một graph phức tạp 10 đường ngắn từ j tới k Vì thế, tìm đường ngắn cơng thức đệ quy: Hình Các đường ngắn lồng Dxy độ dài đường ngắn từ x tới y Vấn đề đặt phải có cách khởi động đệ quy đó, khơng thể khởi động với tất giá trị vế phải phương trình Thuật tốn Dijkstra phù hợp cho việc tìm đường ngắn từ nút I tới tất nút khác Bắt đầu việc thiết lập: dii = dij = ∞ ∀i≠j Sau thiết lập dij  (dik, dij + ljk) Tại giai đoạn trình, giá trị d ik giá trị ước lượng có đường ngắn từ i tới k thực độ dài đương ngắn tìm thời điểm Xem d jk nhãn nút k Quá trình sử dụng nút để triển khai nhãn cho nút khác gọi trình quét nút Thực tương tự, tiếp tục tìm nút chưa quét có nhãn bé quét Chú ý rằng, giả thiết tất ljk dương, nút khơng thể gán cho nút khác nhãn bé nhãn nút Vì vậy, nút quét việc quét lại thiết khơng xảy Nếu nhãn nút thay đổi, nút phải quét lại Ví dụ : xét mạng hình sau, đường ghép nối trọng số tương ứng với chi phí đường, để đơn giản ta coi trọng số theo hai chiều nhau, thực tế chúng khác giá trị Để 12 chọn đường dẫn ngắn từ nguồn tới tất nút mạng, đòi hỏi phải có kiến thức cấu hình tổng thể mạng (danh sách nút ghép nối chúng) chi phí đường nối Điều dẫn tới việc tính tốn tập trung dựa thông tin đầy đủ lưu sở liệu trung tâm (Central Database) Hình Ví dụ mạng Thuật tốn thực theo bước, xây dựng hình đường ngắn (Shortest Path Tree) có gốc nút nguồn (nút 1) Các đường dẫn ngắn tới k nút khác tính tốn k bước, chúng tập hợp lại tập N Coi D(v) khoảng cách (tổng trọng số đường nối dọc theo đường dẫn) từ nút nguồn tới nút v Coi l(i, j) chi phí cho hai nút i j Thuật toán gồm bước: 1) Bước khởi đầu Đặt N = {1} (tập N ban đầu gồm nút), với nút v N đặt D(v) = 1(1,v), với nút không nối trực tiếp với nút ta coi chi phí ∞ 2) Bước lặp Tìm nút w khơng thuộc N cho D(w) tối thiểu bổ sung w vào tập N Sau thay D(v) cho tồn nút khơng thuộc N lại cách tính: D(v)  min[D(v), D(w) + l(w,v)] 13 Bước lặp lại tất nút có N Sau thực hiện, ta có bước tả Bảng 1: Bảng tả bước thực thuật toán Dijkstra Bước Tập N {1} {1,2} {1,2,3} {1,2,3,6} {1,2,3,6,4} {1,2,3,6,4,5 D(2) 2 2 D(3) ∞ 3 3 D(4) ∞ ∞ 4 D(5) ∞ ∞ 5 D(6) 3 3 } hình đường ngắn lấy nút làm nút nguồn tả Hình 5: Hình hình đường ngắn Từ đó, ta có bảng định tuyến cho nút Bảng 2: Bảng Bảng chọn tuyến cho nút Đích Nút 14 Với thuật toán ta tính tuyến đường cho đường dẫn ngắn cho nút, cụ thể ta coi nút nút nguồn thực bước giải thuật kể Trong trường hợp chọn tuyến theo phương thức tập trung, NMC gửi bảng chọn tuyến cho nút sau thiết lập xong, mạng sử dụng phương thức phân bố nút phải tính lấy bảng định tuyến, sử dụng thông tin tổng thể (được cung cấp nút lân cận NMC) chọn đường dẫn cho riêng 1.5.2 Thuật toán Bellman Ford Thuật toán Bellman Ford thuật toán khác dạng thuật toán Dijkstra, dựa vào việc quét nút theo thứ tự mà chúng đánh nhãn Việc loại trừ việc phải tìm nhãn nhỏ nhất, nút cần quét nhiều lần Trong dạng đơn giản nhất, thuật toán Bellman Ford trì hàng đợi nút để quét Khi nút đánh nhãn, thêm vào hàng đợi trừ tồn hàng đợi Hàng đợi quản lý theo quy tắc vào trước, trước (FIFO) Vì nút quét theo thứ tự mà chúng đánh nhãn Nếu nút đánh nhãn lại sau nút qt thêm vào sau hàng đợi quét lần Cho graph liên thông G = {V, E}, cần tìm khoảng cách ngắn đường từ nút s đến tất nút khác Thuật tốn tả theo bước sau: 1) Thiết lập hàm xác định nút tiền bối s π(s) = s chi phí d(v) bằng: • ∞ với v ≠ u0 • với v = u0 Nếu |V| = kết thúc Tạo hàng đợi FIFO Q nút quét Đưa s vào Q 2) Lấy đỉnh hàng đợi h, kiểm tra chi phí nút lân cận u, d(u) > d(h) + d(hu) đưa u vào hàng đợi gán: 15 d(u) = d(h) + d(hu) π(u) = h 3) Lặp lại B2 Q = {∅} Hình Một graph đơn giản Ví dụ minh họa cho graph đơn giản Hình Yêu cầu đặt tìm quãng đường ngắn từ B đến D Theo bước giải thuật nêu, ta có Bảng minh họa rõ cách thực thuật toán Bellman Ford Bảng Chi tiết bước giải Bước A B C D ∞ ∞ ∞ ∞ 7 Kết đường ngắn từ B đến D giải theo giải thuật Bellman Ford là: B  A  C  D với tổng chi phí là: 16 Ngồi thuật tốn Bellman Ford Dijkstra, tốn tìm đường ngắn có số giải thuật khác Floyd thuật toán mở rộng khác Dựa theo tính chất tốn cụ thể, ta lựa chọn giải thuật cho phù hợp Những sở lý thuyết quan trọng hỗ trợ nhiều việc lập trình phần mềm đề cập đến chương 17 1.6 XÂY DỰNG PHẦN MỀM PHỎNG TÌM ĐƯỜNG ĐI NGẮN NHẤT (SHORTEST PATH ROUTING) BẰNG THUẬT TOÁN DIJKSTRA 1.7 Phương pháp thực Trong đề tài này, nhóm em sử dụng ngơn ngữ Java để viết chương trình trình biên dịch NetBeans Lưu đồ thuật tốn chương trình: Hình Lưu đồ thuật tốn chương trình 18 Dựa theo sở lý thuyết giải thuật Dijkstra, chúng em xây dựng lưu đồ thuật toán thể theo Hình 1.8 Kết thu Hình Giao diện phần mềm Ta sử dụng phần mềm thuật tốn Dijkstra cách: - Sử dụng đồ thị ngẫu nhiên : File -> Đồ thị ngẫu nhiên (Ctrl + R) - Tạo đồ thị: File -> Mở đồ thị (Ctrl + O) File nhập vào file txt với hàng lưu giá trị số node, node nguồn, node đích Các giá trị lưu giá node với Ví dụ : 848 03520000 30107000 51040100 20400360 19 07000203 00132046 00060405 00003650 44 224 125 99 140 222 111 334 356 99 271 198 341 331 407 213 Đây đồ thị gồm có node, ta áp dụng thuật tốn Dijkstra để tìm đường ngắn nhât tự node đến node 8, trọng số lưu tiếp theo, w[i][j] giá node i đến node j, w[i][j] = node i không nối với node j Giá trị cuối cờ flag, flag = ta nhập xong đồ thị tọa độ node ngẫu nhiên, flag = ta tiến hành đọc giá trị tọa độ node: dòng lưu giá trị tung độ hồnh độ node[1], tương tự dòng 1.8.1 Đồ thị ngẫu nhiên Ta vào File -> Đồ thị ngẫu nhiên 20 Hình Giao diện mở đồ thị ngẫu nhiên 21 Giao diện sau chạy: Hình 10 Kết sau chạy 1.8.2 Đồ thị nhập vào Ta nhập vào đồ thị sau: 848 03520000 30107000 51040100 20400360 07000203 00132046 00060405 00003650 22 44 224 125 99 140 222 111 334 356 99 271 198 341 331 407 213 Hình 11 Đồ thị nhập vào 23 Kết sau chạy: Hình 12 Kết sau chạy 24 1.9 KẾT LUẬN Đề tài trình bày giải số vấn đề sau: - Trình bày cách tổng quan lý thuyết đồ thị thuật toán giải tốn tìm đường ngắn có trọng số xác định áp dụng giải toán mẫu theo giải thuật dijkstra - Xây dựng thuật toán xây dựng thuật tốn giải tốn tìm đường ngắn Các toán đường ngắn chia thành dạng chính: - Tìm đường ngắn từ nút nguồn đến nút đích - Tìm đường ngắn từ nút nguồn đến tất nút đích - Tìm đường ngắn hai nút Bài toán đề cập đến toán dạng thứ nhất: tìm đường ngắn từ nút nguồn đến nút đích cho trước 25 TÀI LIỆU THAM KHẢO Introduction to Java Programming – Y Daniel Liang https://www.youtube.com/watch?v=VI0Wp98QCfI https://www.youtube.com/watch?v=kJApIRW_Xas https://cachhoc.net/2013/10/13/thuat-toan-tim-duong-di-ngan-nhatdijkstra-floyd 26 ... tốn xây dựng thuật tốn giải tốn tìm đường ngắn Các toán đường ngắn chia thành dạng chính: - Tìm đường ngắn từ nút nguồn đến nút đích - Tìm đường ngắn từ nút nguồn đến tất nút đích - Tìm đường ngắn. .. lồng đường ngắn nhất: nút k thuộc đường ngắn từ i tới j đường ngắn từ i tới j đường ngắn từ i tới k kết hợp với 11 đường ngắn từ j tới k Vì thế, tìm đường ngắn cơng thức đệ quy: Hình Các đường ngắn. .. nhất, có nhiều thuật toán để giải toán Trong đề tài giới thiệu hai thuật tốn đi n hình giải vấn đề thuật toán Dijkstra Bellman - Ford 1.5.1 Thuật toán Dijkstra Các thuật toán đường ngắn dựa nhận

Ngày đăng: 01/03/2018, 00:17

Từ khóa liên quan

Mục lục

  • MỤC LỤC

  • DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ

  • LỜI NÓI ĐẦU

    • 1.1. CƠ SỞ LÝ THUYẾT

      • 1.2. Tìm hiểu các khái niệm cơ bản trong định tuyến mạng thông tin

      • 1.3. Giao thức định tuyến

      • 1.4. Lý thuyết Graph

      • 1.5. Định tuyến đường đi ngắn nhất (Shortest Path Routing)

      • 1.6. XÂY DỰNG PHẦN MỀM MÔ PHỎNG TÌM ĐƯỜNG ĐI NGẮN NHẤT (SHORTEST PATH ROUTING) BẰNG THUẬT TOÁN DIJKSTRA

        • 1.7. Phương pháp thực hiện

        • 1.8. Kết quả thu được

        • 1.9. KẾT LUẬN

        • TÀI LIỆU THAM KHẢO

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

Tài liệu liên quan