1. Trang chủ
  2. » Luận Văn - Báo Cáo

song song hóa một số thuật toán tổ hợp

67 1,3K 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 67
Dung lượng 721,74 KB

Nội dung

17 1.3 KỸ THUẬT SONG SONG HÓA TÍNH TOÁN DỰA TRÊN PHÂN ĐOẠN DÃY CÁC NGHIỆM CỦA BÀI TOÁN .... LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp Nhiều bài toán với số lượng tính toán

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

-

Vũ Hồng Linh

SONG SONG HÓA MỘT SỐ THUẬT TOÁN TỔ HỢP

Chuyên ngành: Bảo đảm toán học cho máy tính và hệ thống tính toán

Mã số: 604635

LUẬN VĂN THẠC SĨ KHOA HỌC

Người hướng dẫn khoa học:

P GS.TS HOÀNG CHÍ THÀNH

Hà Nội – 2011

Trang 2

LỜI CẢM ƠN

Tôi xin bày tỏ lòng kính trọng và biết ơn sâu sắc tới PGS.TS Hoàng Chí

Thành, người đã trực tiếp hướng dẫn, giúp đỡ, động viên tôi trong suốt thời gian

thực hiện luận văn này

Con cảm ơn Cha, Mẹ và gia đình, những người đã dạy dỗ, khuyến khích, động viên con trong những lúc khó khăn, tạo mọi điều kiện cho con nghiên cứu học tập

Tôi cũng xin chân thành cảm ơn các Thầy Cô trong Bộ môn Tin học, Khoa Toán - Cơ - Tin học, Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia Hà Nội

và các bạn bè, đồng nghiệp tại Trường Dự bị Đại Học Dân tộc Trung Ương đã giúp

đỡ tôi rất nhiều trong quá trình học tập, sưu tầm tài liệu và trong công tác để tôi có thể hoàn thành bản luận văn này

Dù đã cố gắng hết sức cùng với sự tận tâm của thầy giáo hướng dẫn song do trình độ còn hạn chế nên khó tránh khỏi những thiếu sót Rất mong nhận được sự góp ý của thầy cô và các bạn

Hà Nội, tháng 10 năm 2011

Học viên

Vũ Hồng Linh

Trang 3

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

MỤC LỤC

MỞ ĐẦU 6

1 LÝ DO CHỌN ĐỀ TÀI 6

2 PHẠM VI NGHIÊN CỨU 7

3 PHƯƠNG PHÁP NGHIÊN CỨU 7

CHƯƠNG 1 TỔNG QUAN VỀ TÍNH TOÁN SONG SONG 8

1.1 CÁC MÔ HÌNH TÍNH TOÁN SONG SONG 8

1.1.1 Mô hình SISD (Single Instruction, Single Data) 8

1.1.2 Mô hình SIMD (Single Instruction, Multiple Data) 9

1.1.3 Mô hình MISD (Multiple Instruction, Single Data) 9

1.1.4 Mô hình MIMD (Multiple Instruction, Multiple Data) 10

1.2 MỘT SỐ KỸ THUẬT PHÂN RÃ TRONG TÍNH TOÁN SONG SONG 11

1.2.1 Phân rã đệ quy (recursive decomposition) 12

1.2.2 Phân rã dữ liệu (data-decomposition) 13

2.2.3 Phân rã thăm dò (exploratory decomposition) 17

1.3 KỸ THUẬT SONG SONG HÓA TÍNH TOÁN DỰA TRÊN PHÂN ĐOẠN DÃY CÁC NGHIỆM CỦA BÀI TOÁN 20

CHƯƠNG 2 BÀI TOÁN DÃY BỊ CHẶN 22

2.1 BÀI TOÁN DÃY BỊ CHẶN 22

2.2 THUẬT TOÁN TÌM CÁC DÃY BỊ CHẶN 23

2.3 SONG SONG HÓA THUẬT TOÁN TÌM CÁC DÃY BỊ CHẶN 25

CHƯƠNG 3 ÁP DỤNG CHO MỘT SỐ BÀI TOÁN TỔ HỢP 28

3.1 BÀI TOÁN HOÁN VỊ 28

3.1.1 Bài toán hoán vị 28

3.1.2 Thuật toán sinh các hoán vị 29

3.1.3 Song song hóa thuật toán sinh các hoán vị 36

3.1.4 Ứng dụng của bài toán hoán vị 37

Trang 4

3.2 BÀI TOÁN TẬP CON 39

3.2.1 Bài toán tập con 40

3.2.2 Thuật toán sinh các tập con 41

3.2.3 Song song hóa thuật toán sinh các tập con 42

3.2.4 Ứng dụng của bài toán tập con 42

3.3 BÀI TOÁN PHÂN HOẠCH 43

3.3.1 Bài toán phân hoạch 43

3.3.2 Thuật toán tìm các phân hoạch 47

3.3.3 Song song hóa thuật toán tìm các phân hoạch 49

3.3.4 Ứng dụng của bài toán phân hoạch 49

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 51

TÀI LIỆU THAM KHẢO 53

PHỤ LỤC 54

PHỤ LỤC 1 BÀI TOÁN DÃY BỊ CHẶN 54

1 Chương trình cho thuật toán tuần tự 54

2 Chương trình cho thuật toán khi phân đoạn nghiệm 55

