Tải bản đầy đủ (.pdf) (71 trang)

Tính toán song song và ứng dụng vào bài toán tổ hợp

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.59 MB, 71 trang )

Đ I H CăĐĨăN NG
TR
NGăĐ I H CăS ăPH M
-------------------------------------

HUǵNHăLểăĐ I NG C

TÍNH TỐN SONG SONG VÀ
NG D NG VÀO BÀI TỐN T H P

LU NăVĔNăTH CăSƾă
H TH NG THƠNG TIN

ĐƠăN ng - Nĕmă2019


Đ I H CăĐĨăN NG
TR
NGăĐ I H CăS ăPH M
-------------------------------------

HUǵNHăLểăĐ I NG C

TÍNH TỐN SONG SONG VÀ
NG D NG VÀO BÀI TỐN T H P

Chun ngành: H th ng thơng tin
Mã s : 8480104

LU NăVĔNăTH CăSƾă


Ng

iăh

ng d n khoa h c: TS. NGUY NăĐỊNHăL U

ĐƠăN ng - Nĕmă2019



ii

L IăC Mă N
L i đầu tiên tôi xin c m ơn đến các quý thầy cô, khoa Công Nghệ thông tin,
trư ng Đ i học Sư Ph m đã tận tình gi ng d y, truyền đ t những kiến th c, kinh
nghiệm quý báu trong suốt th i gian tơi theo học t i chương trình. Các kiến th c, kinh
nghiệm quý báu c a thầy cô giáo khơng chỉ giúp cá nhân tơi hồn thiện hệ thống kiến
th c trong học tập mà cịn giúp tơi ng dụng các kiến th c đó trong cơng việc hiện t i.
Đặt biệt, tôi xin gửi l i c m ơn chân thành và sâu sắc nhất đến thầy giáo hướng
dẫn TS.ăNguy năĐìnhăL u, ngư i thầy đã tận tình hướng dẫn và t o điều kiện tốt nhất
để tôi hồn thành luận văn này.
Tơi cũng xin được bày tỏ tình c m với gia đình, đ ng nghiệp, b n bè đã t o điều
kiện để tơi có thể dành th i gian cho khóa học. Xin chân thành c m ơn các anh chị em
trong lớp K34, đã ln hỗ trợ tơi trong q trình học tập để có được kết qu như ngày
hơm nay, tơi sẽ nhớ mãi lớp K34 thân thương này.
Tuy có nhiều cố gắng, nhưng chắc chắn luận văn này không tránh khỏi những
thiếu sót nhất định. Tơi rất mong nhận được ý kiến đóng góp q báu c a các thầy cơ
giáo và các anh chị, các b n để luận văn ngày càng hoàn thiện hơn.
Trân trọng c m ơn!





v

M CăL C
L IăCAMăĐOAN ...........................................................................................................i
L IăC Mă N ............................................................................................................... ii
TịMăT T .................................................................................................................... iii
M CăL C ...................................................................................................................... v
DANHăM CăCỄCăB NG......................................................................................... viii
DANHăM CăCỄCăHỊNH ............................................................................................ix
DANHăM CăCỄCăBI UăĐ ....................................................................................... x
M ăĐ U ......................................................................................................................... 1
1. Lý do chọn đề tài .....................................................................................................1
2. Mục tiêu nghiên c u ................................................................................................ 1
3. Đối tượng và ph m vi nghiên c u ...........................................................................2
4. Phương pháp nghiên c u......................................................................................... 2
5. Ý nghĩa khoa học và thực tiễn c a đề tài ................................................................ 2
CH
NGă1.ăT NGăQUANăTệNHăTỐN SONG SONG .........................................3
1.1. Tính tốn song song và các mơ hình tính tốn song song ........................................3
1.1.1. Mơ hình SISD (Single Intruction, Single data) .................................................3
1.1.2. Mơ hình SIMD (Single Intruction, Multiple data): ...........................................4
1.1.3. Mơ hình MISD (Multiple Intruction, Single data) ............................................4
1.1.4. Mơ hình MIMD (Multiple Intruction, Multiple data) .......................................5
1.2. Mơ hình máy tính PRAM ......................................................................................... 6
1.3. Thuật tốn song song ................................................................................................ 8
1.3.1. Quy trình xây dựng thuật tốn song song ......................................................... 8
1.3.2. Nguyên lý thiết kế thuật toán song song ........................................................... 9

1.3.3. Các cách tiếp cận trong thiết kế ........................................................................9
1.3.4. Phân rã .............................................................................................................10
1.3.4.1. Phân rã đệ quy.......................................................................................... 10
1.3.4.2. Phân rã dữ liệu: ........................................................................................ 10
1.3.4.3. Phân rã thăm dò ....................................................................................... 11
1.4. Phân tích và đánh giá thuật tốn song song............................................................ 11
CH
NGă2.ăTOỄNăH CăT ăH P ..........................................................................12
2.1. Tập hợp và các nguyên lý cơ b n ...........................................................................12
2.1.1. Tập hợp ...........................................................................................................12
2.1.2. Các nguyên lý cơ b n ...................................................................................... 13
2.1.3. Các cấu hình t hợp ......................................................................................... 14


vi

