Thuật toán sắp xếp đánh số

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

Xét bài toán sắp xếp một dãy số a a1, 2,...,an theo chiều tăng dần của giá trị các phần tử, tư tưởng đơn giản nhất là sử dụng mảng phụ

1, ,...,2 n

b b b để lưu giá trị của dãy sau khi sắp xếp xong. Ta sử dụng một biến Count để xác định vị trí thật của phần tử a kk( = 1.. )n trong dãy sẽ sắp, sau đó đưa phần tử vào đúng vị trí của mình trong dãy

1, ,...,2 n

b b b . Hiển nhiên trong quá trình duyệt biến Count sẽ được tăng lên khi gặp phần tử nhỏ hơn phần tử a kk( = 1.. )n .

Thuật toán tuần tự sẽ được mô tả như sau

For k:=1 to n do Begin

Count:=1; For j:=1 to n do

If a[j]<a[k] then Count:=Count+1; b[Count]:=a[k];

End;

Dễ thấy rằng trong thuật toán trên đã thực hiện hai vòng lặp lồng nhau, mỗi vòng thực hiện n bước do đó độ phức tạp của thuật toán trên là 2

( )

O n . Chúng ta sẽ nghiên cứu vấn đề song song hóa trên cơ sở của thuật toán tuần tự.

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

Giả sử ta có n bộ xử lý, bộ xử lý thứ k lưu trữ ban đầu là số a kk( = 1.. )n . Trong quá trình xử lý bộ xử lý thứ k có nhiệm vụ xác định vị trí của phần tử tương ứng và chuyển phần tử về đúng vị trí của mình. Hiển nhiên chúng ta thấy rằng

+ Các bộ xử lý là hoạt động độc lập nên ta có thể tiến hành song song.

+ Khi xác định vị trí, tất cả các bộ xử lý phải duyệt lần lượt qua n phần tử do đó độ phức tạp là O n( )

Thuật toán đó được mô tả như sau:

Forall k:=1 to n do {n bộ xử lý thực hiện song song}

Begin

Count:=1;

For j:=1 to n do { Bộ xử lý thứ k thực hiện tuần tự xác định vị trí}

If a[j]<a[k] then Count:=Count+1;

B[Count]:=a[k]; { Chuyển phần tử về đúng vị trí sắp xếp}

End;

Thuật toán trên có thể cải tiến khi sử dụng 2

n để xác định vị trí tức là việc so sánh ak với các phần tử khác trong dãy cũng được thực hiện song song. Trong trường hợp này, độ phức tạp thuật toán sẽ là O n( log )n .

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