Thuật toán sắp xếp so sánh và đổi chỗ

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 53 - 56)

Một trong các thuật toán sắp xếp đơn giản nhất là sử dụng phương pháp đổi chỗ các phần tử trong dãy nếu bất hợp lý. Thuật toán tuần tự được mô tả như sau:

For i:=1 to n-1 do For j:=i+1 to n do If a[i]>a[j]

Begin

tg=a[i]; a[i]=a[j]; a[j]=tg; End;

Hiển nhiên độ phức tạp của thuật toán tuần tự trên vẫn là 2

( )

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

Trên tư tưởng đổi chỗ các phần tử để chuyển vị trí đến vị trí cần sắp, chúng ta có thể xây dựng thuật toán song song như sau:

Sử dụng n tiến trình để tiến hành sắp xếp mảng gồm n phần tử theo nguyên tắc như sau: Hệ thống được chia làm các pha chẵn và pha lẻ, các pha được đánh số từ 1 đến n.

+ Khởi động: tiến trình thứ k lưu trữ giá trị của phần tử a k( ),"k = 1, 2,...,n + Bước 1: Các tiến trình đánh số lẻ so sánh giá trị phần tử đang lưu trữ với phần tử đang lưu trữ ở tiến trình chẵn kế tiếp, nếu bất hợp lý thì đổi chỗ 2 phần tử. Việc so sánh được thực hiện đồng thời với mọi cặp Lẻ-Chẵn kế tiếp.

+ Bước 2: Các tiến trình đánh số chẵn so sánh giá trị phần tử đang lưu trữ với phần tử đang lưu trữ ở tiến trình lẻ kế tiếp, nếu bất hợp lý thì đổi chỗ 2 phần tử. Việc so sánh được thực hiện đồng thời với mọi cặp Chẵn-Lẻ kế tiếp.

…..

+ Bước n: Các tiến trình đánh số lẻ so sánh giá trị phần tử đang lưu trữ với phần tử đang lưu trữ ở tiến trình chẵn kế tiếp, nếu bất hợp lý thì đổi chỗ 2 phần tử. Việc so sánh được thực hiện đồng thời với mọi cặp Lẻ-Chẵn kế tiếp.

Thuật toán kết thúc

Thuật toán song song trên thường được gọi là thuật toán được thiết kế theo nguyên tắc hình ống

Ví dụ: Cho n = 8 và dãy số ban đầu là 6, 2, 8, 5, 1, 3, 4, 7. Kết quả sắp xếp theo nguyên tắc hình ống đượ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 Bảng 3.1 Sắp xếp theo nguyên tắc hình ống sử dụng 8 bộ xử lý Bƣớc Pha P1 P2 P3 P4 P5 P6 P7 P8 1 6 ↔ 2 8 ↔ 5 1 ↔ 3 4 ↔ 7 2 2 6 ↔ 5 8 ↔ 1 3 ↔ 4 7 3 2 ↔ 5 6 ↔ 1 8 ↔ 3 4 ↔ 7 4 2 5 ↔ 1 6 ↔ 3 8 ↔ 4 7 5 2 ↔ 1 5 ↔ 3 6 ↔ 4 8 ↔ 7 6 1 2 ↔ 3 5 ↔ 4 6 ↔ 7 8 7 1 ↔ 2 3 ↔ 4 5 ↔ 6 7 ↔ 8 8 1 2 3 4 5 6 7 8

Giả thiết dữ liệu được lưu ở những tiến trình chẵn là B và ở những tiến trình lẻ là A. Thuật toán song song theo hình ống được mô tả trong mô hình truyền thông điệp như sau:

a/ Các pha lẻ

Pi, i = 1, 3, 5, …, n-3 Pi, i = 2, 4, …, n-2

send(&A, Pi+1); recv(&A, Pi-1);

recv(&B, Pi+1); send(&B, Pi-1);

if(A > B) A = B; if(A > B) B = A;

b/ Các pha chẵn

Pi, i = 2, 4, …, n-2 Pi, i = 1, 3, 5, …, n-3

recv(&A, Pi+1); send(&A, Pi-1);

send(&B, Pi+1); recv(&B, Pi-1);

if(A > B) B = A; if(A > B) A = B;

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

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 53 - 56)