2.1.3.1. Chỉnh hợp.................................................................................................14
2.1.3.2. T hợp ......................................................................................................15
2.1.3.3. Hoán vị .....................................................................................................16
2.2. Bài toán liệt kê ........................................................................................................17
2.2.1. Các phương pháp liệt kê..................................................................................17
2.2.1.1. Liệt kê từ điển .......................................................................................... 17
2.2.1.2. Phương pháp sinh .................................................................................... 17
2.2.2. Các bài toán liệt kê thư ng gặp .......................................................................18
2.2.2.1. Dãy bị chặn .............................................................................................. 18
2.2.2.2. Bài toán tập con ....................................................................................... 19
2.2.2.3. Hoán vị n phần tử..................................................................................... 20
2.2.2.4. Bài toán phân ho ch .................................................................................20
CH
NGă3.ă NGăD NGăTệNHăTOỄNăSONGăSONGăVĨOăBĨIăTOỄNăT ă

H P............................................................................................................................... 21
3.1. Bài toán sinh dãy bị chặn........................................................................................ 21
3.1.1. Xây dựng thuật toán tuần tự ............................................................................21
3.1.2. Xây dựng thuật toán song song .......................................................................21
3.2. Bài toán tìm tập con ................................................................................................ 23
3.2.1. Xây dựng thuật tốn tuần tự ............................................................................23
3.2.2. Xây dựng thuật tốn song song .......................................................................24
3.2.3. Ví dụ minh họa tìm tất c tập con con c a tập có 4 phần tử ........................... 25
3.2.4. Phân tích ..........................................................................................................25
3.3. Bài toán liệt kê hoán vị ........................................................................................... 26
3.3.1. Phép thế, nghịch thế ........................................................................................ 26
3.3.2. Xây dựng thuật toán tuần tự ............................................................................27
3.3.3. Xây dựng thuật tốn song song .......................................................................28
3.3.4. Ví dụ minh họa cho thuật tốn ........................................................................30
3.3.4.1. Ví dụ 1: tìm tất c các hốn vị c a dãy s có 3 phần tử ............................ 30
3.3.4.2. Ví dụ 2: tìm tất c các hốn vị c a dãy s có 4 phần tử ............................ 31
3.3.5. Ch ng minh thuật toán song song là đúng ...................................................... 31
CH
NGă4.ăTH ăNGHI MăV IăTH ăVI NăTHREAD .....................................33
4.1. Thread ..................................................................................................................... 33
4.1.1. Giới thiệu chung .............................................................................................. 33
4.1.2. Các hàm trong thư viện Thread .......................................................................33
4.2. Cơ chế Socket .........................................................................................................36
4.3. Lập trình thử nghiệm tìm tập con ...........................................................................39


vii

4.4. Lập trình thử nghiệm bài tốn tìm hốn vị n phần tử .............................................42
CH

NGă5.ăT NGăK T ........................................................................................... 49
5.1. Kết luận................................................................................................................... 49
5.2. Hướng phát triển .....................................................................................................49
DANHăM CăTĨIăLI UăTHAMăKH O ...................................................................50
QUY TăĐ NHăGIAOăĐ TÀI LU NăVĔNă(B n sao)


viii

DANHăM CăCỄCăB NG
S ăhi uă

Tênăb ng

b ng

Trang

2.1.

Mô phỏng l i bài tốn

16

2.2.

Ví dụ dãy bị chặn

18


2.3.

Biểu diễn tập con theo d ng nhị phân

19

3.1.

Bộ xử lý phụ sinh dãy nhị phân bị chặn với tập 4 phần tử

25

3.2.

Hoán vị, dãy nghịch thế, dãy nghịch thế ngược 3 phần tử

27

3.3.

Bộ xử lý phụ sinh dãy bị chặn với dãy s có 3 phần tử

31

3.4.

Bộ xử lý phụ sinh dãy bị chặn với dãy s có 3 phần tử

31


4.1.

Kết qu th i gian tính tốn tuần tự và song song

41

4.3.

Kết qu thử nghiệm tính tốn song song

47


ix

DANHăM CăCÁC HÌNH
S ăhi uă
hình

Tên hình

Trang

1.1.

Mơ hình kiến trúc song song SISD

3

1.2.


Mơ hình kiến trúc song song SISD

4

1.3.

Mơ hình kiến trúc song song MISD

4

1.4.

Mơ hình kiến trúc song song MISD dãy CPU

5

1.5.

Mơ hình MIMD chia sẻ bộ nhớ

5

1.6.

Mơ hình MIMD truyền thơng điệp

6

1.7.


Mơ hình PRAM

7

1.8.

Các giai đo n xây dựng thuật tốn song song

8

4.1.

Tr ng thái c a một thread

34

4.2.

Mơ hình socket

36

4.3.

Một phần kết qu tìm tập con có 25 phần tử theo thuật toán tuần
tự

39


4.4.

Kết qu th i gian tìm tập con theo thuật tốn tuần tự

40

4.5.

Kết qu tìm tập con 20 phần tử song song với 2 bộ xử lý

40

4.6.

Kết qu th i gian tìm tập con bằng thuật toán song song

41

4.7.

Th i gian xử lý bài toán liệt kê hoán vị theo thuật toán tuần tự

