Nghiên cứu điển hình: Các thuật toán toán tìm đường đi ngắn nhất.

Một phần của tài liệu Tiểu luận môn Xử lý song song Cơ sở định lượng cho thiết kế (Trang 32)

đường đi ngắn nhất.

Chương này sử dụng các mô hình hiệu suất để so sánh các thuật toán song song khác nhau cho bài toán tìm con đường ngắn nhất. Đây là một vấn đề quan trọng trong lý thuyết đồ thị và có các ứng dụng trong truyền thông, giao thông vận tải, và các vấn đề điện tử. Nó là thú vị bởi vì phân tích cho thấy ba trong số bốn thuật toán có thể được tối ưu trong hoàn cảnh khác nhau, tùy thuộc vào sự cân bằng giữa tính toán và chi phí truyền thông.

Hình 3.23: Một đạo diễn đồ thị đơn giản G, và ma trận kề của nó A.

Các cặp tất cả các vấn đề con đường ngắn nhất liên quan đến việc tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh trong đồ thị. Một đồ thị G = (V, E) bao gồm một tập hợp các V N đỉnh, {Vi}, Và một bộ các cạnh kết nối các đỉnh trong V. Trong một biểu đồ chỉ dẫn, mỗi cạnh cũng có một hướng, vì vậy cạnh (vi,vj) và (vj,vi) , i≠j, là khác biệt. Đồ thị có thể được biểu diễn như là một ma trận kề A trong đó mỗi phần tử (i, j) đại diện cho các cạnh giữa các yếu tố i j .Aij=1 nếu có một cạnh (vi,vj) , Nếu không, Aij= 0 (Hình 3.23 ).

Một con đường từ đỉnh vi đến đỉnh vj là một chuỗi của các cạnh (vi ,vk ), (vk ,vl ), ..., (vm ,vj )từ E,

trong đó đỉnh không xuất hiện nhiều hơn một lần . Ví dụ (1,3),(3,0) là một con đường từ đỉnh 1 đến đỉnh 0 trong hình 3.23 . Đường đi ngắn nhất giữa hai đỉnh vi và vj trong một đồ thị là con đường có số cạnh ít nhất. Các vấn đề nguồn ngắn nhất-con đường duy nhất yêu cầu mà chúng ta thấy con đường ngắn nhất từ một đỉnh duy nhất để tất cả các đỉnh khác trong đồ thị . Các cặp tất

cả các vấn đề con đường ngắn nhất đòi hỏi chúng ta tìm đường đi ngắn nhất giữa tất cả các cặp

đỉnh trong đồ thị . Chúng tôi xem xét vấn đề này và bốn thuật toán song song khác nhau hiện tại, hai dựa trên một thuật toán đường đi ngắn nhất tuần tự do để Floyd và hai dựa trên một thuật toán tuần tự do Dijkstra. Tất cả bốn thuật toán mất như một đầu vào ma trận kề A N × N và tính toán một N × N ma trận S, với Sij chiều dài của đường đi ngắn nhất từ vi tới vj , Hoặc một giá trị phân biệt (∞) nếu không có con đường nào.

3.9.1.Thuật toán Floyd.

Thuật toán đường đi ngắn nhất của Floyd được đưa ra như Thuật toán 3,1 . Nó có nguồn gốc ma trận S trongN bước, xây dựng tại mỗi bước k thông một ma trận trung gian I (k) có chứa khoảng cách tốt nhất được biết đến ngắn nhất giữa mỗi cặp của các nút . Ban đầu, mỗi Lij(0) được thiết lập với chiều dài của cạnh (vi,vj), Nếu cạnh tồn tại, và ∞ nếu không. Bước thứ k của thuật toán xem mỗi Lij lần lượt, và xác định xem con đường tốt nhất được biết đến từ vi tới vj dài hơn độ dài kết hợp của những con đường được biết đến từ vi tới vk và từ vk tới vj. Nếu vậy, các mục nhập Lij

được cập nhật để biểu diễn con đường ngắn hơn (Hình 3,24 ). Hoạt động so sánh này được thực hiện tổng cộng N3 lần, do đó, chúng ta có thể ước tính chi phí theo trình tự của thuật toán này

tcN3,với tc là thời gian của một hoạt động so sánh duy nhất.

Hình 3.24: Các hoạt động cơ bản trong thuật toán Floyd ngắn nhất-con đường tuần tự: Xác định liệu một con đường đi từ vi đến vjthông quavk ngắn hơn con đường được biết đến từ vi để vj.

Song song Floyd 1.

Floyd thuật toán song song đầu tiên được dựa trên một chiều, phân hủy miền ma trận một chiều trung gian và sản lượng ma trận S. Chú ý rằng điều này có nghĩa là thuật toán có thể sử dụng hầu hết các bộ vi xử lý N. Mỗi tác vụ sẽ có một hoặc nhiều hàng liền kề của I và chịu trách nhiệm để thực hiện tính toán trên những hàng. Đó là, nó thực hiện các logic sau đây.

for k = 0 to N-1

for i = local_i_start to local_i_end for j = 0 to N-1

Một phần của tài liệu Tiểu luận môn Xử lý song song Cơ sở định lượng cho thiết kế (Trang 32)