PHỤ LỤC 2 BÀI TOÁN HOÁN VỊ 58

1 Chương trình cho thuật toán tuần tự 58

2 Chương trình cho thuật toán khi phân đoạn nghiệm 59

PHỤ LỤC 3 BÀI TOÁN TẬP CON 62

1 Chương trình cho thuật toán tuần tự 62

2 Chương trình cho thuật toán khi phân đoạn nghiệm 63

PHỤ LỤC 4 BÀI TOÁN PHÂN HOẠCH 65

Trang 5

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

MỤC LỤC CÁC HÌNH VẼ

Hình 1 Mô hình tính toán tuần tự ……… 6

Hình 1.1 Mô hình máy tính SISD 8

Hình 1.2 Mô hình máy tính SIMD 9

Hình 1.3 Mô hình máy tính MISD 10

Hình 1.4 Mô hình máy tính MIMD 11

Hình 1.5 Phân rã đệ quy sắp xếp dãy gồm 12 chữ số 13

Hình 1.6 Phân rã phép nhân ma trận 14

a) Phân hoạch các ma trận đầu vào và đầu ra thành 2x2 ma trận con 14

b) Một phân rã của phép nhân ma trận thành bốn công việc dựa trên các phân hoạch của các ma trận trong (a) 14

Hình 1.7 Nhân hai ma trận A và B với phân hoạch của ma trận trung gian 3 chiều D 16

Hình 1.8 Một phân rã của phép nhân ma trận dựa trên việc phân hoạch ma trận trung gian 3 chiều D 17

Hình 1.9 Đồ thị phụ thuộc của phân rã trong Hình 1.8 17

Hình 1.10 Phân rã thăm dò minh họa cho Bài toán đố thứ 15 19

Hình 1.11 Sơ đồ tính toán song song tìm các nghiệm của bài toán 21

Hình 3.1 Loại a i và dồn danh sách XS ….……….35

Trang 6

MỞ ĐẦU

1 LÝ DO CHỌN ĐỀ TÀI

Trong tính toán truyền thống, phần mềm máy tính được viết cho tính toán tuần tự Để giải quyết một bài toán, một thuật toán được xây dựng và thực hiện như một chuỗi tuần tự các lệnh Các lệnh này được thực hiện trong

bộ xử lý trung tâm (CPU) của máy tính Tại một thời điểm, chỉ có một lệnh được thực hiện Sau khi lệnh trước kết thúc thì lệnh tiếp theo mới được thực hiện Quá trình thực hiện các lệnh được thể hiện như hình dưới đây

Hình 1 Mô hình tính toán tuần tự

Tính toán song song là một hình thức tính toán, trong đó nhiều tính toán được thực hiện đồng thời Tính toán song song hoạt động trên nguyên tắc một bài toán lớn được chia thành các bài toán nhỏ hơn, sau đó các bài toán này được giải quyết đồng thời Song song đã được sử dụng nhiều năm và trong những năm gần đây tính toán song song đã trở thành mô hình thống trị trong kiến trúc máy tính, chủ yếu dưới hình thức các bộ đa xử lý (multi-processors)

Vậy, tại sao phải tính toán song song? Mặc dù tốc độ xử lý của các bộ

Trang 7

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

Nhiều bài toán với số lượng tính toán rất lớn như bài toán mô phỏng thời tiết, bài toán tạo hình trong y học hay phân tích mật mã… không thể giải được trong một khoảng thời gian hợp lý nếu sử dụng tính toán tuần tự - ngay

cả khi ta thực hiện trên các siêu máy tính, do đó đòi hỏi phải sử dụng những

hệ thống đa bộ xử lý và xử lý song song

Để song song hóa tính toán, chúng ta có thể chia bài toán thành các bài toán nhỏ hơn rồi giải quyết song song các bài toán đó như chiến lược chia để trị Hoặc có thể chia nhỏ dữ liệu của bài toán rồi giải quyết song song theo từng phần Tuy nhiên, với các bài toán tổ hợp thì hai phương pháp trên là không khả thi Với một hướng tiếp cận mới, song song hóa tính toán dựa trên phân đoạn dãy các nghiệm của bài toán, chúng tôi sẽ giải quyết được vấn đề song song hóa các thuật toán tổ hợp

2 PHẠM VI NGHIÊN CỨU

Trong phạm vi một luận văn thạc sĩ, đề tài tập trung nghiên cứu cơ sở

lý thuyết và ứng dụng Trên cơ sở đó, tiến hành phân đoạn dãy nghiệm cho một số bài toán tổ hợp tiêu biểu

3 PHƯƠNG PHÁP NGHIÊN CỨU

- Phương pháp nghiên cứu tài liệu

- Phương pháp phân tích

- Phương pháp tổng hợp

- Phương pháp thực nghiệm

- Phương pháp lập trình

Trang 8

CHƯƠNG 1 TỔNG QUAN VỀ TÍNH TOÁN SONG SONG

1.1 CÁC MÔ HÌNH TÍNH TOÁN SONG SONG

Có nhiều cách phân loại các kiến trúc tính toán khác nhau trong đó sự phân loại của M Flynn được dùng phổ biến nhất Flynn phân loại kiến trúc máy tính dựa trên một số đặc tính như: số lượng bộ xử lý, số lượng các chương trình chúng có thể thực hiện và cấu trúc của bộ nhớ Sự phân loại này