43

4.8.

Các tập tin kết qu c a bài toán liệt kê hoán vị tuần tự

43


4.9.

Kết qu cụ thể trong từng tập tin

44

4.10.

Giao diện phần server c a chương trình tính tốn song song tìm
hốn vị

44

4.11.

Giao diện phần client c a chương trình tính tốn song song tìm
hốn vị

45

4.12.

Kết qu thực thi chương trình tính tốn song song

45

4.13.

Các tập tin kết qu c a bài toán liệt kê hoán vị song song


46

4.14.

Nội dung tập tin kết qu c a bài toán liệt kê hoán vị song song

47


x

DANHăM CăCÁCăBI UăĐ
S ăhi uă
bi uăđ

Tênăbi uăđ

Trang

4.1.

Biểu đ th i gian tính tốn tuần tự, tính tốn song song

42

4.2.

Biểu đ so sánh th i gian tính tốn giữa hai thuật toán

48



1

M ăĐ U
1. Lýădoăch năđ ătƠiă
Toán học t hợp là một ngành toán học r i r c, nghiên c u về các cấu hình kết
hợp các phần tử c a một tập hợp hữu h n phần tử. Toán t hợp có liên quan đến rất
nhiều lĩnh vực khoa học như đ i số, xác xuất, thống kê, hình học, vật lý thông kê và
đặt biệt được ng dụng nhiều trong ngành khoa học máy tính. Các bài tốn cơ b n c a
toán t hợp như: bài toán dãy bị chăn, bài toán hoán vị phần tử, bài toán tập con, bài
toán phân ho ch,… là cơ s phát triển các thuật toán cho bài toán sắp xếp, phân rã,
hoán vị. Thế nhưng các bài toán t hợp thư ng là các bài tốn có độ ph c t p cao, khối
lượng tính tốn lớn và th i gian tính tốn khá dài gây ra những khó khăn cho việc tính
tốn.
Trong phương pháp tính tốn truyền thống, các máy tính, cũng như chương trình
phần mềm được lập trình xử lý bài tốn phương pháp tính tốn tuần tự. Để gi i quyết
một u cầu, bài tốn thì thuật toán được xây dựng và thực hiện theo các lệnh tập lệnh
một cách tuần tự, t i mỗi th i điểm chỉ có một lệnh được thực hiện. Sau khi lệnh kết
thúc thì lệnh tiếp theo mới thực hiện.
Xã hội hiện đ i, phát triển liên tục như hiện nay đặt ra cho chúng ta nhiều vấn đề,
nhiều bài toán ngày một ph c t p, nhu cầu tính tốn xử lý ngày càng lớn. Việc tính
tốn tuần tự theo truyền thống khơng cịn đáp ng tốt nhu cầu lượng tính tốn kh ng l
này nữa. Cùng với đó là sự phát triển c a các bộ xử lý đa nhân, đa lu ng có thể thực
hiện đa nhiệm, đa tác vụ cùng lúc. Nhiều hệ thống máy tính lớn là sự liên kết c a rất
nhiều máy tính với nhau để có thể xử lý tính tốn một bài toán ph c t p. Tất c đã m
ra một th i đ i mới, th i đ i c a tính tốn song song.
Tính tốn song song là một hình th c tính tốn, trong đó nhiều phép tính được
thực hiện đ ng th i. Dựa trên nguyên tắc chính là một bài tốn lớn chia thành những
phần nhỏ có thể tính tốn độc lập với nhau một cách đ ng th i.

Tính tốn song song và ng dụng tính tốn song song vào bài tốn t hợp mang
l i nhiều ý nghĩa lớn cho ngành khoa học máy tính cũng như các ngành khoa học liên
quan khác. Trước đây đã có những đề tài nghiên c u về tính tốn song song cũng như
nghiên c u về bài toán t hợp, nhưng chỉ là những nghiên c u tách biệt và việc nghiên
c u ng dụng tính tốn song song vào bài toán t hợp vẫn chưa thực sự được quan tâm
theo đúng sự quan trọng c a nó. Thế nên tơi, được sự đ ng ý c a cán bộ hướng dẫn,
lựa chọn đề tài này để làm luận văn.
2. M cătiêu nghiênăc u
- Nghiên c u tính tốn song song và bài tốn t hợp.


2

- Đề xuất gi i pháp tính tốn song song để tính tốn bài tốn t hợp nhằm tăng
hiệu qu tình tốn, tăng hiệu suất tính tốn trên máy tính, hỗ trợ tính tốn cho các lĩnh
vực khác có liên quan.
- Thử nghiệm các gi i pháp trên môi trư ng java với thư viện Thread tính tốn
song song song.
3. Đ iăt

ngăvƠăph măviănghiênăc u

Đối tượng:
- Nghiên c u lý thuyết tính tốn song song, các mơ hình máy tính, các mơ hình
tính tốn song song, các bước để xây dựng thuật toán song song, các phương pháp
phân rã bài toán.
- Các bài toán t hợp: Dãy bị chặn, tập con, hốn vị c a tập hợp.
ng dụng tính tốn song song vào bài tốn t hợp, thử nghiệm trên mơi
trư ng java với thư viện Thread.
Phạm vi nghiên cứu:

