Song song hóa thuật toán Kruskal

Một phần của tài liệu Xử lý song song áp dụng đối với một số bài toán trong lý thuyết đồ thị (Trang 59 - 61)

Xuất phát từ thuật toán tuần tự đã được đưa ra trong chương 2, chúng ta sẽ tiến hành song song hóa thuật toán Kruskal như sau:

Phương án 1:

Thuật toán tuần tự gồm 2 bước cơ bản

Bước 1: Sắp xếp các cạnh theo giá trị trọng số tăng dần

Bước 2: Xuất phát từ cây khung bằng rỗng, ta kết nạp dần các cạnh vào cây khung sao cho cạnh sau không tạo thành chu trình với các cạnh đã kết nạp.

Để song song hóa, ta thấy ngay trong bước 1, ta có thể sử dụng một trong các thuật toán sắp xếp song song đã được đưa ra ở trên để thực hiện việc sắp xếp. Đối với bước 2, việc kết nạp các cạnh bắt buộc phải tiến hành tuần tự do sự phụ thuộc của các tiến trình. Do đó trong phương án 1, việc song song hóa thuật toán Kruskal được mô tả như sau:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Procedure Kruskal_Parall_1; Begin

Parall_sort(C); {Sắp xếp song song các cạnh tăng dần} T=;

While |T| <(n-1) and (E  ) Do {Kết nạp tuần tự các cạnh vào cây khung} Begin

Chọn e là cạnh có độ dài nhỏ nhất trong E;

E:=E\  e  ;

If (T ekhông chứa chu trình ) then T:=Te; End;

End.

Đánh giá độ phức tạp của thuật toán song song

Khi thực hiện sắp xếp bước 1, hiển nhiên độ phức tạp là O n( ) nếu dùng thuật toán sắp xếp song song theo hạng hoặc dùng Merge_sort. Trong giai đoạn 2 khi kết nạp các cạnh thì thuật toán sử dụng 1 vòng lạp do đó độ phức tạp vẫn là

( )

O n .

Kết luận: Độ phức tạp của thuật toán Kruskal_Parall_1 là O n( )

Phƣơng án 2

Giả sử G có n đỉnh, không mất tính tổng quát ta có thể viết V = {1, 2,..., }n

Đầu vào của thuật toán là ma trận trọng số W = (w )ij n n´ trong đó

ij

w = + ¥ nếu

không tồn tại cạnh ( , )i j .

Mô hình tính toán song song là mảng tuyến tính sao cho E = m là số cạnh của đồ thị được phân đều nhau cho các bộ xử lý. Thuật toán thực hiện log2n bước lặp.

Thuật toán song song tìm cây cực tiểu được phát biểu hình thức như sau:

/* C là vector các thành phần liên thông */ /* B là vector trung gian */

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

/* T(k)-tập các đỉnh được sinh ra trong mỗi bước lặp */

Procedure Kruskal_Parall_2 ;

Begin

forall i:=1 to n do C(i) = i; for k = 1 to log2n do Begin

Bước 1:

forall i in paralel do

T(i) = Min {w(i,j)|A(i,j) = 1 and C(j)C(i)} forall i in paralel do

T(i) = Min {T(j)|C(i) = i and T(j) i} Bước 2:

forall i in paralel do B(i) = T(i); repeat log2n times

forall i in paralel do T(i) = T(T(i)); forall i in paralel do

C(i) = Min{B(T(i)),T(i)}; End ;

Độ phức tạp của thuật toán trên là log2n. Kết quả đã được chứng minh trong tài liệu [7].

Một phần của tài liệu Xử lý song song áp dụng đối với một số bài toán trong lý thuyết đồ thị (Trang 59 - 61)

Tải bản đầy đủ (PDF)

(69 trang)