đã dẫn đến bốn mô hình kiến trúc tính toán như sau:

1.1.1 Mô hình SISD (Single Instruction, Single Data)

Những máy tính SISD chỉ có một CPU mà tại một thời điểm chúng chỉ thực hiện duy nhất một lệnh (Single Instruction) và chỉ có thể xử lý một đối tượng dữ liệu (Single Data)

Hình 1.1 Mô hình máy tính SISD

Chẳng hạn, khi thực hiện phép tính C = A + B và A = B*2 thì máy sẽ thực hiện tuần tự như sau:

Arithmetic Processor

Memory

Stream Control Unit Control Signals

Trang 9

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

Mô hình SISD chính là mô hình máy tính truyền thống kiểu Von Neumann

1.1.2 Mô hình SIMD (Single Instruction, Multiple Data)

Những máy tính SIMD có một bộ điều khiển và chỉ thực hiện một lệnh tại một thời điểm nhưng chúng có nhiều phần tử xử lý

Hình 1.2 Mô hình máy tính SIMD

Bộ điều khiển phát ra tín hiệu điều khiển cho các phần tử xử lý và các phần tử xử lý này sẽ thực hiện cùng một thao tác trên các đối tượng dữ liệu

khác nhau

1.1.3 Mô hình MISD (Multiple Instruction, Single Data)

Máy tính loại MISD là ngược lại với SIMD Máy tính MISD có thể thực hiện nhiều chương trình (nhiều lệnh) trên cùng một mục dữ liệu, nên còn

Control Unit

Processing Element 2

Processing Element 3

Processing

Element 1

Trang 10

được gọi là MPSD (đa chương trình, đơn luồng dữ liệu) Kiến trúc kiểu này

Instruction Stream 1 Control Unit1

Control Unit 2

Control Unit n

Arithmetic Processor 1 Instruction Stream2

Instruction Stream n

Arithmetic Processor 2

Arithmetic Processor n

Trang 11

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

Hình 1.4 Mô hình máy tính MIMD

Hệ thống MIMD có các đặc trưng sau:

 Chúng phân tán tiến trình cho một số bộ xử lý độc lập

 Tất cả các bộ xử lý chia sẻ tài nguyên được lưu trữ trong bộ nhớ chính

 Các bộ xử lý hoạt động đồng thời và độc lập với nhau

 Mỗi bộ xử lý chạy một chương trình riêng

1.2 MỘT SỐ KỸ THUẬT PHÂN RÃ TRONG TÍNH TOÁN SONG SONG

Quá trình phân chia một bài toán thành các bài toán nhỏ hơn, một số hoặc tất cả các bài toán nhỏ đó có thể được thực hiện song song, được gọi là phân rã Việc thực hiện đồng thời nhiều tính toán là chìa khóa để giảm thời

Instruction Stream 1 Control Unit1

Control Unit 2

Control Unit n

Arithmetic Processor 1 Instruction Stream2

Instruction Stream n

Arithmetic Processor 2

Arithmetic

Processor n

Data Stream n

Data Stream 2 Data Stream 1

Trang 12

gian cần thiết để giải quyết toàn bộ bài toán Các bài toán có thể có kích thước tùy ý, nhưng một khi đã xác định, chúng được coi là đơn vị chia của bài toán Các bài toán được phân rã có thể có kích thước không giống nhau

Trong mục này, chúng ta sẽ mô tả một số kỹ thuật phân rã thường được

sử dụng để đạt được sự tương tranh Đây không phải là đầy đủ tất cả các kỹ thuật phân rã có thể có Ngoài ra, mỗi một phân rã không phải lúc nào cũng dẫn đến một thuật toán song song tốt nhất cho bài toán xác định Mặc dù có những thiếu sót song các kỹ thuật phân rã mô tả trong phần này thường tạo một khởi đầu tốt cho nhiều bài toán và sự kết hợp của các kỹ thuật này có thể được sử dụng để có được sự phân rã hiệu quả cho nhiều bài toán

Các kỹ thuật phân rã bao gồm: phân rã đệ quy (recursive decomposition), phân rã dữ liệu (data-decomposition) và phân rã thăm dò

(exploratory decomposition)

1.2.1 Phân rã đệ quy

Phân rã đệ quy là một phương pháp đạt được sự tương tranh trong các bài toán giải được bằng chiến lược chia để trị

Trong kỹ thuật này, để giải một bài toán các thuật toán gọi đến chính

nó một hoặc nhiều lần để xử lý các bài toán con liên quan Đầu tiên, ta chia bài toán thành các bài toán con tương tự với bài toán ban đầu nhưng kích thước nhỏ hơn Sau đó giải đệ quy các bài toán con và kết hợp các lời giải để được lời giải cho bài toán ban đầu

Ví dụ 1.1: Xét bài toán sắp xếp dãy n phần tử A sử dụng thuật toán quicksort

(giả sử n = 12)

Trang 13

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

của thuật toán Sau đó, mỗi một dãy con A0 và A1 được sắp xếp bằng cách gọi

đệ quy thủ tục quicksort

Hình 1.5 Phân rã đệ quy sắp xếp một dãy gồm 12 số Hình vẽ trên là đồ thị thực hiện của bài toán Lúc đầu chỉ có một dãy (là nút gốc của cây), và chúng ta chỉ cần dùng một quá trình duy nhất để phân rã