- Đề xuất gi i pháp thuật tốn tính tốn song song trên bài tốn t hợp.
- Lập trình ng dụng tính toán song song vào bài toán t hợp bằng thư viện
Thread để thử nghiệm thuật toán.
4. Ph ngăphápănghiênăc u
Trong luận văn có sử dụng các phương pháp nghiên c u như sau:
- 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 nêu ví dụ
5. ụănghƿaăkhoaăh căvƠăthựcăti năc aăđ ătƠi
Luận văn trình bày lý thuyết tính tốn song song, các mơ hình tính tốn song
song, cách xây dựng thuật tốn song song, cách phân tách bài toán phân rã để thực
hiện song song và các bài toán t hợp. Từ đó đề xuất các gi i pháp tính tốn bằng
phương pháp song song cho bài toán t hợp tăng hiệu xuất tính tốn cho các máy tính.
Thử nghiệm thực tiễn trên môi trư ng Java sử dụng thư viện Thread.


3

CH
NGă1ă
T NGăQUANăTệNHăTOỄNăSONGăSONG
1.1. Tính tốn song song và các mơ hình tính tốn song song
Trong thực tế có rất nhiều vấn đề mà đòi hỏi chúng ta ph i xử lý lượng dữ liệu
cũng như số lượng phép toán là cực kỳ lớn cùng với yêu cầu tốc độ cao. Do đó cần
ph i có những hệ thống máy tính lớn, m nh mẽ để thực hiện những vấn đề đó. Thế
nhưng hệ thống máy tính lớn l i gặp nhiều vấn đề vì giới h n về thiết bị cũng như tính
vật lý. Từ đó ngư i ta đề ra hướng gi i pháp xử ly song song từ các bộ xử lý đa nhân
hoặc từ các hệ thống nhiều các máy tính nhỏ ghép l i với nhau.
Tính tốn song song là một hình th c tính tốn mà trong đó nhiều phép tốn

được thực hiện đ ng th i với nhau, những tính tốn này trên những hệ thống đa bộ xử
lý cùng gia gi i quyết một vấn đề nào đó. Tính tốn song song ho t động dự trên
nguyên tắc là phân chia những vấn đề lớn thành những bài toán nhỏ hơn để gi i quyết
đ ng th i trên các bộ xử lý.
Cùng với sự phát triển c a khoa học kỹ thuật ngày nay mà hầu hết các hệ điều
hành hiện t i đã hỗ trợ đa xử lý, đa nhiệm t o điều kiện rất thuật lợi cho phương pháp
lập trình song song phát triển. Nhiều bộ xử lý cùng tính tốn độc lập song, trong một
kho n th i gian sẽ thực hiện được nhiều công việc hơn.
Trong xử lý song song, có nhiều cách phân lo i kiến trúc khác nhau nhưng phân
lo i kiến trúc theo M.Flynn là được sử dụng ph biến nhất. Theo Flynn thì phân lo i
kiến trúc máy tính dựa trên các đặt trưng về 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 bộ nhớ. Và từ đó ta có các các mơ hình tính
tốn như sau:
1.1.1. Mơ hình SISD (Single Intruction, Single data)
Máy tính một lu ng lệnh, một lu ng dữ liệu. Các máy tính này chỉ có một bộ xử
lý, t i một th i điểm chỉ thực hiện duy nhất một lệnh đối với một đối tượng dữ liệu.
SISD là mơn hình máy tính truyền thống theo kiểu Von Neunann.

Hình 1.1. Mơ hình kiến trúc song song SISD


4

1.1.2. Mơ hình SIMD (Single Intruction, Multiple data):
Máy tính có một lu ng lệnh, một bộ điều khiển. Nó 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ử cùng xử lý trên những tập dữ liệu khác
nhau, đến từ các lu ng dữ liệu khác nhau. Những thành phần xử lý này được giám sát
b i một đơn vị điều khiển.

Hình 1.2. Mơ hình kiến trúc song song SISD

Các máy tính thuộc mơ hình này có những đặt điểm sau:
-

Xử lý phân tán trên một số lượng lớn các phần c ng.
Thực hiện đ ng th i trên nhiều thành phần dữ liệu khác nhau.

-

Thực hiện cùng một câu lệnh trên các thành phần dữ liệu đó.

1.1.3. Mơ hình MISD (Multiple Intruction, Single data)
Máy tính lo i này có thể thực hiện nhiều chương trình nhiều lệnh trên cùng một
ngu n dữ liệu, kiến trúc này có thể chia làm 2 nhóm:
- Máy tính u cầu những bộ xử lý khác nhau có thể nhận được các lệnh khác
nhau và cùng thực hiện trên một mục dữ liệu.

Hình 1.3. Mơ hình kiến trúc song song MISD
- Máy tính có các lu ng dữ liệu được chuyển vào tuần tự theo dãy các CPU liên
tiếp.


5

Hình 1.4. Mơ hình kiến trúc song song MISD dãy CPU
1.1.4. Mơ hình MIMD (Multiple Intruction, Multiple data)
Máy tính đa bộ xử lý hoặc đa máy tính, mỗi một bộ xử lý trong hệ thống có một
bộ điều khiển riêng, thực hiện nhiều câu lệnh khác nhau trên lu ng dữ liệu riêng biệt,
chia sẻ tài nguyên ch a trong hệ thống c a bộ nhớ chính. Các hệ thống MIMD này
thực hiện các phép toán theo d ng song song khơng đ ng bộ.
Các hệ thống MIMD có đặt trưng:

- Phân tán tiến trình cho một số bộ xử;
- 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 một bộ xử lý ch y một chương trình riêng biệt.
Mơ hình này có thể chia ra làm 2 lo i theo cách th c mà các bộ xử lý truy cập
vào bộ nhớ:
- Lo i các bộ kết nối chặt. Những bộ xử lý kết nối chặt được chia sẻ từ một hệ
thống bộ nhớ chung gọi là hệ thống chia sẻ bộ nhớ.

Hình 1.5. Mơ hình MIMD chia sẻ bộ nhớ
- Lo i các bộ kết nối r i là những hệ thống chia sẻ từ bộ nhớ hệ thống nhưng
mỗi bộ xử lý cáo một bộ nhớ riêng gọi là hệ thống truyền thơng điệp. Những máy tính
truyền thơng điệp gửi đến nhiều máy tính trong đó mỗi bộ xử lý có bộ nhớ riêng và
truy cập đến bộ xử lý đó.


6

Hình 1.6. Mơ hình MIMD truyền thơng điệp
1.2. Mơ hình máy tính PRAM
PRAM (Parallel Random Access Machine) là mơ hình máy truy cập ngẫu nhiên
song song được đưa ra vào năm 1978 và được đề cập, phát triển nhiều trong xử lý song
song, thuật toán song song, lý thuyết và tính tốn [16].
PRAM khơng ph i là một mơ hình máy tính vật lý cụ thể, mà là một mơ hình
máy tính song song trừu tượng. Thơng thư ng trong việc xây dựng các thuật toán song
song, chúng ta quy ước là phát triển thuật tốn cho mơ hình trừu tượng này để t o điều
kiện thuận lợi cho việc tính tốn trên thuật tốn.
PRAM có cấu trúc bao g m: k bộ xử lý có bộ nhớ cục bộ riêng, một bộ nhớ dùng
chung với một mơ hình truy xuất bộ nhớ được quy định và khơng có th i gian liên l c.
Những xử lý được lưu trong bộ nhớ toàn cục và một bộ xử lý được kích ho t để xử lý.

T i mỗi bước, một bộ xử lý đang ho t động có thể thực hiện một trong các thao tác:
đọc dữ liệu từ bộ nhớ riêng cục bộ hay bộ nhớ toàn cục, ghi dữ liệu vào bộ nhớ riêng
cục bộ hay toàn cục hoặc kích ho t bộ xử lý khác. Các mơ hình PRAM khác nhau
chỗ làm thế nào để gi i quyết được các xung đột từ thao tác ghi và đọc vào bộ nhớ
toàn cục.
Theo Seyed H. Roosta [16], Behrooz Parhami [17] mơ hình PRAM được chia
thành 3 lo i:
- EREW (Exclusive Read, Exclusive Write): Không cho phép xung đột trong
việc đọc và ghi.
- CREW (Concurrent Read, Exclusive Write): Cho phép xung đột đọc và
không cho phép xung đột ghi. T i cùng một th i điểm, nhiều bộ xử lý có thể đọc đến
cùng một địa chỉ trong bộ nhớ tồn cục nhưng khơng có q một bộ nhớ được phép
ghi.


7

- CRCW (Concurrent Read, Concurrent Write): Cho phép xung đột đọc và cho
phép xung đột ghi. T i cùng một th i điểm, nhiều bộ xử lý có thể đọc hoặc ghi cùng
một địa chỉ trong bộ nhớ toàn cục.
CU

...
P 1. Bộ nhớ riêng 1

...
P 2. Bộ nhớ riêng 2

...


...
P k. Bộ nhớ riêng k

M ng kết nối

Bộ nhớ chung
...

Hình 1.7. Mơ hình PRAM
Trong mơ hình trừu tượng PRAM này thì độ ph c t p c a một thuật toán song
song sẽ được quy ra số bước gửi và nhận kết qu .
Độ ph c t p được quy ra số bước để gửi và nhận kết qu được đánh giá theo hàm
log. Ví dụ, trong [16, tr. 273-274] Seyed H. Roosta đã phân tích, ch ng minh được
th i gian tính c a thuật tốn song song ký hiệu Tk trên k bộ xử lý tìm cây khung
(spanning tree) trên đ thị n đỉnh là: Tk= O(n2/k)+ O(n log k). Với O(n log k) là độ ph c
t p b i số bước gửi và nhận kết qu , O(n2/k) là th i gian tính tốn. Tương tự như vậy,
thuật tốn song song tìm đư ng đi ngắn nhất c a mọi cặp đỉnh trên đ thị, ông cũng đã
chỉ ra độ ph c t p b i số bước gửi và nhận kết qu là O(n2log k) và th i gian tính tốn
là O(n3/k).
Bên c nh đó, chúng ta cần lưu ý rằng th i gian tính tốn và th i gian truyền
thơng được quy định b i số bước gửi và nhận kết qu là để phân tích đánh giá th i
gian thực hiện song song, cịn về mặt lý thuyết thì độ ph c t p c a thuật toán tuần tự
và song song là như nhau. Hơn nữa, th i gian thực hiện thuật tốn song song trong mơi
trư ng thực tế cịn phụ thuộc vào rất nhiều tham số khác như: kích cỡ thơng điệp, cấu
hình kết nối m ng đư ng truyền và cách th c truyền thông điệp. Nên trong mô hình
PRAM m c độ tăng tốc (speedup) khơng thể lên cao được khi tăng số lượng bộ xử lý
lên nhiều lần.
Như vậy, mục đích chính c a mơ hình PRAM là để xây dựng mơ hình lý thuyết.



