Yđ phức tp thi gian tính toán ca TTSS sd n gn

Một phần của tài liệu Bài giảng xử lý song song (Trang 53)

BXLlƠO(n)

316

3. Thu t toán s p x p QuickSort

a.BƠi toán: Giả sử cần sắp xếp một dãy con kể từ vị trí start

đến endtrong danh sách list[ ]với pilotlà vị trí c a phần tử trong danh sách được chọn làm hoa tiêu.

b.ụ t ng thu t toán

• Chia dãy sắp xếp thành 2 danh sách con sao cho danh sách 1 gồm các phần tử nhỏ hơn các phần tử c a danh sách 2 • Chọn một phần tử hoa tiêu (pivot) để thực hiện việc phân chia • Lặp lại việc phân chia trên cho từng danh sách đến khi nào

những danh sách cuối cùng chỉ có 1 phần tử

5.6 CỄC THU T TOỄN S P X P SONG SONG

317

c.Thu t toán QuickSort tu n t đ c vi t đ qui

QuickSort(list, start, end){ if (start < end){

Partition (list, start, end, pilot); QuickSort (list, start, pilot); QuickSort (list, pilot+1, end); }

}

Trong đó, Partition() là hàm chuyển tất cả các phần tử nhỏ hơn hoặc bằng phần tử pilot về trước phần tử pilot, những phần tử lớn hơn sẽ được đặt sau pilot.Thực hiện phân tách xong thì pilot là vị trí c a phần tử hoa tiêu danh sách mới

5.6 CỄC THU T TOỄN S P X P SONG SONG

318

d. Ví d

5.6 CỄC THU T TOỄN S P X P SONG SONG

63 3 1 5 8 7 2 4 4 1 2 3 5 7 8 6 3 1 2 4 5 7 8 6 2 1 3 6 7 8 Danhsách cần sắp xếp pilot

Thu t toánQuickSorttu n t có ĐPTO(nlogn)

319

5.6 CỄC THU T TOỄN S P X P SONG SONG

e. Song songhóaQuickSort

Phát bi u l iQuickSort

• Chọn phần tửpilotđểchiadãy thànhhaiphần:bên trái là những phần tử nhỏ hơn hoặc bằngpilotvà bên phải là những phần tử lớn hơnpilot.

• Phần tửpilotđược chèn vào giữahaidãyconđược tách và nó là vị trí đã được sắp xếpsau khithực hiện bước1.

• Bước1lặp lại một cách đệqui chođếnkhicác dãyconchỉ còn lại một phần tử.

320

5.6 CỄC THU T TOỄN S P X P SONG SONG

Song songhóaQuickSort (adsbygoogle = window.adsbygoogle || []).push({});

ụ t ng:bắt đầu thực hiện mộtBXLvà chuyển các l i gọi

đệquy chocácBXLkhác.

• Tạoratập các tiến trình và đặt dãy cần sắp xếp vàostack.

• Tiến trình đầu tiên (tiến trình ch ) thực hiện tách dãycho

trước thànhhaidãyconvà đặt vàostack.

• Những tiến trình khác (tiến trình tớ) xử lý những dãyconđã được táchravà thực hiện những công việc tương tự như thuật toán đã nêu.

321

5.6 CỄC THU T TOỄN S P X P SONG SONG

P4P0 P0 P0 P4 P0 P2 P4 P6 P0 P1 P6 6 3 1 5 8 7 2 4 4 7 2 3 5 7 8 6 3 1 2 4 5 7 8 6 2 1 3 6 7 8

Danhsách sắp xếp Phân công việcchocácBXL

322

5.6 CỄC THU T TOỄN S P X P SONG SONG

f.Đánh giá thu t toánQuickSort song song

• Giả thiết rằngpilotđược chọn một cách lý tư ng để mỗi lần đều tách thànhhaiphần có kích cỡ bằngnhau.

1.Th igiantính toán.

• Đầu tiên một bộ xử lý phảithaotác vớinsố.Sauđóhai

bộ xử lýthaotác trênn/2số, rồi bốn bộ xử lýthaotác trênn/4số,v.v.

• Th igianđể thực hiện thuật toán sẽ là:

tcomp= n + n/2 + n/4 +… 2n

2.Th igiantruy n thông.

• Sựtraođổi dữ liệu giữa các bộ xử lý chỉ xảyra khithực hiện ghép kết hợp giống nhưMergeSort.

• tcomm= 2(tstartup+ (n/2)tdata+ tstartup+ (n/4)tdata+ tstartup+

(n/8)tdata…)

= 2(log p)tstartup+ 2ntdata

323

5.7 CỄC THU T TOỄN SONG SONG THỌNG D NG

1.Nhânmatrận

• Mô hình lưới2chiều • Mô hình mảng tâmthu 2.Giải hệ phương trình tuyến tính

3.Tính biểu đồ c a ảnh

4.Tô màu đồ thị (adsbygoogle = window.adsbygoogle || []).push({});

5.Thuật toánKruskaltìm câykhungcực tiểu

6.Thuật toán tính tổng tiền tố

7.Phương trình nhiệt một chiều

Một phần của tài liệu Bài giảng xử lý song song (Trang 53)