nó Hoàn thành quá trình phân rã ở nút gốc ta được hai dãy con (A0 và A1, tương ứng với hai nút đầu tiên của cây) và mỗi dãy có thể thực hiện phân rã song song với nhau Tương tự như vậy, sự tương tranh tiếp tục tăng lên khi ta

di chuyển dần xuống đến nút lá của cây

1.2.2 Phân rã dữ liệu

Phân rã dữ liệu là một phương pháp mạnh và thường được sử dụng để tạo ra sự tương tranh trong các thuật toán chạy trên các bộ dữ liệu lớn Trong phương pháp này, sự phân rã các tính toán được thực hiện theo hai bước:

 Bước 1: Dữ liệu mà các tính toán sử dụng được phân rã;

 Bước 2: Các dữ liệu được phân rã này được sử dụng để tạo ra sự phân

rã của các tính toán trong các công việc

Trang 14

Các thao tác mà những công việc này thực hiện trên các phân vùng dữ liệu khác nhau thường tương tự (như ví dụ nhân ma trận) hoặc được chọn từ một nhóm nhỏ các thao tác Một số cách phân rã dữ liệu như sau:

Phân hoạch dữ liệu đầu ra: Trong nhiều bài toán, mỗi yếu tố đầu ra

có thể được tính toán một cách độc lập như một chức năng của đầu vào Trong các bài toán như vậy, một phân hoạch của dữ liệu đầu ra tự động tạo ra một sự phân rã của các bài toán cho mỗi công việc, mỗi công việc được phân công tính toán một phần của đầu ra Ta xét bài toán nhân ma trận trong ví dụ dưới đây để minh họa cho việc phân rã dựa vào phân hoạch dữ liệu đầu ra

Ví dụ 1.2: Xét bài toán nhân hai ma trận vuông A và B cấp n để được ma trận

Trang 15

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

Phân hoạch dữ liệu đầu vào: Phân hoạch dữ liệu đầu ra chỉ thực hiện

được khi mỗi dữ liệu đầu ra có thể được tính toán như một chức năng của đầu vào Trong nhiều thuật toán, khó hoặc không thể phân hoạch được dữ liệu đầu

ra Ví dụ, trong tìm kiếm phần tử max, min hoặc tổng của một tập hợp số, dữ liệu đầu ra là một giá trị chưa xác định Trong thuật toán sắp xếp, mỗi phần tử đầu ra riêng biệt không thể được xác định hiệu quả khi đứng riêng biệt Trong các trường hợp như vậy, có thể sử dụng phân hoạch dữ liệu đầu vào để đạt được sự tương tranh Mỗi phân hoạch được tạo ra sẽ được tính toán bởi một công việc Sau đó sẽ có một công việc để tổng hợp các kết quả

Ví dụ, trong tính tổng của một dãy N số sử dụng p bộ xử lý (N > p), ta

có thể phân hoạch đầu vào thành p dãy con có kích thước gần bằng nhau Mỗi công việc sẽ tính tổng các phần tử trong mỗi dãy con, sau đó p kết quả thành

phần sẽ được tổng hợp lại thành kết quả cuối cùng

Phân hoạch dữ liệu trung gian: Các thuật toán thường được cấu trúc

như những tính toán nhiều tầng sao cho dữ liệu đầu ra của tầng này là đầu vào của tầng tiếp theo Sự phân rã như vậy của một thuật toán có thể suy ra từ việc phân hoạch dữ liệu đầu vào hoặc dữ liệu đầu ra của một tầng trung gian của thuật toán Việc phân hoạch dữ liệu trung gian đôi khi có thể đạt được sự tương tranh cao hơn so với việc phân hoạch dữ liệu đầu vào hoặc dữ liệu đầu

ra Thông thường, dữ liệu trung gian không được sinh ra một cách rõ ràng trong các thuật toán tuần tự và việc cấu trúc lại một số thuật toán ban đầu có thể phải sử dụng dữ liệu phân hoạch trung gian để tạo ra một phân rã

Ví dụ 1.3: Chúng ta trở lại với ví dụ nhân hai ma trận kích thước n×n Ở phần

trên, chúng ta đã phân rã ma trận đầu ra C để đạt được sự tương tranh tối đa là

4 Chúng ta có thể làm tăng mức độ tương tranh bằng cách tạo ra một giai đoạn trung gian trong đó 8 công việc tính toán các ma trận con và lưu kết quả

vào ma trận tạm thời D

Trang 16

Hình 1.7 Nhân hai ma trận A và B với phân hoạch của ma trận trung gian 3 chiều D

Một phân hoạch của ma trận trung gian D biến một phân rã thành 8 công việc Hình 1.8 mô tả sự phân rã này Sau khi hoàn thành phép nhân, sẽ

có một công việc thực hiện phép cộng để được ma trận kết quả Tất cả các ma

trận con D *,i,j có cùng chiều thứ hai và thứ ba là i và j được tính tổng và đưa

vào ma trận C i, j

8 công việc được đánh số từ 1 đến 8 trong Hình 1.8, mỗi công việc sẽ

thực hiện O(n3/8) công việc trong phép nhân (n/2) × (n/2) các ma trận con của

A và B Sau đó mỗi công việc từ 9 đến 12 sử dụng O(n2/4) thời gian để cộng