8

Dựa trên mơ hình này, chúng ta có thể đánh giá độ ph c t p về mặt th i gian c a thuật
tốn. Đây là mơ hình t ng qt cho máy tính song song kiểu MIMD.
1.3. Thu tătốnăsongăsong
1.3.1. Quy trình xây dựng thuật tốn song song
Việc xây dựng, thiết kế một chương trình tính tốn song song từ một thuật tốn
tuần tự đã có chúng ta cần tr i qua 4 giai đo n là: phân rã, truyền thơng, tích tụ và ánh
x . Các giai đo n nối tiếp nhau và được Seyed H. Roosta biểu diễn như sau:

Hình 1.8. Các giai đoạn xây dựng thuật tốn song song
Phân rã: Là công việc sau khi đã xác định và phân tích bài tốn. Các cơng việc
tính tốn cũng như các ngu n dữ liệu đầu vào, đầu ra được phân rã thành nhiều tác vụ.
Từ đó phân tích từng tác vụ và tìm ra các tác vụ có thể tính tốn độc lập với nhau về
dữ liệu đầu ra, đầu vào hoặc độc lập về cách tính toán…


9

Truy năthông: là công đo n thể hiện các tác vụ qua từng lu ng thông tin sao cho
các lu ng đó có thể thực hiện độc lập, đ ng th i. Tính tốn thực hiện một tác vụ kèm
theo những dữ liệu đầu ra, đầu vào. Sau đó được truyền giữa các tác vụ để thực hiện
tính tốn.
Tíchăt : giai đo n này sẽ gom các tác vụ đã phân rã trên thành những tác vụ
lớn hơn giúp gi m chi phí truyền thơng nhưng cũng gây ra việc gi m tiềm năng thực
hiện đ ng th i.
Ễnhăx : là giai đo n cuối cùng, mỗi tác vụ sẽ được ấn định vào một bộ xử lý nào
đó để tiến hành việc tính tốn.
1.3.2. Ngun lý thiết kế thuật toán song song
Thuật toán song song là tập các tiến trình hoặc các tác vụ thực hiện đ ng th i có

thể trao đ i dữ liệu với nhau kết hợp cùng gi i quyết một vấn đề lớn. Để thiết kế được
thuật toán song song, ta cần quan tâm đến các nguyên lý thiết kế sau:
- Nguyên lý tập lịch: T o lịch trình để gi m tối thiểu bộ xử lý sử dụng nhưng
-

vẫn giữ không tăng th i gian tính tốn theo độ ph c t p.
Ngun lý hình ống: Thực hiện khi bài tốn xuất hiện một dãy các thao tác
{T1,T2,…Tn} trong đó Ti+1 thực hiện sau khi Ti kết thúc.

-

Nguyên lý chia để trị: Chia bài tốn thành nhiều phần nhỏ hơn có tính độc
lập với nhau để thực hiện song song.

-

Nguyên lý đ thị phụ thuộc dữ liệu: phân tích mối quan hệ giữ các dữ liệu
để xây dựng đ thị phụ thuộc dữ liệu từ đó xác định đúng được dữ liệu ra

-

vào trong từng phần c a thuật toán song song.
Nguyên lý điều kiện tương tranh: Nếu nhiều tiến trình cũng muốn truy xuất
vào cùng một vùng dữ liệu thì cần xem xét điều kiện tương tranh, các tiến

trình đó có c n tr nhau hay hay khơng.
Ngồi ra chúng ta cũng cần chú ý thuật toán song song ph i được thiết kết dựa
trên những kiến th c về kiến trúc máy tính, ngơn ngữ lập trình song song và các
phương pháp tính tốn.
1.3.3. Các cách tiếp cận trong thiết kế

Trong tính tốn song song ta có ba cách tiếp cận để thiết kế:
- Thực hiện song song hóa từ những thuật toán tuần tự, biến đ i những cấu
trúc tuần tự để tận dụng được những kh năng song song tự nhiên c a tất c
-

các thành phần trong hệ thống xử lý.
Thiết kế những thuật toán song song cần ph i phù hợp với các kiến trúc
song song.


10

-

Xây dựng những thuật toán song song từ những thuật tốn song song có
trước cho phù hợp với điều kiện và môi trư ng song song thực tế.

