CÁC GIẢI THUẬT TÌM ĐƯỜNG ĐI NGẮN NHẤT BẰNG LÝ THUYẾT VÀ THỰC TẾ, RỒI MÔ PHỎNG TRÊN MÔI TRƯỜNG ĐỒ HỌA CỦA WINDOWS

56 677 0
CÁC GIẢI THUẬT TÌM ĐƯỜNG ĐI NGẮN NHẤT BẰNG LÝ THUYẾT VÀ THỰC TẾ, RỒI MÔ PHỎNG TRÊN MÔI TRƯỜNG ĐỒ HỌA CỦA WINDOWS

Đ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 toán tìm đường có nhiều dạng, chẳng hạn tìm đường đồ thò có hướng, vô hướng, trọng số đồ thò khoảng cách hai node hay chi phí để từ node đến node Trong đề tài em sử dụng phần mềm VISUALL C++, để thực giải thuật: Dijsktra, Bellman Ford, Shorttest Path Routing, Floyd Để từ đánh giá xem việc tìm đường lý thuyết thực tiển không Đề tài gồm hai phần: PHẦN I: Tìm hiểu giải thuật tìm đường tỉnh PHẦN II: Mô giải thuật môi trừơng đồ hoạ windows Vì thời gian hạn hẹp kiến thức có gới hạn đề tài rộng với ba người thực hai người khác chuyển đổi đề tài, nên em giải giải thuật cần thiết việc tìm đường ngắn Ngày 03 – – 1999 Sinh viên thực hiện: Lâm Thanh Minh Chương 1: MỞ ĐẦU Trong thực tế ta thường sữ dụng đến mạng lưới điện thoại, giao thông (đặc biệt đường hàng không), mạng máy tính… Chúng giữ vò trí quan trọng sống Việc nghiên cứu phát triễn kỹ thuật trọng, nhằm giải công việctrong lónh vực cách linh hoạt, ví dụ giãm chi phí it1 tốn thời gianvà nhiều hiệu Để giải tổn hao đó, việc nghiên cứu phải dựa ngành toán học lý thuyết đồ thò (GRAPH THEORY ) hay nói cách chung lý thuyết đồ thò công cụ toán học xây dựng mô hình cho vấn đề Như ta đả biết mạng điện thoại, mạng máy tính hay mạng thông tin nói chung thường có cấu trúc chung điểm liên hệ với Để mô hình liên hệ này, toán học lý thuyết đồ thò biễu diển đồ thò, đỉnh đồ thò điểm thông tin, cạnh đồ thò liên hệ củaác điểm thông tin, số gán cạnh đồ thò biễu diễn khoãng cách hay chi phí nút thông tin Để hiểu qui tắc giãm thời gian chi phí ứng dụng thực tế lý thuyết đề tài “tìm hiểu giải thuật tìm đườngđi ngắn nhấtbằng lý thuyết thực tế, mô phõng môi trường đồ họa windows” Nội dung đưa giải thuật tìm đường ngắn hai đỉnh nguồn (X) đỉnh đích (Y) dùng giải thuật để mô phõng môi trường đồ họa windows I/ Giới thiệu GRAPH (đồ thò) : Đònh nghóa : Đồ thò tập hợp đỉnh, cạnh liên hệ hai tập hợp có trật tự Kí hiệu đồ thò G(V,E) E: Tập hợp cạnh V: Tập hợp đỉnh L: Là quan hệ E V Ví dụ: Cho đồ thò G(V,E,I) sau: V={A,B,C,D} E={e,f,g,h} I={(AeB), (AfD), (BhD), (BgC)} Đồ thò biểu diễn sau: g e A C h f D phân loại đồ thò: a/ Đồ thò vô hướng đồ thò hữu hướng: • Đồ thò vô hướng : Không phân biệt cạnh nối từ đỉnh A đến đỉnh B từ đỉnh B đến đỉnh A Nghóa độ dài chiều AB chiều ngược lại BA Ví dụ đồ thò hình vẽ: B g e A C h f D • Đồ thò hữu hướng: Phân biệt cạnh nối từ đỉnh A đến đỉnh B từ đỉnh B đến đỉnh A khác B g e A C h f D b/ Đồ thò có trọng số: Là đồ thò cạnh gán số c/ Đồ thò đầy đủ: Là đồ thò có cặp đỉnh có cạnh nối chúng d/ Đồ thò liên thông: Là đồ thò mà cặp đỉnh có đường nối e/ Đường đi: Đường hai đỉnh chuỗi cạnh nối tiếp nối hai đỉnh f/ Chu trình: Là đường khép kín Cây: • đồ thò liên thông chu trình • Mọi cặp đỉnh có đường nối • Đồ thò liên thông có v đỉnh có v – cạnh • Cây phủ đồ thò liên thông đồ thò có số đỉnh với đồ thò chứa Biểu diễn đồ thò: Cho đồ thò G(V,E) Có hai cách biểu diễn đồ thò nhớ tùy theo đồ thò đầy hay thưa Đó biểu diễn ma trận danh sách a/ Danh sách kề: Danh sách kề danh sách liên kết, phần tử danh sách kề danh sách chứa đỉnh mà nối tới Cách biểu diễn thích hợp với đồ thò thưa b/ Ma trận kề: Gồm mảng cấp nxn Chứa tất đỉnh chiều dài cạnh Cách biểu diễn, phần tử a[i,j]= TRUE (hoặc 1) tức có cạnh nối từ i đến j ngược lại a[i,j] = FALSE (hoặc 0) cạnh nối từ i đến j Cách biểu diễn thích hợp cho đồ thò đầy Ví dụ: cho đồ thò B g e A C h f D Có ma trận kề là: A B C D A 1 B 1 C 0 D 1 0 Chọn cấu trúc liệu cho đồ thò: Từ việc phân tích ta nhận thấy toán cho đồ thò mạng máy tính mà đỉnh đồ thò trở thành máy tính mạng, cạnh đồ thò trở thành đường truyền nối máy tính mạng, số gán đồ thò trở thành lưu lượng đường truyền máy tính mạng Ngòai ta thấy từ đỉnh nối tới đỉnh lại hữu hạn, số đường nối Nhưng đề tài ta mô cho mạng đồ thò nên tùy theo giải thuật mà ta qui đònh cho đồ thò đồ thò hữu hướng hay vô hướng Và ta chọn cấu trúc liệu cho đồ thò ma trận kề ma trận có trọng số Chương 2: GIỚI THIỆU SƠ LƯC CÁC GIẢI THUẬT Với yêu cầu đề tài em tìm hiễu giải thuật đưa ram, dựa theo cách thức duyệt đồ thò, giải thuật: I/ Các giải thuật tìm hiểu lý thuyết: A/ Các giải thuật tìm đường tónh : * Giải thuật sử lý tuần tự: Dijkstra: Giải thuật tìm đường ngắn từ Node X(Node nguồn) đến Node Y (Node đích) thực Floyd warshall: Giải thuật tìm đường ngắn cặp đỉnh đồ thò có hướng Giải thuật Floyd thực song song hay nhiều mô hình khác Shortest path routing: Giải thuật tìm đường ngắn từ đỉnh đến tất đỉnh đồ thò có trọng số thực * Giải thuật sử lý song song : Floyd - warshall: Giải thuật tìm đường ngắn cặp đỉnh đồ thò có hướng Giải thuật Floyd thực song song hay nhiều mô hình khác Bellman Ford: Giải thuật thực song song B/ Các giải thuật tìm đường động : Flooding routing (vết dầu loang): Giải thuật tìm đường động Link sate routing Distanve vector routing C/ phương pháp tìm đường ngắn khác: Fixid routing: Tìm đường cố đònh 10 Random routing: Tìm đường tình cờ 11 Adapter routing 12 Giải thuật leo núi 13 Giải thuật giá thành nhỏ 14 Depth First search: Tìm đường theo chiều sâu 15 Breadth First searc: Tìm đường theo chiều rộng Chương 3: MỘT SỐ VẤN ĐỀ LIÊN QUAN ĐẾN VIỆC TÌM ĐƯỜNG MÔ HÌNH HỆ THỐNG ROUTING TĨNH I GIỚI THIỆU : Để xem xét hệ thống mạng phục vụ cho việc tìm đường cho truyền message Ta xây dựng mô hình mô cho mạng để nghiên cứu tính hiệu mạng phục vụ việc truyền nhận message Ở ta đánh giá thời gian delay trung bình message hệ thống Mô hình hệ thống routing tónh giống mô hình hệ thống mạng hàng, gồm hàng đơn M/M/1 Hệ thống mạng hàng mơ,û khách hàng từ hệ thống vào Slave mạng rời khỏi hệ thống phục vụ xong Khách hàng đường liên lạc mạng Đường khách hàng hệ thống xác đònh trước theo thuật giải tìm đường routing tónh (xác đònh qij_xác suất mà khách hàng sau phục vụ Slave i đến nút j) Mỗi trung tâm xử lý i tương ứng với link i mạng bao gồm Slave với tốc độ phục vụ (i hàng chờ message cần gởi mạng(có giới hạn) Hàng phục vụ theo chế FIFO Hàng đợi node có giới hạn thường tài nguyên mạng có giới hạn Tốc độ đến khách hàng (message) vào hệ thống người đánh giá hệ thống nhập vào II CÁC THÔNG SỐ CỦA HỆ THỐNG : Tốc độ phục vụ Slave i m i=tốc độ truyền link i/chiều dài message e Tốc độ đến hàng đợi Slave i l i =g i + å (qji (trong e số đường kết nối mạng j=1 Thời gian đợi trung bình message T = N/ g đó: g tốc độ đến khách hàng vào hệ thống N số khách hàng trung bình hệ thống Hệ thống mô để đánh giá thời gian chờ (delay) trung bình message hàng đợi Hệ thống mạng có giải thuật tìm đường theo phương pháp routing tónh, giao thức truyền nhận đơn giản (tức gởi từ máy đến máy khác bảo đảm nhận đúng) Hệ thống tiếp cận theo chế xếp kiện (có kiện : kiện đến message) Trạng thái hệ thống biểu diễn số message hàng đợi số trạng thái Slave máy chuẩn bò gởi message Thời gian xảy kiện chứa hàng FEL Hệ thống có đếm thống kê chứa biến : số message đợi, tổng thời gian đợi message Thời điểm đến message, thời gian Slave (máy) xây dựng message theo với giao thức mạng ngẫu nhiên phân bố theo hàm Poisson Khi có message bắt đầu gởi từ máy i tới máy j, sau thời gian truyền xác đònh trước, message đến máy trung gian k, Các máy trung gian tiếp tục gởi message tới đích (máy j) Do việc gởi tiến hành nên message lưu lại hàng đợi máy trung gian máy bận ( trạng thái BUSY ), gởi thẳng máy rãnh ( trạng thái IDLE) Hàng đợi quản lý theo chế FIFO Message (khách hàng) vào hệ thống nút khỏi hệ thống message đến đích cần gởi đến Điều kiện để kết thúc mô thời gian mô đạt đến thời gian đònh trước Vấn đề tìm đường hệ thống mạch chuyển gói phức tạp hệ thống chuyển mạch điện tử - Chức mạch chuyển gói nhận gói từ trạm nguồn cung cấp đến người nhận Để hoàn thành việc đường hay routing thông qua mạng chọn, thông thường khả cho phep nhiều Điều có nghóa đường chọn phải mạnh Đảm bảo só yêu cầu cần thiết chức đường truyền thoả mản tính chất sau: • Correctrer and Simplicity ( đơn giản) Đảm bảo packet phải đến nơi nhận thuật toán phải dể thực • Robustrer (Linh động) Có khả hoạt động sau thay đổi hệ thống Thay đổi: Topology Traffic Cũng cố bất thường xãy mạng máy tính thường xuyên • Công tối ưu: Các thuật toán phải đảm bảo công cố gắng truyền packet tới nơi nhận nhanh - Sự chọn đường thường dựa vào tiêu chuẩn đơn giản chọn đường ngắn (một đường thông qua mạng với it1 node ) thông qua mạng Tiêu chuẩn chung cho đường ngắn đường giá trò nhỏ không trường hợp đó, giá trò bao gồm cho tường đường, đường thông qua mạng bao gồm tích lũy giá trò bé - Để giải yêu cầu người ta đưa giải thuật tìm đường ngắn theo trường hợp khác nhau, mà em tìm hiểu phân tích giải thuật - Do có nhiều kỹ thật tìm đường khác Sự phân biệt chúng chủ yếu vào yếu tố liên quan đến hai chức trên, là: • Sự phân tán chức nút mạng (a) • Sự thích nghi trạng thái hành mạng (b) • Các tiêu chuẩn tối ưu để chọn đường (c) Dựa vào yếu tố (a) ta có kỹ thuật tìm đường tập trung (centralized routing) phân tán (Dynamic routing) Dựa vào yếu tố (b) ta có kỹ thuật tìm đường tónh (static routing) tìm đường động (dynamic routing) Cuối cùng, kỹ thuật chọn đườngcùng loại , theo (a) (b) lại phân biệt yếu tố (c) Tiêu chuẩn tối ưu để chọn đường xác đònh người lý mạng hoặnc người thiết kế mạng, : • Độ trể trung bình việc truyền gói tin • Số lượng nút trung giangiữa nguồn đích gói tin • Độ an toàn việc truyền tin • Cước phí truyền tin •… - Việc chọn tiêu chuẩn tối ưu, phù thuộc vào nhiiều bối cảnh mạng (topology, thông lïng, mục dđích sử dụng…) Các tiêu chuẩn thay đổi bối cảnh mạng thay đổi theo thời gian Do đưa giải thuật giải toán tìm đường ngắn - Và hiệu giải thuật khác nhau, có giải thuật cho biết kết xác sau thời gian tính toán lâu, có giải thuậtû cho kết gần đúng, tốn thời gian ngắn Do tùy thuộc vào giải thuật tương ứng (như giải thuật chọn thoả mãn thời gian nhiên đường không hoàn toàn xác) Nhưng người sử dụng luôn mong muốn tìm giải thuật tìm đường nhanh xác III Kỹ thuật tìm đường tập trung (centralized) phân tán (distributed routing) - Tìm đường tập trung: Được tập trung tồn vài trung tâm điều khiển mạng thực việc chọn đường sau gửi tìm đường tới tất nút dọc theo đường chọn Trong trường hợp thông tin tổng thể mạng cần dùng cho việc tìm đường cất giữ trung tâm điều khiển mạng Các nút mạng không gửi thông tin trạng thái chúng tới trung tâm gửi theo đònh kỳ, gửi theo kiện Tìm đường phân tán: Không tồn trung tâm điều khiển, đònh tìm đường thực nút mạng Điều đòi hỏi việc trao đổi thông tin nút, tuỳ theo mức độ thích nghi giải thuât5 sử dụng - Tìm đường tónh: Có thể tập trung hay phân tán không đáp ứng với thay đởi mạng Trong trường hợp này, chọn đường thực mà trao đổi thông tin, khôn g đo lường không cập nhật thông tin Tiêu chuẩn tối ưu để chọn đường thân đường chọn lần cho toàn cuộc, thay đổi chúng Các kỹ thuật tìm đường tónh rõ ràng đơn giản, sử dụng rộng rãi, đaặc biệt mạng tương đối ổi đònh it1 có thay đổi topology lưu thông mạng - Tìm đường động: Thu hút quan tâm nhà thuyết kế mãng khả thuyết kế đáp ứng trạng thái khác mạng, yếu tố quan trọng, đặc biệt ứng dụng, thời gian thực yêu cầu người sử dụng mạng phải có khả cung cấp đường khác để dự phòng cố thích nghi nhanh chóng với thay đổi mạng Mức độ thích hợp kỹ thuật đường đặc trưng trao đổi thông tin chọn đường mạng ⊗ Tóm lại: Trong đề tài em tìm hiểu giải thuật tìm đường lý thuyết thực tế áp dụng kỹ thuật tìm đường nêu Và tìm hiểu giải thuật tìm đường ứng dụng lý thuyết thực tế để hiểu rỏ cách áp dụng hợp lý - IV Bài toán tìm đường ngắn (SHORTEST PATH ROUTING) : Bài toán tìm đường ngắn tìm đượng đồ thò có trọng số (chiều dài) nối hai đỉnh x y cho trước với đặc tính tổng trọng số tất cạnh nhỏ tất đường từ đỉnh x đến đỉnh y Nếu tất trọng số toán trở thành toán tìm đường có cạnh nối hai đỉnh x y Trong trường hợp ta áp dụng giải thuật Breadth-First Search, trình bày phần sau Giải thuật áp dụng để giải toán tìm đường trường hợp Bắt đầu từ đỉnh x, ta sét tất đường nối từ x với cạnh, sau xét tất đường nối từ x với hai cạnh đỉnh y đựơc gặp lần Khi đường ngắn từ đỉnh x đến đỉnh y xác đònh xong Trong trường hợp tổng quát đường từ đỉnh x đến đỉnh y qua tất đỉnh đồ thò, ta thường xét toán tìm đường ngắn nối từ đỉnh x cho trước với tất đỉnh khác đồ thò Phần trình bàycác giải thuật tìm đường ngắn đồ thò hữu hướng Nguyên lý tối ưu tồn đường ngắn từ đỉnh I đến đỉnh j đỉnh k nằm đường này, ta phải có đường từ đỉnh I đến đỉnh k đường từ đỉnh k tới đỉnh j đường ngắn • Giải pháp : Thực routing đỉnh Khi đỉnh routing xong trở thành vật cản cho đỉnh chưa routing Vì vậy, phương pháp nhạy cảm với thứ tự routing đỉnh Thông thường, thứ tự routing cuả đỉnh vào mức độ quan trọng, số lượng đỉnh đường nối lượng thông tin truyền • Giải pháp song song: Thực routing tất đỉnh lúc Nó loại bỏ tính phụ thuộc thứ tự cuả giải pháp lại có độ phức tạp tính toán lớn Hiện chưa có giải thuật có độ phức tạp cấp đa thức đưa ra, giải thuật cho net có hai điểm Hiện người ta xem xét giải pháp đồng thời dựa phương pháp integer programming • Giải pháp động: Các đối tượng đỉnh chuyển động, mà ta thực việc tìm đủi đối tượng Ví dụ có hai đối tượng A B thời điểm hai đối tượng hai đỉnh khác nhau, chúng chuyển động với hai vận tốc khác Đến lúc hai đối tượng gặp nhau, điểm dừng giải pháp động A Lập trình song song Mục đích: Mục đích xử lý song song thực việc tính toán nhanh hay giải vấn đề lớn : điều khiển không lưu, dự báo thời tiết, hệ thống thời gian thực… Để giải vấn đề người ta phải chia nhỏ vấn đề sử dụng nhiều processor để tính toán song song Có hai hệ thống ứng dụng để giải vấn đề a) Máy tính song song: Máy bao gồm nhóm processor loại, kết nối với theo mô hình phép chúng hoạt động trao đổi liệu cho b) Hệ thống phân bố: Là hệ thống gồm nhiều processor có kiễu khác phân bố vùng đòa lý rộng (mạng máy tính) Đánh giá hiệu giải thuật song song: Cách tính : Lấy B vấn đề cần tính toán, n kích thước toán Độ phức tạp giải thuật để giải vấn đề T*(n) với giả sử giải thuật tốt giải thuật Gọi A thuật giải song song giải p thời gian Tp(n) máy tính song song gồm p processor Speedup có nhờ sử dụng giải thuật song song A xác đònh: Trong p số processor có sẵn hệ thống Ngoài ra, người ta đo hiệu suất giải thuật song song A độ hiệu Ep(n) Gọi T¥ (n) thời gian mà giải thuật chạy nhanh với số p Vì Tp(n) ³ T¥ (n), đó: Độ hiệu giảm nhanh p tăng vượt T1(n)/T¥ (n) •Cách tính : • • Chúng ta tạo trình ứng dụng với hổ trợ Appwizard có sẳn hàm thư viện mà ta thực chương trình hàm thư viện Cách tạo trình ứng dụng VISUAL C++: Trước lập trình ta phải tạo cửa sổ cho trình ứng dụng nhờ vào Appwizard Appwizard tạo nhiều loại trình ứng dụng khác nhau, tất muốn chương trình thực thi Hầu hết muốn Appwizard tạo lớp, đối tượng, chức có chương trình Ví dụ để tạo chương trình ta chọn mục: File, new, kích vào Project Sau ta có bước tiến hành, tùy theo yêu cầu chương trình mà ta chọn lựa khác Và ta có chương trình sau Phân tích thiết kế Trong đề tài công việc nhìn nhận tìm đường lý thuyết thực tế với giải thuật mà ta nghiên cứu trên, ta thấy có nhiều giải thuật với nhiều phương pháp tìm đường khác Tuy nhiên để mô giải thuật môi trường đồ họa, vấn đề cần thiết tìm đường đồ thò Chính người sử dụng thao tác giao diện hình để tao đường cần thiết hay Node mong muốn với ý Như lưu đồ chng trình trình bày sau: User Nhập đồ thò Xử lý tìm đường Lưu trữ tìm đường Trong Process “ xử lý “ bao gồm thành phần ba giải thuật Dijkstra, Floyd, Bellman Ford Trong giải thuật có dạng tìm đường tổng quát bước Tìm đường tổng quát tìm đường mà chúnh ta nhập đỉnh nguồn đỉnh đích chúng cho ta kết cuối giải thuật Trên giao diện hình cho biết đường từ đỉnh nguồn đến đỉnh đích thông tin chiều dài đường mà Trong đó, tìm đường bước cho hình dung giải thuật cụ thể thực Do chng trình mô giải thuật môi trường đồ họa, nên ta phải thiết kế đủ vấn đề lớn: • Tính thân thiện • Tính dể hiểu • Tính đơn giản cho giải thuật Như để cập nhật chương trình mau chóng, điều cần thiết phải tiện dụng cho User truy cập liệu vào cách nhanh chóng Chíng điều cần thiết phải suy nghó thiết kế chương trình trước, mở thông tinn lưu trữ trước đó, để tiện cho User với công việc Một thao tác nửa giao diện hình phải có tính thân thiện, tiện lợi cho cảm nhận vấn đề cần biết VISUAL C++ ngôn ngữ lập trình hổ trợ cho ta nhiều vấn đề Khi nhìn vào giao diện trình ứng dụng hiểu, thao tác dể dàng Chúng ta cần phải thiết kế chương trình cách đầy đủ, đơn giản thể tính ưu điểm nó( giải thuật) Trong đề tài dựa kiến thức yêu cầu đề tài mà em chọn ngôn ngữ VISUAL C++ để thể giải thuật Có nhiều giải thuật với nhiều phương pháp tìm đường khác nhau, cách thể kết chúng khác nhau, có nhiều giải thuật tìm đường, ta cần chọn giải thuật để thể chúng cho có kết quả, phần chọn giải thuật để từ ta có nhận xét đánh giá cho giải thuật tiêu biểu cho phương pháp tìm đường khác Trong đề tài em chọn ba giải thuật: • Dijkstra : Đại diện cho phương pháp tìm đường đồ thò • Bellman Ford : Đại diện cho phương pháp tìm đường song song đồ thò • Floyd : Đại diện cho hai cách tìm đường Nó thực hay sử lý song song • Ngoài em chọn giải thuật Flooding routing để thể việc tìm động đồ thò chưa hoàn thành Trong chương trình việc thiết kế chủ yếu nằm việc minh họa giải thuật tìm đường Và lưu đồ tổng quát sau em phân tích thiết kế Chương 6: Hiện thực chương trình Chương trình xây dựng menu lệnh sau: a menu File: Chứa lệnh Save : Dùng để lưu trữ liệu đồ thò màng hình Open : Dùng để mở file liệu đồ thò lên màng hình b menu Control: chứa lệnh gọi • vẽ mạng: Dùng để vẽ cạnh đồ thò • Gán tên cho Node: Dùng để vẽ Node đồ thò nhập tên cho Node (đỉnh) đồ thò • Nhập chi phí: Dùng để gán chi phí (trọng số) cạnh đồ thò • Xác đònh điểm đầu điểm cuối cho đường • • Menu có tác dụng cho người sử dụng dùng chuột bàng phím để vẽ mạng(đồ thò) Ví dụ: Click chuột vào menu vẽ mạng cờ bVedothi chọn ta vẽ cạnh đồ thò, cách nhấn nút trái chuột rê đến vò trí cần vẽ , nhả chuột ta cạnh tiếp tục vẽ cần * Click vào menu gán tên cho Node cờ bGanten chọn, ta DubelClick chuột phải khung đối thoại sau suất cho ta nhập tên đỉnh đồ thò c menu Run: Dùng thực giải thuật, mà người sử dụng • • • • muốn chạy chương trình với giải thuật nào, dùng chuột click vào giải thuật Kết màng hình mà ta thấy với nhiều dạng khác nhau, ứng với giải thuật Dijkstra Bellman Ford Floyd Màn hình menu lệnh thể hình vẽ dưới: Menu có tác dụng cho người sử dụng dùng chuột bàng phím để chạy giải thuật mà người sử dụng cần Chương tình xây dựng Button cho hình vẽ sau: Các button có tác dụng cho ta muốn chạy giải thuật Click chuột vào button Riêng button bò mờ hình vẽ có tác dụng ta chọn chế độ chạy bước giải thuật Dijkstra từ hình vẽ Và thực hàm sau: void CDijkstra::OnRadio1() { m_radio1 = TRUE; m_radio2 = FALSE; } void CDijkstra::OnRadio2() { m_radio2 = TRUE; m_radio1 = FALSE; } • Dialog nhập tên đỉnh hình: Khi chọn gán tên cho node trình đơn Control dublclick chuột phải dialog sau lên Khi chọn mục nhập chi phí trình đơn Control Click trái chuột hai đầu cạnh đồ thò Dialog sau xuất lên Khi chọn mục xác đònh diểm đầu điểm cuối Click chuột vào hai đỉnh đồ thò Dialog sau xuất thông báo cho ta biết node nguồn node node đích node • • • • • • • • • cấu trúc liệu chương trình: mp[] : Mảng số cho phân cho đường tong[] : Mảng chứa chi phí (trọng số) cho đường ntong[] : Mảng chứa chi phí đoạn d[][] : Mảng chứa vò trí đường Count : Biến đếm số đường đồ thò PBegin : Là đỉnh nguồn đường PEnd : Là đỉnh đích đường Tam : Điểm tạm để xét đỉng thực giải thuật BOOL CDd3View::Check(CPoint point, int md) : Dùng kiểm tra Node cố đònh hay chưa, chưa nhập vào BOOL CDd3View::CheckLabel(CString s) : Dùng kiểm tra nhản(tên) đỉnh đồ thò • BOOL CDd3View::CheckmPts(CPoint point) : chương trình xây dựng lớp chính: • Class Cdd3Doc: Lớp dùng để lưu trữ liệu chương trình để truy xuất đến thành viên liệu từ View (là nơi kiện chương trình xảy ra) thông qua hàm GetDocument(), hàm trả biến trỏ chóa đến Document, pDoc biến trỏ thực sau: - pD->mIndex - pD->mL - pD->mPts[i] - pD->mlb Lớp CDd3Doc khai báo tập tin tiêu đề dd3doc.h Và dẫn xuất từ lớp CDocument MFC sau: • class CDd3Doc : public CDocument { protected: // create from serialization only CDd3Doc(); DECLARE_DYNCREATE(CDd3Doc) struct lbel { CPoint point; CString name1; } Label[30]; int mlb; struct Distance { CPoint point1,point2; int kc; } dst[50]; int mL; UINT mIndex ; CPoint mPts[50]; // Attributes public: // Operations public: Còn tập tin dd3doc.cpp chứa hàm lưu trữ liệu đồ thò sau: void CDd3Doc::Serialize(CArchive& ar) { if (ar.IsStoring()) { // TODO: add storing code here armIndex)) bBgEn = TRUE; } void CDd3View::OnUpdateBgnd(CCmdUI* pCmdUI) { // if(bBgEn) pCmdUI->SetCheck(1); else pCmdUI->SetCheck(0); } void CDd3View::OnChiphi() { CDd3Doc *pD = GetDocument(); SetFlagFalse(); if(pD->mlb==int(pD->mIndex)) bChiPhi = TRUE; } void CDd3View::OnUpdateChiphi(CCmdUI* pCmdUI) { if(bChiPhi) pCmdUI->SetCheck(1); else pCmdUI->SetCheck(0); } Chúng ta làm tương tự cho số trình đơn khác Bây ta bắt đầu làm việc hàm đáp lại mục chọn trình đơn Chúng ta đònh nghóa hàm SetFlagsFalse sau: void CDd3View::SetFlagFalse() { bVeDoThi = FALSE; bGanTen = FALSE; bBgEn = FALSE; bChiPhi = FALSE; bBegin = FALSE; bStep = FALSE; bFloyd = FALSE; } Ngoài ta càn đảm bảo trình đơn chọn Đó hàm OnUpdatexxx() phục vụ Yếu tố không khả thi Khi ta vẽ đồ thò lớn( nghóa nhiều đỉnh) nhớ máy tính không đủ để lưu trữ liệu nên có đồ thò lớn, dẫn đến việc tìm đường đồ thò(mạng) Bài toán giải Vì ta nghiên cứu rỏ giải thuật tìm đường từ giải thuật sử dụng lý thuyết giải thuật sử dụng thực tế với nhiều cách tìm đường khác chúng thực theo cách khác giải thuật song song, giải thuật tuần tự, giải thuật tìm đường động Ta thấy với đỉnh đồ thò liên thông có trọng số ta tìm đường ngắn nối chúng Và đồ thò có đỉnh treo chương trình thông báo lổi Vậy toán tìm đường ngắn giải KẾT LUẬN Để giải toán Các giải thuật hoạt động tốt việc tìm đường cách xác nhanh tức thời Cụ thể Từ việc tìm hiểu phân tích giải thuật tìm đường lý thuyết thực tế Ta thấy với giải thuật lý thuyết việc tìm đường ngắn tùy theo yêu cầu toán mà ta sử dụng giải thuật cụ thû dụng phần mềm VISUAL C++ để mô giải thuật tìm đường Dijkstra, Bellman – Ford Floyd Các giải thuật xét phần mô phỏng, đồ thò vẽ vớiù số đỉnh có giới hạn nên tính thời gian chạy giải thuật thấy cho kết không Do em so sánh giải thuật phương diện lý thuyết để từ rút kết luận là: • giải thuật Dijkstra việc tìm đường thực theo đỉnh kề với đỉnh xét Và chúng thực theo duyệt hết tất đồ thò, ta thấy với đẳng thức bước giải thuật , đẳng thức đo yêu cầu, giải thuật phân tán Mỗi đỉnh cần thông tin đỉnh giai trò đường nối tất đường đồ thò Tuy nhiên giải thuật Dijkstra cho ta để tìm đường ngắn nối từ đỉnh(đỉnh nguồn) đỉnh(đỉnh đích) với điều kiện dừng sau: - Nếu w ∈ D giải thuật dừng • Giải thuật Bellman – Ford việc tìm đường thực thực song song tất đỉnh đồ thò chúng tìm đường theo số cạnh nối Nếu đồ thò không đầy(E[...]... 1 6 5 Giải thuật kết thúc và bảng lập được sau cùng cho ta con đường ngắn nhất nối từ đỉnh A đến các đỉnh khác Ví dụ đường đi ngắn nhất nối từ đỉnh A đến H là ABCH và chiều dài đường ngắn nhất này là 5 2 Giải thuật BELLMAN FORD: Giải thuật Bellman Ford có thể phát biểu: Tìm con đường đi ngắn nhất từ Node (nguồn) đã cho X đến Node bắt buộc, con đường gồm một đoạn đường, rồi tìm đoạn đường ngắn nhất giữa... nó thực hiện một cách nhanh Và nó cho ta con đường ngắn nhất giữa mọi cặp đỉnh trong đồ thò Giải thuatä Floyd có thể áp dụng cho đồ thò vô hướng cũng như đồ thò có hướng: ta chỉ cần thay đổi cạnh vô hướng bằng một cạnh vô hướng Tuy nhiên trong trường hợp này các phần tử trên đường chéo của ma trận cần đặt bằng không 5 .Giải thuật FLOODING routing( tìm đường động): Giải thuật này chỉ ra đường đi ngắn nhất. .. trong PSN đều dựa trên hai giải thuật Dijkstra và Bellman Ford 1 Giải thuật Dijkstra: Giải thuật Dijkstra có thể phát biểu như sau: Để tìm con đường ngắn nhất từ Node nguồn cho trước đến tất cả các Node khác bằng cách phát triển thêm vào độ dài của đường Quá trình thực hiện giải thuật như sau: Với mức k con đường ngắn nhất đến k Node, đến Node nguồn đã cho, qua m Node, ở mức(k+1) Giải thuật được đònh... • Phân tích giải thuật Floyd: Giải thuật Floyd cho ta ma trận D là ma trận khoảng cách ngắn nhất của đồ thò Và ma trận P cho ta xác đònh đường đi ngắn nhất này: Đường ngắn nhất từ đỉnh nguồn đến đỉnh đích được xác đònh bởi một dãy Thời gian thực hiện giải thuật Floyd tỉ lệ với n 3 Ta có thể sử dụng giải thuật Dijkstra để giải quyết bài toán này Trong trường hợp này ta phải áp dụng giải thuật Dijkstra... count đếm số đường đi * Phân tích giải thuật Dijkstra: Đây là giải thuật tìm đường đi ngắn nhất trong một đồ thò có trọng số( chiều dài) nối hai đỉnh x và y đã cho trước với đặc tính là tổng các trọng số của tất cả cá cạnh là nhỏ nhất trong tất cá các đường đi từ đỉnh x đến đỉnh y Nếu tất cá các trọng số đều bằng 1 thì bài toán này trở thành bài toán tìm đường đi có cạnh ít nhất nối hai đỉnh x và y Ta có... Không có đường đi ngắn nhất F • Xét các đỉnh kề với đỉnh nguồn Lưu đồ giải thuật Dijsktra : u dài cho các đỉnh kề với đỉnh nguồn Gán chiề Tìm min trong các chiều dài đó Đỉnh này đã trùng với đỉnh đích chưa F Chọn đây là đỉnh làm việc Xét các đỉnh kề với đỉnh này T Chiều dài đường đi ngắn nhất * Kết quả của giải thuật Dijkstra tương ứùng với hình vẽ được thể hiện như sau: (Tìm đường đi ngắn nhất từ... PHÂN TÍCH CÁC GIẢI THUẬT TÌM ĐƯỜNG Giải thuật giá trò bé nhất: Thực tế các mạch chuyển mạch gói(PSN) sự quyết đònh đường của nó dựa trên một số dạng phân loại giá trò tối thiểu Nếu sự phân loại theo giá trò các hops là ít nhất, mỗi đường có giá trò 1 Đi n hình hơn, giá trò mỗi đường tương xứng dung lượng mỗi đường, tương xứng tức thời (current load) trên đường đi, hoặc một số tổ hợp Trong một số trường. .. mới nhất được truyền đi thường xuyên và ấn đònh thời gian Mỗi IMP có một bản tìm đường là danh sách các phần tử Mỗi phần tử đại diện cho các router khác trong hệ thống và chứa hai phần: • • - Khoảng cách cần thuyết lớn nhất để đi IMP đó Đường ra tương ứng khoảng cách đó sau thời gian T mỗi IMP sẽ gửi bản tìm đường củab nó cho các IMP kế cận và nhận về bản tương tự Dựa trên đó tìm ra được bảng tìm đường. .. đường đi ngắn nhất Giả sử có mỗi một process tại mỗi đỉnh và mọi process là đồng bộ Chúng ta có một giải thuật tìm đương đi ngắn nhất phân bố theo thời gian O( d.p2) ở đay d là bậc cực đại của đỉnh Bài toán tìm đường đi ngắn nhất đã được nguyên cứu từ lâu Mà ta biết đến là giải thuật tuần tự Dijkstra Bài toán tìm đường đi ngắn nhất đối với mọi đi m theo Kerr tính toán có độ phức tạp không thể nhỏ hơn... thực hiện của giải thuật Flooding, ta nhận đònh rằng giải thuật này có nhược đi m là tổng số lưu thông lớn Và vì bảng tìm đường 3 tính toán tại một vò trí trung tâm2 cho nên hệ thống sẽ không hoạt động được nếu bảng tìm đường trung tâm có vấn đề hay các liên kết với bảng tìm đường trung tâm bò đứt 6 .Giải thuật Depth First Search ( tìm kiếm theo độ sâu): 4 8 5 6 7 Duyệt tất cả các đỉnh và các cạnh của

Ngày đăng: 01/06/2016, 17:40

Từ khóa liên quan

Mục lục

  • Chương 1:

  • MỞ ĐẦU

    • GIỚI THIỆU SƠ LƯC CÁC GIẢI THUẬT

      • MỘT SỐ VẤN ĐỀ LIÊN QUAN ĐẾN VIỆC TÌM ĐƯỜNG

      • A. Lập trình song song

      • TO

      • I

      • A

        • JK

        • JI

        • JH

        • JK

        • Giới Thiệu Sơ Lược Về Phần Mềm Visual C++

        • Bài toán luôn giải được

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

Tài liệu liên quan