(n/2) × (n/2) ma trận con của ma trận trung gian D để được ma trận kết quả cuối cùng C Hình 1.9 cho thấy đồ thị phụ thuộc nhiệm vụ tương ứng với

phân rã trong Hình 1.8

Trang 17

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

Hình 1.8 Một phân rã của phép nhân ma trận dựa trên việc phân hoạch

ma trận trung gian 3 chiều D

Hình 1.9 Đồ thị phụ thuộc của phân rã trong Hình 1.8

2.2.3 Phân rã thăm dò

Phân rã thăm dò được sử dụng để phân rã các bài toán mà các tính toán nằm bên dưới tương ứng với một sự tìm kiếm trong không gian nghiệm Trong phân rã thăm dò, chúng ta phân hoạch không gian tìm kiếm thành nhiều phần nhỏ hơn, và tìm kiếm đồng thời trên các không gian này cho đến khi các nghiệm mong muốn được tìm thấy

Ví dụ 1.4: Bài toán đố thứ 15

Trang 18

Có 15 quân cờ được được đánh số từ 1 đến 15 đặt trên một bàn cờ gồm 4×4 ô Quân cờ có thể di chuyển vào vị trí trống từ một vị trí liền kề nó do đó

sẽ tạo ra một ô trống ở vị trí ban đầu của quân cờ Quân cờ có thể di chuyển theo 4 hướng: lên, xuống, sang trái và sang phải Cho biết cấu hình ban đầu và cuối cùng của quân cờ Hãy xác định một chuỗi các di chuyển sao cho từ cấu hình ban đầu, ta đạt được cấu hình cuối cùng sau một chuỗi ngắn nhất các phép dịch chuyển

Giả sử ta có một cấu hình ban đầu và cấu hình cuối cùng như sau:

Đầu tiên, từ cấu hình ban đầu ta tạo ra các nút sao cho mỗi nút là một khả năng di chuyển để tạo ra các cấu hình mới của bàn cờ (ví dụ ta có 4 khả năng di chuyển như hình minh họa) Sau đó mỗi nút được giao cho một công việc để tiếp tục khám phá cho đến khi ít nhất một trong số đó tìm thấy một nghiệm Ngay sau khi một công việc tìm thấy nghiệm nó sẽ thông báo cho các công việc khác để chấm dứt việc tìm kiếm

Trang 19

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

Hình 1.10 Phân rã thăm dò minh họa cho bài toán đố thứ 15

Trang 20

1.3 KỸ THUẬT SONG SONG HÓA TÍNH TOÁN DỰA TRÊN PHÂN ĐOẠN DÃY CÁC NGHIỆM CỦA BÀI TOÁN

Với nhiều bài toán chúng ta có thể biết trước số lượng nghiệm của nó

và sự sắp xếp của các nghiệm trong một dãy cần tìm Đối với các bài toán này

ta có thể áp dụng chiến lược phân rã dữ liệu đầu ra với một cách làm chi tiết hơn Song song hóa tính toán dựa trên phân đoạn dãy các nghiệm của bài toán

là một hướng tiếp cận mới để giải quyết các bài toán trên

Để tổ chức tính toán song song, ta thực hiện hai bước sau:

Bước 1: Chia dãy các nghiệm cần tìm của bài toán thành n (n ≥ 2) đoạn

con Mỗi một đoạn con có đầu vào và điều kiện kết thúc riêng

Đầu vào của quá trình tính toán thứ nhất trùng với đầu vào của bài toán,

điều kiện kết thúc của quá trình tính toán thứ n trùng với điều kiện kết thúc

của bài toán Việc phân đoạn dãy nghiệm của bài toán phải thỏa mãn hai điều kiện:

1 Dễ dàng xác định đầu vào và điều kiện kết thúc của các quá trình tìm đoạn con các nghiệm

2 Độ dài các đoạn con các nghiệm chênh lệch nhau càng ít càng tốt Hai điều kiện này nhằm hiện thực hóa quá trình tính toán song song, cân bằng tải cho các bộ xử lý và giảm đáng kể thời gian tính toán Đạt được

cả hai điều kiện là điều rất khó khăn Chính vì thế, chúng ta thường ưu tiên điều kiện thứ nhất và cố gắng để điều kiện thứ hai đạt được đến mức tốt nhất

có thể

Trang 21

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

Hình 1.11 Sơ đồ tính toán song song tìm các nghiệm của bài toán

Khi đó thời gian tìm nghiệm giảm đáng kể theo số các đoạn con nghiệm được chia Việc tổ chức tính toán song song các nghiệm theo kỹ thuật này là sự kết hợp giữa thiết kế thuật toán theo kiểu dưới lên và chia để trị

Trang 22

CHƯƠNG 2 BÀI TOÁN DÃY BỊ CHẶN

Trong chương này chúng ta sẽ tìm hiểu về bài toán dãy bị chặn, xây dựng thuật toán tìm các dãy bị chặn và song song hóa thuật toán này theo kỹ thuật phân đoạn dãy nghiệm đã trình bày trong Chương 1

2.1 BÀI TOÁN DÃY BỊ CHẶN

Ký hiệu Z là tập hợp các số nguyên và n  Z Lấy p và q là 2 dãy số nguyên độ dài n:

Z q p n i