1.3.4. Phân rã
Trong các giai đo n thì giai đo n phân rã bài toán là một trong những bước quan
trọng nhất, giúp hình thành ý tư ng và phương pháp để thực hiện tính tốn song song.
Ta có một số phương pháp phân rã như sau:
1.3.4.1. Phân rã đệ quy
Phân rã đệ quy là phương pháp gi i bài toán hoặc thuật tốn gọi đến chính nó
nhiều lần để xử lý các bài toán con nhỏ hơn, kết qu bài toán con đơn gi n nhất sẽ
được sử dụng để tính tốn ngược l i cho đến khi tìm ra kết qu c a bài tốn ban đầu.
Ví dụ: Xét bài tốn tính n! với n là một số nguyên dương.
Ta phân tích bài tốn:
n! = n*(n-1)!
(n-1)! = (n-1)*(n-2)!


1! = 1 ;
Khi chúng ta phân tích đến bài tồn nhỏ nhất là 1!=1 và từ đó ta đưa các giá trị đã
tính tốn được từ các bài tốn nhỏ để tình ngược lên các bài toán lớn
1.3.4.2. Phân rã dữ liệu:

trên.

Phân rã dữ liệu là một phương pháp 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.
Phân rã các tính tốn g m 2 bước:
- Bước 1: Phân rã dữ liệu mà các tính tốn sử dụng.
- Bước 2: Các dữ liệu phân rã này dùng trong quá trình tính tốn riêng biệt
t o ra sự phân rã c a các tính tốn trong cơng việc.
Có một số cách phân rã dữ liệu như sau:
- Phân ho ch dữ liệu đầu ra: đối với các bài toán mỗi yếu tố đầu ra có thể
được tính tốn một cách độc lập từ các yếu tố c a dữ liệu đầu vào.
- Phân ho ch dữ liệu đầu vào: đối với bài tốn mà dữ liệu đầu vào có thể
chia thành các phần nhỏ hơn tính tốn độc lập mà khơng làm sai lệch kết
qu cuối cùng.
Ví dụ: trong bài tốn tìm min, max c a một tập hợp ta có thể phân ho ch dữ liệu
đầu vào và tính toán toán trên từng phân ho ch c a tập hợp r i t ng hợp kết qu l i để
đưa ra kết qu cuối cùng.
- Phân ho ch dữ liệu trung gian: trong những bài tốn có cấu trúc tính tốn
theo nhiều tầng, dữ liệu đầu ra c a tầng này l i là dữ liệu đầu vào c a tầng


11

tiếp theo. Sự phân rã dữ liệu đầu vào đầu ra c a các tầng này gọi là phân
ho ch dữ liệu trung gian.

1.3.4.3. Phân rã thăm dò
Phân rã thăm dị sử dụng trong các bài tốn mà các tính tốn ng với một sự tìm
kiếm trong khơng gian nghiệm. Ta phân ho ch khơng gian tìm kiếm thành các 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 tìm ra nghiệm
mong muốn.
1.4. PhơnătíchăvƠăđánhăgiáăthu tătốnăsongăsong
Trong thuật tốn song song, độ ph c t p tính tốn về th i gian khơng chỉ phụ
thuộc vào kích cỡ c a dữ liệu đầu vào mà cịn phụ thuộc vào kiến trúc máy tính song
song và số lượng các bộ xử lý được phép sử dụng trong hệ thống.
Độ ph c t p th i gian là thước đo quan trọng nhất đánh giá m c độ hiệu qu c a
thuật toán song song. Độ ph c t p th i gian c a thuật toán song song được xác định
b i số các phép toán cơ s và số các bước truyền t i dữ liệu giữa các bộ xử lý với
nhau. Từ đó suy ra, độ ph c t p th i gian c a thuật tốn song song khơng chỉ phụ
thuộc vào mơ hình tính tốn song song mà cịn phụ thuộc vào số bộ xử lý được sử
dụng.
M c độ tăng tốc (Speedup) [16, tr. 228-231] c a thuật toán song song sử dụng p
bộ xử lý được xác định như sau:
Sp = TS /Tp
Trong đó,
TS là th i gian thực hiện tính tốn trên một bộ xử lý
Tp là th i gian thực hiện tính tốn trên p bộ xử lý.
Để đánh giá được độ ph c t p tính tốn c a các thuật tốn song song, ngồi số
bước tính tốn chúng ta cịn cần quan tâm đánh giá đến th i gian truyền thơng c a các
tiến trình. Th i gian thực hiện song song, ký hiệu là tp g m hai phần tcomp và tcomm.
tp = tcomp + tcomm
Trong đó, tcomp là th i gian tính tốn và tcomm th i gian truyền thông dữ liệu.


12