q q q q p

p p

p 1 2 n  và  1 2 n , 1,2, , }: i, i

Định nghĩa 1.1: Ta nói rằng:

1) p ≤ q khi và chỉ khii{1,2, ,n}:p iq i

2) p < q khi và chỉ khii 1,2, ,n}:p iq i vàj1,2, ,n}:p jq j

Bài toán dãy bị chặn:

Bài toán dãy bị chặn được H C Thành đưa ra trong [6] như sau:

Cho hai dãy số nguyên độ dài n, ss1s2 s n  và gg1g2 g n  sao

cho s < g

Hãy tìm tất cả các dãy số nguyên độ dài n, tt1t2 t n thoả mãn s ≤ t ≤ g

Dãy số s và g được gọi là các dãy biên Dãy tt1t2 t n  phải thỏa mãn:

i i i

t n

Thành phần t1 có thể nhận một trong các giá trị sau:

Trang 23

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

Tương tự, thành phần t n có thể nhận một trong các giá trị sau:

n n

2.2 THUẬT TOÁN TÌM CÁC DÃY BỊ CHẶN

Mỗi dãy số nguyên t  1t2 t n  có thể được xem như là một từ có độ

dài n trên bảng chữ cái Z Ta sắp xếp các từ này tăng dần theo thứ tự từ điển

- Từ nhỏ nhất là s1s2 … s n ứng với dãy s,

- Từ lớn nhất là từ g1g2 …g n ứng với dãy g

Ví dụ 2.1: Cho hai dãy biên s = <3 5 7 8> và g = <4 5 8 9> Có tất cả 8 dãy số

nguyên t thỏa mãn s ≤ t ≤ g được sắp xếp tăng dần theo bảng sau:

Theo thứ tự từ điển, dãy '

t được kế thừa phần bên trái nhiều nhất có thể

của dãy t từ tọa độ 1 đến tọa độ thứ i-1, với:

i = max{ j | t j < g j }

Khi đó, từ tọa độ đầu tiên đến tọa độ thứ i-1 không thay đổi:

Trang 24

Độ phức tạp của thuật toán:

Dòng lệnh 2) khởi gán dãy T với độ phức tạp O(n)

Trang 25

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

Vậy độ phức tạp tổng thể của thuật toán là O(n.

2.3 SONG SONG HÓA THUẬT TOÁN TÌM CÁC DÃY BỊ CHẶN

Để song song hóa tính toán tìm tất cả các dãy bị chặn t thỏa mãn

g

t

s  ta chia dãy nghiệm cần tìm thành m đoạn con Số các đoạn con phụ

thuộc vào số bộ xử lý hệ thống dành cho việc tính toán

Giả sử m ≤ g1-s1+1 Ta có thể chia khá đều đoạn nguyên [s1, g1]

thành m đoạn như sau:

Đặt l = g1 – s1 +1, p = l div m và q = l mod m Khi đó, ta có thể chia đoạn nguyên [s1, g1] thành q đoạn con có độ dài là p+1 và m-q đoạn con có độ dài là p như hình vẽ dưới đây:

Bộ xử lý thứ j (j = 1, 2,…, m) sẽ tìm tất cả các dãy bị chặn thuộc đoạn con nghiệm thứ j Chúng chính là các dãy bị chặn mà thành phần t1 thuộc vào

đoạn j như đã chia ở hình trên Để làm việc này ta chỉ cần gán giá trị mới cho

p j

S S

)

1(]

1[

)1).(

1(]1[]1[

1[

]1[]1[

p S

p S G

Nghĩa là, bộ xử lý thứ j giải quyết một bài toán dãy bị chặn với các dãy biên mới (hẹp hơn) Thuật toán cho bộ xử lý thứ j (j = 1, 2,…, m) là:

Trang 27

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

Trong trường hợp g1-s1+1 < m, ta có thể kết hợp đoạn nguyên [s2,g2]

với đoạn nguyên [s1,g1] để chia dãy các nghiệm cần tìm thành nhiều đoạn con

Ví dụ 2.3.1: Với s = <1 3 5 6 >, g = <5 3 7 6 > ta phân đoạn như sau:

Vì g1 – s1 + 1 = 5 nên ta có thể chia thành m = 4 đoạn Khi đó, p = 1 và

q =1 Ta sẽ phân thành 1 đoạn có độ dài bằng 2 và 3 đoạn có độ dài bằng 1:

Trang 28

CHƯƠNG 3 ÁP DỤNG CHO MỘT SỐ BÀI TOÁN TỔ HỢP

3.1 BÀI TOÁN HOÁN VỊ

Trong toán học, khái niệm hoán vị được sử dụng với nhiều nghĩa hơi khác nhau, tất cả đều liên quan đến việc thay đổi trật tự của các đối tượng hoặc các giá trị Ta có thể hiểu rằng, một hoán vị của một tập các đối tượng là một sự liệt kê của các đối tượng đó theo một trật tự nhất định Ví dụ, có 6 hoán vị của tập 3 phần tử {1,2,3} là: (1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1),

( và (3, 2, 1) Số lượng các hoán vị của n đối tượng là n!

Hoán vị xuất hiện trong hầu hết các lĩnh vực của toán học khi xem xét các thứ tự khác nhau của các phần tử trên các tập hữu hạn và có bao nhiêu cấu hình như vậy được tạo ra Vì vậy, hoán vị được sử dụng nhiều trong các thuật toán sắp xếp của khoa học máy tính Chính vì ứng dụng rộng rãi của hoán vị

mà đã có rất nhiều thuật toán sinh hoán vị được ra đời và phát triển Trong phần này, chúng ta sẽ tiếp cận một phương pháp mới để sinh hoán vị dựa trên thứ tự từ điển

3.1.1 Bài toán hoán vị

Cho tập X gồm n phần tử Mỗi hoán vị của tập X là một cách liệt kê các phần tử của X Hay mỗi hoán vị trên tập X chính là một song ánh từ X vào

chính nó

Đồng nhất tập X  {1,2, ,n } Gọi S n là tập tất cả các hoán vị của tập n phần tử X Mỗi hoán vị trên tập X là một song ánh f : X  X nên có thể biểu diễn nó bằng một dãy số nguyên độ dài n như sau:

Trang 29

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

3.1.2 Thuật toán sinh các hoán vị

Có nhiều phương pháp khác nhau để sinh hoán vị như: phương pháp từ điển, phương pháp từ điển ngược, phương pháp thêm bớt một phần tử, phương pháp đổi chỗ Tuy nhiên, với các phương pháp này, khi thực hiện song song hóa thường khó xác định được đầu vào và điều kiện kết thúc của

các quá trình Thêm vào đó, giả sử ta chia đôi dãy nghiệm, khi n lẻ thì hai đoạn con nghiệm sẽ chênh nhau (n-1)! nên thời gian tính toán sẽ giảm không

đáng kể

Trong mục này, chúng ta sẽ tiếp cận một phương pháp mới: sinh hoán

vị nhờ vectơ nghịch thế Đây là một phương pháp đơn giản nhưng hiệu quả

khi ta tiến hành song song hóa bằng kỹ thuật phân đoạn dãy các nghiệm Bằng phương pháp này, bài toán hoán vị trở thành một trường hợp riêng của bài toán dãy bị chặn Vì thế, ta có thể sử dụng Thuật toán 2.1 để sinh hoán vị

a) Thứ tự từ điển

Mỗi hoán vị được biểu diễn bằng một dãy các số nguyên nên có thể

xem nó như là một từ trên bảng chữ cái X Ta định nghĩa thứ tự từ điển (<) và

thứ tự từ điển ngược (<N) trên tập tất cả các dãy có độ dài n với các phần tử lấy từ tập {1, 2, …, n} như sau:

Định nghĩa 3.1.1: Giả sử x1x2 x n và y1y2 y n là hai từ trên bảng chữ cái X

Ta nói rằng:

)(

)(

:1

)(

:

Ví dụ 3.1.1: Các hoán vị của tập 3 phần tử được sắp xếp theo thứ tự từ điển và

thứ tự từ điển ngược như sau:

Trang 30

Dãy các hoán vị sắp theo thứ tự từ điển có các tính chất sau:

1) Trong hoán vị đầu tiên các phần tử xuất hiện theo thứ tự tăng dần, trong hoán vị cuối cùng các phần tử xuất hiện theo thứ tự giảm dần Vậy, hoán

vị cuối cùng là đảo ngược của hoán vị đầu tiên

2) Dãy các hoán vị có thể chia thành n khối độ dài ( n 1)! tương ứng với giá

trị tăng dần của các phần tử ở vị trí đầu tiên (n-1) vị trí cuối cùng của khối chứa phần tử q ở vị trí đầu tiên xác định dãy các hoán vị của tập X\{q}

cũng theo thứ tự từ điển

b) Vectơ nghịch thế

Trong dãy số nguyên biểu diễn một hoán vị có những cặp số mà số đứng trước lại lớn hơn số đứng sau Những cặp số như vậy được gọi là nghịch thế

Định nghĩa 3.1.2 Cặp số (a i,a j) với i < j được gọi là một nghịch thế của hoán vị <a1a2 a n > nếu a i > a j

Ví dụ 3.1.2: Hoán vị σ = < 2 3 1 5 4 > có 3 nghịch thế là: (2,1), (3,1), (5,4)

Trang 31

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

Tọa độ d j chính là số các nghịch thế tạo bởi thành phần thứ j

Ví dụ 3.1.3: Dãy các hoán vị và vectơ nghịch thế của tập 3 phần tử

Theo Định nghĩa 3.1.3, thành phần đầu tiên d1 của vectơ nghịch thế của

một hoán vị luôn bằng 0 (một khả năng chọn), thành phần thứ hai d2 bằng 0

hoặc 1 (hai khả năng chọn) Vậy: 0 ≤ d j ≤ j-1 , j =1,2, ,n (3.1.2)

Ký hiệu N là tập các số nguyên không âm Đặt:

}

,,2,1,10

,

|) ,,,