CH
NGă2ă
TỐN H CăT ăH P
Tốn học t hợp hay cịn gọi là gi i tích t hợp, đ i số t hợp,… là một lĩnh vực
c a toán r i r c. Tư duy về t hợp ra đ i từ rất sớm từ th i nhà Chu, Hy L p c ,...
nhưng vào đầu thế kỷ XVII thì Tốn t hợp mới hình thành được nên một ngành tốn
học mới được nghiên c u nghiêm túc qua các công trình c a Pascal, Fermat, Leibnitz,
Euler,… Và đến khi máy tính ra đ i gi i quyết được nhiều bài tốn ph c t p, trong đó
có các bài tốn t hợp thì tốn học t hợp mới thực sự phát triển m nh mẽ như ngày
nay.
Toán học t hợp tâp trung nghiên c u về các cách phân bố phần tử cũng như các
cấu hình trong các tập hợp hữu h n phần tử. Thư ng gặp các d ng bài toán như:
Bài toán đếm là bài toán gi i quyết những câu hỏi "có bao nhiêu cấu hình tho i
mãn những điều kiện bài toán?" sử dụng phương pháp đếm để tìm số cấu hình đáp ng
yêu cầu bài tốn. Thơng thư ng bài tốn đếm được sử dụng rất hiệu qu trong các bài
tốn mang tính chất đánh giá: tính xác xuất c a một sự kiện, tính độ ph c t p,…
Bài tốn tồn tại u cầu ta đi ch ng minh sự t n t i c a một cấu hình t hợp theo
yêu cầu đó là có hay khơng?
Bài tốn liệt kê dùng để chỉ ra tất c các cấu hình t hợp có thể có. Thư ng dùng
phương pháp vét c n tất c các cấu hình và kết hợp với bài tốn đếm để tìm t ng số
lượng cấu hình tho i mãn u cầu. Những bài tốn này thư ng có lượng tính tốn và
kết qu lớn đến rất lớn, tùy thuộc vào các yêu cầu bài toán.
Bài toán tối ưu khác với bài tốn liệt kê là tìm tất c , bài tốn này chỉ quan tâm
đến việc tìm cấu hình tối ưu nhất theo một hoặc nhiều tiêu chí nào đó. Bài tốn có giá
trị ng dụng trong thực tế và lý thuyết t hợp, đóng góp vào việc xây dựng những
thuật tốn hiệu qu .
Từ đó tốn t hợp có tính ng dụng m nh trong: lý thuyết số, hình học hữu h n,
biểu diễn nhóm, đ i số khơng giao hốn, q trình ngẫu nhiên, thống kê xác suất, quy
ho ch thực nghiệm,…
Trong chương này sẽ trình bày lý thuyết và một số bài toán t hợp.

2.1. T păh p vƠăcácănguyênălýăc ăb n
2.1.1. Tập hợp
Theo Nguyễn Đ c Nghĩa trình bày t i [3] thì tập hợp là một trong những định
nghĩa cơ b n nhất.
Tập hợp được coi là một không gian ch a tất c các các đối tượng có cùng b n
chất (thuộc tính, dấu hiệu) chung nào đó. Tập hợp thư ng được ký hiệu bằng các chữ


13

cái A, B, C,... Các phần tử c a tập hợp ký hiệu bằng các chữ thư ng a, b, c,... Ðể chỉ a

là phần tử c a X ta viết: a  X (đọc: a thuộc X). Ðể chỉ x không ph i là phần tử c a X

ta viết: x  X (đọc: x không thuộc X). Tập khơng có phần tử nào gọi là tập rỗng và ký
hiệu 

Lực lượng tập hợp: Số phần tử c a A, ký hiệu là A hoặc N(A), gọi là lực

luợng c a tập A. Nếu A <  , ta nói A là tập hữu hạn, nếu A =  , ta nói A là tập
vơ hạn.
Quan hệ bao hàm: Cho hai tập A, B. Nếu mỗi phần tử thuộc A cũng thuộc B ta

nói A là tập con c a B (hoặc A bao hàm trong B) và ký hiệu A  B. Tập rỗng là con
c a mọi tập hợp. Tập vũ trụ là tập bao hàm c a mọi tập hợp.
Nếu A không ph i tập con c a B ta ký hiệu A  B

Nếu A  B và B  A ta nói A bằng B và ký hiệu A = B
Tập tất c tập con c a A ký hiệu là P(A)


Các phép toán tập hợp:
Cho các tập A và B. Ta định nghĩa các phép toán sau.
- Phép hiệu: Hiệu c a A và B, ký hiệu A \ B là tập:
A\B={x\xA&xB}

-

Phần bù: Cho tập X và A  X. Phần bù c a A (trong X) là tập: ̅ = X \ A

-

Phép giao: Giao c a A và B, ký hiệu A  B là tập

-

Tích Đêcac (phép ghép) hai tập hợp thành một tập hợp mới :

-

Phép hợp: Hợp c a A và B, ký hiệu A  B là tập
A  B={x \ x  A hoặc x B}
A  B={x\ x A&x  B }

A x B = {(a,b) | a b B}

Hoặc A1 x A2 x … x Ak = {(a1,a2,…,ak) | ai  i=1,2,…,k}
2.1.2. Các nguyên lý cơ bản
 Nguyên lý cộng

Đối với hai tập hợp A và B là hai tập hợp r i nhau thì: N(A  B) = N(A)+N(B)

Ta có thể m rộng ra với nhiểu tập hợp r i nhau như sau: Với { X1, X2, ... , Xn}

là một phân ho ch c a tập S. Khi đó

S= X1+ X2+ ... + Xn

Trư ng hợp riêng hay dùng c a nguyên lý cộng: Nếu A là một tính chất có trên
X thì N(A) = N(X) – N( ̅ )

Ví dụ: trong lớp có 10 học sinh nam và 5 học sinh nữ. Để chọn 1 b n đ ng lên

phát biểu thì thầy giáo có thể có 10+5 = 15 cách chọn.


×