()(,

Ảnh của mỗi hoán vị qua ánh xạ h chính là vectơ nghịch thế của hoán

vị đó Ta chỉ ra rằng ánh xạ h là một song ánh Vì hai tập S n và V n đều hữu

hạn và có cùng lực lượng nên ta chỉ cần chứng minh h là đơn ánh

Trang 32

Giả sử có hai hoán vị có chung vectơ nghịch thế:

) ,,,() ,,,(:

,

2 1

b n b

b a n a

a n n

a a

a

d d

d  Cứ tương tự như vậy ta chỉ ra rằng

số các hoán vị của tập n phần tử Hay nói một cách khác, mỗi vectơ thuộc V n

đều là vectơ nghịch thế của một hoán vị nào đó thuộc S n

Sinh vectơ nghịch thế

Có thể xem mỗi vectơ nghịch thế (d1, d2 , …, d n ) thuộc tập V n là một từ

d1d2 …d n trên bảng chữ cái N Ta sắp xếp các từ này tăng dần theo thứ tự từ

điển

Giả sử d = (d1, d2, , d n) là một vectơ nghịch thế vừa tìm được Ta cần phải tìm vectơ nghịch thế ( , ', , ')

2 ' 1 '

n

d d d

d  kế tiếp sau vectơ trên trong dãy đã được sắp xếp Theo thứ tự từ điển vectơ '

d được kế thừa phần bên trái nhiều

nhất có thể của vectơ d từ tọa độ 1 đến tọa độ thứ k-1, với:

k = max { j | d j < j-1}

Khi đó các tọa độ từ tọa độ đầu tiên đến tọa độ thứ k-1 sẽ được giữ

Trang 33

LUẬN VĂN CAO HỌC Song song hóa một số thuật toán tổ hợp

0,

Bước sinh vectơ nghịch thế kết thúc khi đã sinh tất cả các vectơ

nghịch thế thuộc tập V n Nghĩa là khi vectơ nghịch thế cuối cùng 0 1 2 n-1

được sinh ra Khi đó:

k = 0

Đây cùng là điều kiện kết thúc của thuật toán

c Thuật toán sinh hoán vị nhờ vectơ nghịch thế

Ta sẽ liệt kê các hoán vị của n số tự nhiên {1,2, ,n} mà vectơ nghịch thế của chúng được sắp xếp theo thứ tự từ điển Nhận xét rằng, khi xếp theo thứ tự từ điển, vectơ nghịch thế đầu tiên sẽ là (0 0 0) tương ứng với hoán

vị <1, 2, 3, , n-1, n>, vectơ nghịch thế cuối cùng sẽ là (0,1,2, ,n2,n1)

tương ứng với hoán vị <n, n-1, , 2, 1>

Trên cơ sở Định lý 3.1, ta xây dựng thuật toán sinh hoán vị nhờ vectơ nghịch thế gồm hai bước như sau:

1) Sinh vectơ nghịch thế thuộc tập S n

2) Xác định hoán vị tương ứng với vectơ nghịch thế vừa sinh ra

Bước 1: Sinh vectơ nghịch thế thuộc tập S n

Nhìn vào các bước sinh vectơ nghịch thế ta thấy rằng, nếu ta lấy vectơ

nghịch thế đầu tiên gán cho s: s = < 0 0 0 > và vectơ nghịch thế cuối cùng gán cho g: g = < 0 1 n-2 n-1 > rồi áp dụng Thuật toán 2.1 để tìm dãy bị

chặn Khi đó, các dãy bị chặn tìm được chính là dãy vectơ nghịch thế cần tìm

Ví dụ 3.1.4: Cho s = < 0 0 0 0 > và g = < 0 1 2 3 > Tất cả các dãy nguyên t

thỏa mãn stg được sắp xếp tăng dần theo bảng sau:

Ngày đăng: 08/01/2015, 08:30

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Hoàng Chí Thành (1999), Giáo trình Tổ hợp, NXB ĐHQG Hà Nội Sách, tạp chí
Tiêu đề: Giáo trình Tổ hợp
Tác giả: Hoàng Chí Thành
Nhà XB: NXB ĐHQG Hà Nội
Năm: 1999
3. Hoàng Chí Thành (2010), Một số thuật toán tổ hợp tiên tiến, Kỷ yếu Hội nghị Khoa học “Các chuyên đề chuyên toán bồi dưỡng học sinh giỏi trung học phổ thông”, Nam Định, tr. 169-177 Sách, tạp chí
Tiêu đề: Một số thuật toán tổ hợp tiên tiến," Kỷ yếu Hội nghị Khoa học “Các chuyên đề chuyên toán bồi dưỡng học sinh giỏi trung học phổ thông
Tác giả: Hoàng Chí Thành
Năm: 2010
4. Nguyễn Đức Nghĩa, Nguyễn Tô Thành (2003), Toán rời rạc, NXB Đại học Quốc gia Hà Nội.Tiếng Anh Sách, tạp chí
Tiêu đề: Toán rời rạc
Tác giả: Nguyễn Đức Nghĩa, Nguyễn Tô Thành
Nhà XB: NXB Đại học Quốc gia Hà Nội. Tiếng Anh
Năm: 2003
5. A. Grama, A. Gupta, G. Karypis and V. Kumar (2003), Introduction to parallel computing, Addison-Wesley Sách, tạp chí
Tiêu đề: Introduction to parallel computing
Tác giả: A. Grama, A. Gupta, G. Karypis and V. Kumar
Năm: 2003
6. H. C. Thanh (2010), Bounded sequence problem and some its applications, Proceeding of Japan - Vietnam Workshop on Software Engineering, Hanoi, pp. 74 - 83 Sách, tạp chí
Tiêu đề: Bounded sequence problem and some its applications
Tác giả: H. C. Thanh
Năm: 2010

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w