Tải bản đầy đủ (.doc) (70 trang)

Báo cáo đồ án tốt nghiệp KHAI PHÁ dữ LIỆU VÀ PHÁT TRIỂN TRI THỨC

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 (593.7 KB, 70 trang )

Báo cáo đồ án tốt nghiệp
MỤC LỤC
CHƯƠNG 1 – TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU VÀ PHÁT TRIỂN
CHƯƠNG 1 – TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU VÀ PHÁT TRIỂN TRI THỨC 3
1.1. Phát hiện tri thức: 4
1.2. Khai phá dữ liệu: 5
1.2.1. Kiến trúc hệ thống khai phá dữ liệu: 5
1.2.2. Quá trình khai phá: 6
1.2.3. Mục đích của các tác vụ khai phá dữ liệu: 8
1.2.4. Một số phương pháp khai phá dữ liệu: 10
1.2.5. Tại sao phải cần lựa chọn phương pháp khai phá dữ liệu? 14
CHƯƠNG 2 – MỘT SỐ PHƯƠNG PHÁP SONG SONG KHAI PHÁ DỮ LIỆU 18
2.1. Tổng quan về xử lý song song : 18
2.1.1. Tổng quan: 18
2.1.2. Xử lý song song trong môi trường chia sẻ bộ: 20
2.1.3. Xử lý song song trong môi trường bộ nhớ phân tán: 23
2.2. Giải thuật phân vùng dữ liệu: 26
2.2.1. Giải thuật K-MEANS phân vùng dữ liệu: 27
2.2.2. Cách xác định tâm của các vùng: 28
2.2.3. Vấn đề về khởi tạo k-tâm trong giải thuật K-MEANS: 28
2.2.4. Độ phức tạp của giải thuật K-MEANS: 29
2.2.5. Đánh giá giải thuật K-MEANS: 31
2.2.6. Thuật toán K-MEANS song song: 31
CHƯƠNG 3 – NGHIÊN CỨU CƠ SỞ DỮ LIỆU “XƠ VỮA ĐỘNG MẠCH” 36
3.1. Giới thiệu bài toán: 36
3.2. Giới thiệu chung về dữ liệu: 36
3.3. Mô tả dữ liệu: 40
3.4. Tiền xử lý dữ liệu : 45
1
Báo cáo đồ án tốt nghiệp
CHƯƠNG 4 – CÀI ĐẶT VÀ THỬ NGHIỆM CHƯƠNG TRÌNH 53


4.1. Lựa chọn giải pháp: 53
4.1.1. Lựa chọn môi trường cài đặt: 53
4.1.2. Lựa chọn giải thuật sử dụng trong chương trình: 59
4.2. Phân tích và thiết kế chức năng bài toán: 60
4.2.1. Xác định yêu cầu bài toán: 60
4.2.2. Hệ thống phân loại bệnh nhân: 61
4.2.2.1 Chương trình phân nhóm bệnh nhân theo thuật toán Kmeans song
song: 61
4.2.3. Cài đặt chương trình bằng Visual C++ và OpenMP: 66
KẾT LUẬN VÀ KIẾN NGHỊ 68
TÀI LIỆU THAM KHẢO 70
MỞ ĐẦU
Khai phá dữ liệu là một trong những lĩnh vực đang phát triển nhanh chóng và
đã được ứng dụng trong các lĩnh vực khác nhau. Những lĩnh vực ứng dụng tiêu
2
Báo cáo đồ án tốt nghiệp
biểu của khai phá dữ liệu là trong kinh doanh thương mại, trong khoa học kỹ
thuật. Trong những lĩnh vực ứng dụng đó, y học là một trong những lĩnh vực mà
khai phá dữ liệu đã có những đóng góp đáng kể và trở thành một trong những giải
pháp cho nhiều vấn đề y học. Nhiều hệ thống phát hiện tri thức y học đã được phát
triển và thu được nhiều được rất nhiều lợi ích. Vì vậy tôi chọn đề tài để này mong
muốn nghiên cứu áp dụng một vấn đề nhỏ trong lĩnh vực y học và khai phá dữ liệu
nói chung.
Nội dung đề tài được chia làm 4 chương với bố cục như sau:
Chương 1. Giới thiệu tổng quan về kỹ thuật khai phá dữ liệu và phát hiện tri
thức.
Chương 2. Nghiên cứu một số phương pháp song song khai phá dữ liệu. Bao
gồm các định nghĩa và các mô hình về xử lý song song. Các kỹ thuật xử lý song
song trong môi trường bộ nhớ chia sẻ và bộ nhớ phân tán. Nghiên cứu thuật toán
song song khai phá dữ liệu hay dùng là thuật toán KMEANS song song .

Chương 3. Ứng dụng khai phá dữ liệu trong y học “Bệnh xơ vữa động
mạch”. Bao gồm giới thiệu bài toán về phân nhóm bệnh nhân trong cơ sở dữ liệu
của “Bệnh xơ vữa động mạch”, cấu trúc của cơ sở dữ liệu và các bước phân tích,
tiền xử lý dữ liệu để có được dữ liệu sạch cho quá trình khai phá dữ liệu bằng
chương trình.
Chương 4. Cài đặt và thử nghiệm chương trình, chương này là áp dụng thuật
toán khai phá dữ liệu song song đã nghiên cứu và cơ sở dữ liệu đã được phân tích,
xử lý, xây dựng chương trình Khai phá dữ liệu sử dụng thuật toán KMEANS song
song.
CHƯƠNG 1 – TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU VÀ PHÁT
TRIỂN TRI THỨC
3
Báo cáo đồ án tốt nghiệp
Trong chương này, bài báo cáo trình bày tổng quan về khai phá dữ liệu và
phát hiện tri thức
1.1. Phát hiện tri thức:
Thông tin là yếu tố quan trọng trong cuộc sống hằng ngày của con người.
Không những vậy, thông tin là nhân tố tạo ra thành công trong mọi lĩnh vực nếu
biết sử dụng và khai thác thông tin có hiệu quả. Thông tin phải có ích đối với
người dùng tin, có tính thời sự cao…Điều đặt ra là khai thác thông tin ở đâu? khi
nào? …Câu trả lời là từ các kho dữ liệu có sẵn, chúng ta tìm ra những thông tin
tiềm ẩn có giá trị mà trước đó chưa phát hiện, tìm ra những quy luật và các yếu tố
tác động lên chúng. Thực hiện công việc này chính là thực hiện quá trình phát hiện
tri thức trong kho dữ liệu mà trong đó kỹ thuật cho phép ta lấy được các tri thức đó
chính là kỹ thuật khai phá dữ liệu (data mining).
Tuân theo quy luật phát triển tự nhiên, con người luôn luôn thiếu thốn về tri
thức. Dữ liệu có thể là các sự kiện, cũng có thể là các hiện tượng cụ thể hay không
cụ thể, có cấu trúc hay phi cấu trúc. Còn với tri thức, chúng ta không thể định
nghĩa rõ ràng, chính xác, đó là một khái niệm rất rộng khó có thể đưa ra định
nghĩa chính xác. Tuy nhiên ta thể có nói rằng, tri thức được khai phá từ cơ sở dữ

liệu là tri thức có thể biểu diễn, mô tả (mà con người có thể hiểu được) trong một
ngôn ngữ nào đó bao gồm một hay nhiều yếu tố hoặc là mối quan hệ giữa các
thuộc tính trong dữ liệu. Điều đó nói lên rằng phát hiện tri thức là phát hiện ra tri
thức để phục vụ một hoạt động của con người. Do vậy quá trình phát hiện tri thức
là quá trình hoạt động, khai phá của người dùng tin dựa vào cơ sở vật chất về công
nghệ hiện có.
Tri thức có được nhờ vào công nghệ nói chung, trong đó có vai trò thiết yếu
của kho dữ liệu (Data Warehousing) và khai phá dữ liệu (Data Mining).
4
Báo cáo đồ án tốt nghiệp
1.2. Khai phá dữ liệu:
Khám phá tri thức trong CSDL bao gồm một số công đoạn, trong đó chủ yếu
nhất là khai phá dữ liệu (Data Mining-DM). Mục đích của khai phá dữ liệu là
nhằm phát hiện ra những tri thức mới, tiềm ẩn có lợi, chưa được biết tới trong các
khối dữ liệu. Chỉ trong một thời gian khá ngắn ngủi ít năm vừa qua DM đã đạt
được những bước tiến vượt bậc cả về phương diện nghiên cứu lý thuyết lẫn xây
dựng sản phẩm phần mềm thương mại ở trong hầu hết các lĩnh vực khác nhau của
đời sông kinh tế xã hội như: Tài chính, Ngân hàng, Thương mại, Y tế, Giáo dục,
Khoa học-công nghệ và Môi trường,… Thậm chí người ta còn cho rằng hệ quản trị
cơ sở dữ liệu (CSDL) chiếm ưu thế trên thị trường, được người phát triển phần
mềm ứng dụng CSDL sử dụng sẽ là hệ quản trị được hỗ trợ bởi những công cụ
(Tools) khai phá dữ liệu có chất lượng. Các tập đoàn như IBM, ORACLE, INTEL,
hay MICROSOFT, … đều có và thực hiện rất cấp thiết nhiều dự án phối hợp
nghiên cứu cơ bản và triển khai xây dựng các công cụ như vậy.
Với hai mục đích chính của khai phá dữ liệu là Dự đoán (Prediction) và Mô
tả (Description), người ta thường chọn hai phương pháp cho việc khai phá dữ liệu:
Dự đoán: đòi hỏi sử dụng một vài biến hoặc trường để dự đoán thông tin
tiềm ẩn hoặc một giá trị tương lai của một biến thuộc tính mà ta quan tâm đến.
Mô tả: Tập trung làm nổi bậc lên mô hình kết quả mà con người có thể hiểu
sâu về thông tin dữ liệu.

1.2.1. Kiến trúc hệ thống khai phá dữ liệu:
Kiến trúc của hệ thống khai phá dữ liệu có thể chia thành các thành phần
chính như sau:
Kho dữ liệu là một tập các cơ sở dữ liệu, kho dữ liệu…các công cụ làm sạch
dữ liệu và tích hợp dữ liệu có thể thực hiện trên chúng
Cơ sở trí thức: là yếu tố tri thức được dùng để đánh giá các mẫu kết quả khai
phá được.
5
Báo cáo đồ án tốt nghiệp
Kỹ thuật khai phá: là các công cụ để thực hiện các nhiệm vụ: mô tả, kết hợp,
phân lớp, phân nhóm dữ liệu…
Công cụ đánh giá mẫu: gồm một số modul sử dụng các độ đo và tương tác
với các modul khai phá dữ liệu để tập trung vào các thuộc tính cần quan tâm.
Biểu diễn dạng đồ hoạ: Modul này giao tiếp giữa người dùng và hệ thống
khai phá dữ liệu.
Hình 1. 1: Kiến trúc hệ thống khai phá dữ liệu
1.2.2. Quá trình khai phá:
Khai phá dữ liệu là lĩnh vực có nhiệm vụ khảo sát dữ liệu, chiết xuất tri thức,
thu lượm thông tin, thậm chí là duyệt và tìm kiếm dữ liệu mà chúng ta quan tâm
6
Báo cáo đồ án tốt nghiệp
đến…Là quá trình nhận biết các mẫu dữ liệu qua các giai đoạn khác nhau, các
mẫu dữ liệu phải có tính chính xác, hợp lý, tiềm ẩn và có tính được khám phá, hữu
dụng, cốt lõi là phải hiểu được.
Khai phá dữ liệu liên quan đến nhiều ngành, nhiều lĩnh vực: xác suất thống
kê, trí tuệ nhân tạo, cơ sở dữ liệu, thuật toán, tính toán song song với tốc độ cao…
Hay có thể nói rằng khai phá dữ liệu là việc khám phá ra các dữ liệu có ích, hữu
dụng với người dùng thông tin. Khai phá dữ liệu thường là những modul chương
trình hoạt động trực tiếp trên dữ liệu, tuy nhiên vẫn tồn tại việc khai phá gián tiếp,
một số phương pháp có thể khai phá dữ liệu sau:

+ Phương pháp xác suất thống kê (chọn mẫu)
+ Phương pháp trí tuệ nhân tạo (hay còn gọi là “học máy”)
+ Phương pháp phân đoạn (vùng, lớp) dữ liệu (clustering)
+ Phương pháp nhận dạng (mô hình)
+ Phương pháp cơ sở dữ liệu
+ …
Phương pháp học máy và phương pháp thống kê bước đầu là thuật toán nạp
toàn bộ tệp dữ liệu vào bộ nhớ. Nếu mô hình kho dữ liệu là lớn thì đây là điều
thách thức với người dùng(người khai phá dữ liệu).
Mô hình khai phá dữ liệu có thể mô phỏng như sau:
Hình 1.2: Mô hình khai phá dữ liệu
7
Báo cáo đồ án tốt nghiệp
+ Xác định nhiệm vụ chính: Qua quá trình hình thành bài toán, cần xác định
chính xác và rõ ràng vấn đề cần giải quyết là gì?
+ Dữ liệu liên quan: Từ việc xác định rõ nhiệm vụ, bước này xây dựng giải
pháp dựa trên cơ sở dữ liệu liên quan đến bài toán đã đặt ra.
+ Thu thập dữ liệu liên quan và tiền xử lý chúng: bước này rất quan trọng là
vì sẽ trả lời câu hỏi: thuật toán khai phá có hiểu được cấu trúc dã liệu hay không ?
Và nếu hiểu thì phải xữ lý như thế nào?
+ Chọn thuật khai phá dữ liệu phù hợp và thực hiện chính xác đáp ứng nhu
cầu mẫu cần quan tâm và biểu diễn chúng dưới dạng có ý nghĩa.
+ Mẫu: Các mẫu này là kết quả của quy trình khai phá. Tức là hiểu và sử
dụng tri thức đã tìm được thông qua hành động.
1.2.3. Mục đích của các tác vụ khai phá dữ liệu:
Có hai nhiệm vụ cơ bản đó là dự đoán (prediction) và mô tả (description). Từ
các mẫu tìm kiếm được, chúng ta dự đoán những giá trị chưa biết hoặc những giá
trị trong tương lai. Và tập trung mô tả vào việc tìm kiếm các mẫu mô tả dữ liệu
làm sao cho con người có thể hiểu được
+ Phân lớp(Classification): là việc học một hàm ánh xạ từ một mẫu dữ liệu

vào một trong số các lớp đã được xác định trước đó.
Hồi quy(Regression): Là việc học một hàm ánh xạ từ một mẫu dữ liệu thành
một biến dự đoán có giá trị thực
+ Phân nhóm(Clustering): Là việc mô tả chung để tìm ra các tập hay các
nhóm, loại mô tả dữ liệu. Các nhóm có thể tách nhau hoặc phân cấp. Có nghĩa là
dữ liệu có thể vừa thuộc nhóm này vừa thuộc nhóm kia.
8
Báo cáo đồ án tốt nghiệp
Hình 1.3: Ví dụ về phân nhóm
+ Tổng hợp (Summarization): liên quan đến các phương pháp tìm kiếm một
mô tả tập con dữ liệu, thường áp dụng trong việc phân tích dữ liệu có tính thăm dò
và báo cáo tự động.
+ Mô hình ràng buộc (Dependency Modeling): là việc tìm kiếm một mô hình
mô tả sự phụ thuộc giữa các biến, thuộc tính theo hai mức: phụ thuộc cục bộ vào
cấu trúc của mô hình, phụ thuộc vào thước đo của một định lượng nào đó.
+ Dò tìm biến đổi và độ lệch (Change and Deviation Dectection): Chú ý vào
những thay đổi quan trọng trong dữ liệu từ các giá trị chuẩn hoặc đã được xác định
trước đó.
+ Biểu diễn mô hình (Model Representation): Là việc dùng một ngôn ngữ L
nào đó để mô tả các mẫu mô hình có thể khái phá được. Mô tả mô hình rõ ràng thì
“học máy” sẽ tạo ra mẫu có mô hình chính xác cho dữ liệu. Tuy nhiên nếu mô
hình quá lớn thì khả năng dự đoán của “học máy” bị hạn chế. Như thế sẽ làm cho
việc tìm kiếm sẽ phức tạp hơn cũng như việc hiểu được mô hình và không đơn
giản.
+ Kiểm định mô hình (Model Evaluation): Là việc đánh giá, ước lượng các
mô hình chi tiết, chuẩn trong quá trình xữ lý phát hiện tri thức với sự ước lượng có
9
Báo cáo đồ án tốt nghiệp
dự báo chính xác hay không và có thoả mãn cơ sở logíc hay không? Ước lượng
phải đánh giá chéo (cross validation) với việc mô tả đặc điểm bao gồm dự báo

chính xác, tính mới lạ, tính hữu ích, tính hiểu được phù hợp với các mô hình. Cả
hai phương pháp logic và thống kê chuẩn có thể sử dụng trong mô hình kiểm định
này.
+ Phương pháp tìm kiếm (Search Method): Gồm có hai thành phần, (1)-
Trong bảng tham biến (phạm vi tìm kiếm tham số) thuật toán phải tìm kiếm các
tham số trong phạm vi các chuẩn của mô hình kiểm định rồi tối ưu hoá và đưa ra
các tiêu chí (quan sát) dữ liệu và biểu diễn mô hình đã định. (2)- Mô hình tìm
kiếm, xuất hiện như một đường vòng trên toàn bộ phương pháp tìm kiếm: biểu
diễn mô hình phải thay đổi sao cho các hệ gia phả mô hình phải được thông qua.
1.2.4. Một số phương pháp khai phá dữ liệu:
a. Phương pháp quy nạp(induction)
Đây gồm hai kỹ thuật chính, suy diễn và quy nạp.
- Suy diễn: Dựa trên dãy một số sự kiện chính xác để suy ra các tri thức mới
từ các tri thức đã có. Kỹ thuật suy diễn thường phải dựa vào các luật suy diễn.
- Quy nạp: Dựa vào cơ sở dữ liệu hoặc các kho dữ liệu đã có, phương pháp
quy nạp tự tìm kiếm, tạo mô hình, mẫu và sinh ra tri thức diễn tả các đối tượng
trong cơ sở dữ liệu, liên quan trực tiếp đến mẫu dữ liệu.
b. Cây quyết định
Là một phương pháp mô tả tri thức dạng đơn giản bằng bộ phân loại các đối
tượng có cấu trúc cây phân lớp. Trong đó mỗi nút của cây được gắn nhãn và thuộc
tính có thể là:
+ Một nút lá: Chỉ ra giá trị thuộc tính của lá
+ Một nút trong: Hay còn gọi là nút ra quyết định, kiểm tra mỗi một giá trị
của từng thuộc tính đơn đi cùng một nhánh đường đi là một cây con qua các cạnh
tương ứng với giá trị thuộc tính của lá.
10
Báo cáo đồ án tốt nghiệp
Cây quyết định là một công cụ được dùng rất phổ biến trong việc phân lớp,
phân loại và dự đoán. Cây có ưu điểm là mô tả đơn giản, mô hình quy diễn để hiểu
và dể sử dụng. Tuy nhiên hạn chế là độ chính xác của mô hình.

Trái với mạng Nơron, cây quyết định biểu diễn các luật - rất dễ hiểu đối với
người sử dụng hoặc thậm chí có thể dùng trực tiếp trong cơ sở dữ liệu với công cụ
truy vấn(query), báo cáo(report) thì dễ dàng lấy ra các bản ghi kết quả.
Cây quyết định quy nạp là một dạng quy nạp được dùng trong việc “học” tri
thức thông qua phân lớp, phân loại, phân đoạn. Điều chủ yếu để có thể dùng cây
quyết định trong khai phá dữ liệu đó là:
+ Giá trị thuộc tính: các đối tượng phải được biểu diễn thành các biểu thức
của một tập cố định các thuộc tính, nghĩa là chúng ta sẽ phải rời rạc hoá các miền
giá trị liên tục
+ Các lớp phải được xác định: tức là các mẫu cần được xếp loại thì phải biết
các lớp, các loại từ trước đó
+ Các lớp dùng để phân loại là rời nhau
+ Dữ liệu được dùng phải đầy đủ: điều này đòi hỏi phải có hàng trăm hoặc
hàng nghìn các trường hợp dùng để luyện mẫu.
Ví dụ về cây quyết định:(Ở đây X= sự kiện nào đó (PlayTenis) có thể xãy ra
theo viễn cảnh được xây dựng trong cây quyết định)
Hình 1.4 : Ví dụ về cây quyết định
A
B=Gió
C=Độ ẩm
X=0
X=
1
X=0
X=1
A=nắng
A=Mưa
B =YếuB =Mạnh
C =thấpC =cao
X=1

A=Mây
11
Viễn cảnh
Báo cáo đồ án tốt nghiệp
c. Luật kết hợp
Các luật được tạo ra nhằm suy diễn một số mẫu mang ý nghĩa thống kê:
Dạng luật:
Nếu P thì Q; trong đó P –là mệnh đề đúng với một miền dữ liệu nào đó trong kho
dữ liệu và Q – là mệnh đề sẽ dự đoán.
Nói đến luật kết hợp: chúng ta phải đề cập đến độ đo của luật: đó là độ hỗ trợ
(suport) và độ tin cậy. Chúng phản ánh sự hữu ích và sự chắc chắn của luật khai
phá.
Từ các thành phần đối tượng trong dữ liệu, chúng ta khai phá dữ liệu bằng
các luật kết hợp trong dữ liệu. Ví dụ ta phân tích một cơ sở dữ liệu kinh doanh bán
hàng của công ty Toyota về chiến lược kinh doanh và bán xe máy và ô tô trong
lương lai:
“Xe máy->Phụ tùng xe máy”. {Độ hỗ trợ=20%, độ tin cậy=80%}
Với ví dụ này ta có thể hiểu độ hỗ trợ 20% có nghĩa là phân tích các giao tác
người mua xe máy và mua phụ tùng xe máy có tỷ lệ mua cùng nhau. Còn độ tin
cây 80% có nghĩa là người mua xe máy bao giờ cũng có tỷ lệ lớn mua phụ tùng xe
máy.
* Phân lớp, phân nhóm và phân đoạn (Classification, Clustering and
Segmentaion)
Phân lớp (classification), phân đoạn (segmentation) và phân vùng
(clustering) dữ liệu sao cho mỗi phần, mỗi nhóm hoặc mỗi đoạn giống nhau theo
một tiêu chuẩn nào đó. Điều đó nói lên mối quan hệ của các thành phần, từ đó xây
dựng nên các luật ràng buộc giữa chúng. Một vấn đề cần nói là có sự khác nhau cơ
bản trong việc phân lớp dữ liệu thì các lớp đã được xác định và đặt tên từ trước
còn phân vùng dữ liệu thì chỉ đến khi thực hiện xong giải thuật mới biết dữ liệu
thuộc vào vùng nào và các vùng đấy hoàn toàn chưa được đặt tên.

Một giải thuật phân vùng dữ liệu tối ưu(optimal partitioning) phải là giải
thuật mà các tập mẫu chứa dữ liệu có chung tính chất nào đó được phân tách từ dữ
12
Báo cáo đồ án tốt nghiệp
liệu. Hơn nữa dữ liệu trong cùng một vùng thì có sự khác nhau không lớn, còn dữ
liệu trong các vùng khác nhau thì có khoảng cách rõ rệt.
Trong các giải thuật phân vùng dữ liệu thì việc xây dựng các hàm đánh giá
thuộc tính, hàm định nghĩa tham số giữa các thành phần dữ liệu đóng vai trò quan
trọng trong việc xác định hai đối tượng A, B có tương đồng với nhau hay không.
Tuy nhiên, tuỳ theo kiểu dữ liệu của các đối tượng cần xử lý mà chúng ta lại có
các hàm định nghĩa khác nhau.
* Phương pháp dựa trên mẫu
Là việc sử dụng các mẫu từ cơ sở dữ liệu để tạo nên một mô hình dữ đoán
bằng cách rút ra các thuộc tính tương tự như các mẫu đã biết trong mô hình. Trong
phương pháp này, các kỹ thuật thường hay áp dung như: Phân lớp vùng lân cận,
giải thuật hồi quy (Dasarathy 1991), các hệ thống suy diễn dựa trên các lý do(case-
based reasoning-Kolodner 1993)
* Mô hình phụ thuộc dựa trên đồ thị xác suất
Các mô hình đồ thị xác định sự phụ thuộc xác suất giữa các sự kiện thông
qua các mối liên hệ trực tiếp treo mô hình biểu diễn các cung của đồ thị (Pearl
1988; Whittaker 1990). Mô hình này thường được áp dụng với các biến có giá trị
rời rạc hoặc phân loại từng nhóm. Các biến này cần xác định có phụ thuộc trực
tiếp lẫn nhau hay không?
Mô hình học quan hệ(FOL hoặc FOPC)
Áp dụng luật suy diễn và cây quyết định cùng với việc áp dụng mệnh đề
logic, mô hình học quan hệ (first order logic-ngôn ngữ mẫu thứ tự logíc trước) rất
mềm dẻo là vì mô hình này ứng dụng logic trong tự nhiên.
Khai phá văn bản(text mining)
Phù hợp với việc tìm kiếm, phân lớp, phân hoặch và phân tích các dữ liệu
văn bản phi cấu trúc. Khai phá dữ liệu văn bản hiện được áp dụng trong việc khai

phá thông tin trên mạng và trang WEB. Khảo sát và tìm kiếm nội dung tài liệu,
thông tin phức tạp. Câu hỏi đặt ra cho chúng ta: Tại sao khai phá dữ liệu văn bản
lại là mềm dẻo là không dễ điều khiển.
13
Báo cáo đồ án tốt nghiệp
Mạng neuron
Là một lĩnh vực tiếp cận liên quan đến phát triển cấu trúc toán học với khả
năng “học”. Nó là kết quả của việc nghiên cứu mô hình học của hế thống thần
kinh con người. Mạng neuron có thể đưa ra từ các dữ liệu phức tạp (chính xác
hoặc không) để trích chọn các mẫu và đưa ra các quá trình phức tạp mà con người
hay một số kỹ thuật tầm thường khác không thể phát hiện ra.
Bàn luận về ưu điểm của mạng neuron:
Khả năng tạo ra các mô hình dự đoán có độ chính xác cao
Áp dụng phong phú và đa dạng cho rất nhiều loại bài toán trong thực tiễn
Với việc áp dụng trong các phương pháp phân nhóm, phân đoạn, phân loại,
mô hình hoá…
Bàn luận về khuyết:
Khó có thể xác định cấu trúc mạng neuron
Mạng neuron được nghiên cứu và phát triển cho các lược đồ ngắn để giảm độ
phức tạp của mạng. Đây là kết quả của nhiều luật “học” phức hợp.
Giải thuật di truyền(GA-Genetic Algorithms)
GA nói nôm na rằng là một kỹ thuật có sử dụng máy tính toán mô phỏng quá
trình tiến hoá phức tạp trong tự nhiên, Nói cách khác là giải thuật chỉ ra các cá thể
được hình thành, được đánh giá, ước lượng và thay đổi ra sao?
GA là một giải thuật tối ưu hoá trong kỹ thuật khai phá dữ liệu. Nói rõ hơn là
được áp dụng trong các kỹ thuật xây dựng cây quyết định và luật kết hợp
Tóm tắt: Trong quá trình khai phá dữ liệu, chúng ta có thể áp dụng các
phương pháp trên. Tuy nhiên, không phải lúc nào củng máy móc áp dụng một giải
thuật mà cần phải có phân tích và đánh giá xem: phương pháp nào có đặc điểm
chung và riêng gì để áp dụng vào từng loại bài toán và dữ liệu nhất định.

1.2.5. Tại sao phải cần lựa chọn phương pháp khai phá dữ liệu?
Các phương pháp suy diễn dựa trên tình huống(case-based reasoning), liệt kê
lân cận, logic mờ, các thuật toán đột biến gien cũng chưa hẳn là một phương pháp
14
Báo cáo đồ án tốt nghiệp
khai phá dữ liệu mà nó có khả năng đưa ra các thông tin mới dựa trên việc suy
luận nhưng lại không đáp ứng được yêu cầu về tính “tự động”: việc duyệt và tìm
kiếm dữ liệu của công cụ này rất ưu việt nhưng tự thân công cụ đó lại rất phụ
thuộc vào quy trình nhập dữ liệu. Nếu xét mạng nơron, mạng đa thức thì mặc dù
có tính tự động nhưng chỉ là các quá trình phân loại, nhận dạng các mẫu chứ chưa
hoàn toàn khai phá ra được tri thức mới.
Hiện nay, người ta vẫn chưa đưa ra được một tiêu chuẩn nào trong việc quyết
định sử dụng phương pháp khai phá nào cho bái toán nào thì tối ưu và có hiệu quả
nhất. Câu hỏi và câu trả lời cho việc này là không đơn giãn. Là vì mỗi phương
pháp điều có điểm mạnh và điểm yếu của nó.
Phân lớp – phân loại - phân đoạn dữ liệu
Phần này được chia thành ba dạng chính: phân lớp – phân loại, đưa ra các
luật kết hợp và cuối cùng là phân tích chuỗi.
Với việc phân tích một tập dữ liệu sau đó chia tập dữ liệu đó thành các lớp,
các nhóm, các loại, các đoạn khác nhau dựa vào một số quy tắc hay luật (kết hợp)
hay các chuẩn nhất định. Tuy nhiên khi áp dụng thì các phần tử thuộc cùng một
nhóm thì phải “giống nhau” ở các thuộc tính nào đó. Vấn đề quan trọng là làm sao
phải đưa ra được mô hình cho mỗi một lớp dựa trên các đặc tính của dữ liệu được
dùng để làm mẫu.
Tiếp theo không kém phần cốt lõi là khả năng học luật hay nói cách khác là
khả năng tìm ra các luật có thể áp dụng để xếp dữ liệu vào một trong các lớp đã
được xác định trước, mô tả trước. Chúng ta có thể chọn các phương pháp: cây
quyết định, xác suất, mạng nơron, giải thuật gen di truyền, tìm lân cận gần nhất,
phương pháp quy nạp luật, để áp dụng vào việc này tuỳ theo mỗi dạng bài toán.
Mô tả luật kết hợp

Khai phá luật kết hợp là một kỹ thuật cốt lõi của khai phá dữ liệu. Tuy nhiên,
luật kết hợp là luật chỉ ra các mối quan hệ, các mối ràng buộc giữa các đối tượng
trong một tập nào đấy. Có thể định nghĩa luật kết hợp như sau:
15
Báo cáo đồ án tốt nghiệp
Định nghĩa: một luật kết hợp là một biểu thức dạng X=>Y trong đó X, Y là
các tập các đối tượng hay các sự kiện.
Luật X=>Y có nghĩa là: nếu có X thì Y cũng có xu hướng xảy ra hoặc cũng
có thể hiểu là nếu có X thì ta nói rằng sẽ có Y.
Ví dụ: Có luật kết hợp nói lên mối liên hệ giữa những người hút thuốc và
bệnh ung thư phổi như sau:
“Người có vợ, có chồng điều có con; người dân Việt Nam điều có vợ chồng”.
[Độ hỗ trợ 5%, độ tin cậy 80%]
Khi đó, hệ số 5% được gọi là hệ số tin cậy còn hệ số 80% được gọi là hệ số
hổ trợ.
Bài toán đặt ra là làm sao tìm được tất cả các luật kết hợp với các hệ số tin
cậy nhỏ nhất đáp ứng được với hệ số hổ trợ mà người sử dụng đưa ra.
Tìm ra các luật kết hợp như vậy cũng là một phần trong việc khai phá dữ
liệu.
Chọn dữ liệu mẫu (pattern selection)
Chọn dữ liệu mẫu là một giai đoạn rất quan trọng trong kỹ thuật nhận dạng
và khai phá dữ liệu. Trong xác suất thống kê nhiều chiều có một phần tương tự
như thế đó là tìm các thuộc tính chính của một véctơ thuộc tính nhiều chiều.
Sau khi chọn mẫu thu được một tập con của tập các biến thuộc tính đầu vào
sau khi đã loại bỏ đi các thuộc tính ít quan trọng. Từ đó kết tập thành bộ vectơ
thuộc tính mẫu.
Một vài câu hỏi đặt ra trong khai phá dữ liệu
 Có phải tất cả các mẫu đưa ra là đáng quan tâm hay không?
 Cái gì tạo ra các mẫu đáng quan tâm?
 Hệ thống khai phá dữ liệu có thể sinh ra tất cả các mẫu hữu ích hay

không?
 Có thể tạo ra các mẫu cần quan tâm hay không?
 …
16
Báo cáo đồ án tốt nghiệp
Để trả lời cho các câu hỏi trên chúng ta phải hiểu một cách tổng quát thì hệ
thống khai phá dữ liệu có thể sinh ra rất nhiều mẫu và luật. Tuy nhiên một phần
“ít” trong tất cả các mẫu và luật đã sinh ra là có ích với người dùng. Hơn nữa, các
mẫu đó phải thoả không ít yếu tố sau:
Dể hiểu với người dùng
Có tiềm năng sử dụng
Mới lạ (novel)
Có độ tin cậy ở mức chắc chắn.
Biểu diễn sự hiểu biết (tri thức)
Từ các mẫu đã khám phá đó, người dùng dựa trên cấu trúc của các mẫu xác
định độ đo (độ hỗ trợ, độ tin cậy) của các luật kết hợp(X->Y).
Định nghĩa độ hỗ trợ và độ tin cậy:
Luật X=>Y có độ hổ trợ là s% nếu như s% của giao tác T bao hàm (chứa) X
U Y.
Luật X=>Y có độ tin cậy là c% nếu như c% của giao tác T chứa X thì cũng
Y. Kết quả của luật kết hợp khai phá là đi tìm kiếm tất cả các luật với độ hỗ trợ và
độ tin cậy vượt quá ngưỡng một vài người dùng chỉ ra.
Độ hỗ trợ được tính bằng xác suất của X hoặc Y xuất hiện trong tổng số lần
xuất hiện.
Support(X->Y)=P(XUY)
Độ tin cậy được tính bằng xác suất có diều kiện P(X/Y).
Confidence(X->Y)=P(X/Y)
Độ đo nói lên điều có thể khai phá được, với ngưỡng độ hỗ trợ và độ tin cậy
xác định nhỏ thì có thể tìm kiếm và khai phá được.
Quá trình tối ưu hoá trong khai phá dữ liệu là điều con người luôn mong

muốn, nó sinh ra các mẫu cần quan tâm. Tuy nhiên đây là điều thách thức trong
việc khai phá dữ liệu.
Tóm tắt: Khám phá tri thức là một quy trình bao gồm nhiều giai đoạn mà
trong đó khai phá dữ liệu là một trong những công đoạn quan trọng nhất, công
17
Báo cáo đồ án tốt nghiệp
đoạn này lại phụ thuộc vào việc chọn phương pháp khai phá dữ liệu cùng với luật
kết hợp là vấn đề mấu chốt của vấn đề.
CHƯƠNG 2 – MỘT SỐ PHƯƠNG PHÁP SONG SONG KHAI PHÁ
DỮ LIỆU
Chương này trình bày tổng quan về xử lý song song, các mô hình của xử lý
song song trong môi trường bộ nhớ chia sẻ và phân tán. Nghiên cứu giải thuật
song song khai phá dữ liệu nổi tiếng là giải thuật KMEANS.
2.1. Tổng quan về xử lý song song :
2.1.1. Tổng quan:
Xử lý song song là quá trình xử lý gồm nhiều tiến trình được kích hoạt đồng
thời và cùng tham gia giải quyết một bài toán, nói chung xử lý song song được
thực hiện trên những hệ thống đa bộ xử lý. Mục đích của xử lý song song là thực
hiện tính toán nhanh trên cơ sở sử dụng nhiều bộ xử lý đồng thời. Xử lý song song
dùng để giải quyết các bài toán phức tạp với yêu cầu tính toán lớn trên bộ dữ liệu
lớn.
Xử lý song song liên quan trực tiếp đến nhiều yếu tố như cấu hình máy, phần
mềm hệ thống, thuật toán, ngôn ngữ lập trình
Độ phức tạp của xử lý song song lớn hơn so với xử lý tuần tự, tập trung chủ
yếu ở quá trình trao đổi dữ liệu và đồng bộ các tiến trình.
Để cài đặt các thuật toán song song trên các máy tính song song, chúng ta
phải sử dụng những ngôn ngữ lập trình song song, tiêu biểu như Fortran 9.0,
Pthread với Fortran /C++, MPI với C/C++, OpenMP với C/C++
Các mô hình xử lý song song hiện nay tập trung chủ yếu vào 4 mô hình sau:
- Mô hình chia sẻ bộ nhớ: Các máy tính thực hiện xử lý song song theo mô

hình chia sẻ bộ nhớ đều có điểm chung là các bộ vi xử lý đều dùng chung một bộ
18
Báo cáo đồ án tốt nghiệp
nhớ chia sẻ, các bộ vi xử lý thực hiện xử lý độc lập nhau nhưng có cùng một tài
nguyên bộ nhớ. Kỹ thuật xử lý song song chia sẻ bộ nhớ được chia thành 2 loại
chính dựa vào thời gian truy cập bộ nhớ là truy cập đồng bộ UMA và truy cập
không đồng bộ NUMA.
Hình 2.1. Mô hình chia sẻ bộ nhớ
- Mô hình bộ nhớ phân tán: Cũng giống như mô hình chia sẻ bộ nhớ, mô
hình bộ nhớ phân tán cũng có một điểm chung là tất cả các bộ xử lý tham gia
trong một hệ thống phân tán bộ nhớ phải cùng trong một mạng truyền thông, các
máy tính phải cùng trong một kênh truyền thông. Các bộ xử lý có bộ nhớ riêng của
nó, không có bộ nhớ chung giữa các bộ xử lý và được xử lý độc lập. Các thay đổi
về bộ nhớ chỉ ảnh hưởng tới bộ xử lý tại bộ xử lý đó là không ảnh hưởng tới các
bộ xử lý khác. Khi một bộ xử lý muốn truy cập vào dữ liệu của một bộ xử lý khác,
điều này yêu cầu lập trình viên phải định nghĩa ra làm thế nào và khi nào được
truy cập vào dữ liệu của bộ xử lý khác. Đồng bộ hoá giữa các tiến trình là trách
nhiệm của các lập trình viên.
Hình 2.2. Mô hình bộ nhớ phân tán
- Mô hình lai giữa chia sẻ bộ nhớ và bộ nhớ phân tán: Mô hình này được
sử dụng trong các máy tính lớn nhất và nhanh nhất thế giới. Thành phần bộ nhớ
chia sẻ thường là các bộ nhớ đệm gắn liền với các máy tính đa bộ xử lý đối xứng
19
Báo cáo đồ án tốt nghiệp
SMP (Symmetric Mutilprocessor). Các bộ xử lý trên một máy tính SMP có cùng
một bộ nhớ chia sẻ. Thành phần bộ nhớ phân tán là mạng truyền thông nối giữa
các máy tính SMP với nhau. Mỗi SMP có bộ nhớ riêng của nó và giữa các SMP
không có bộ nhớ chung, vì thế mạng truyền thông là truyền dữ liệu giữa các SMP.
Hình 2.3. Mô hình lai giữa chia sẻ bộ nhớ và bộ nhớ phân tán.
2.1.2. Xử lý song song trong môi trường chia sẻ bộ:

Trong môi trường chia sẻ bộ nhớ, các tiến trình chia sẻ một không gian bộ
nhớ chung, tại đó các tác vụ truy cập vào vùng nhớ như đọc, ghi được thực hiện
không đồng bộ, vì thế có nhiều kỹ thuật như là khoá/cờ hiệu cấm để thực hiện điều
khiển việc truy cập bộ nhớ
Trong lập trình thủ tục tuần tự (như với C, C++, Pascal, Fortran), ta có thể
mô tả bài toán một cách độc lập với các ngôn ngữ lập trình. Khi đã có mô tả về
thuật toán ta dễ dàng cài đặt trên các ngôn ngữ lập trình tuần tự khác nhau bởi vì
hầu hết các ngôn ngữ lập trình thủ tục đều sử dụng các lệnh và cấu trúc điều khiển
chuẩn như: tuần tự, rẽ nhánh if-then, các cấu trúc lặp (for, while, repeat), v.v.
Tương tự như vậy, trong môi trường lập trình chia sẻ bộ nhớ có hai ràng buộc
quan trọng mà chúng ta phải chú ý:
- Một tiến trình có thể chờ một khoảng thời gian bất kỳ giữa hai câu lệnh
cần thực hiện.
- Không thể xem các lệnh thực hiện là đơn thể ở mức các ngôn ngữ lập
trình.
a. Lập trình chia sẻ bộ nhớ dựa vào tiến trình:
Yêu cầu đầu tiên của xử lý song song là phải tạo ra được một số các tiến
trình cần thiết cho bài toán để thực hiện chạy song song và khả năng huỷ bỏ chúng
20
Báo cáo đồ án tốt nghiệp
khi phần việc xử lý song song kết thúc để giải phóng bộ nhớ và các thiết bị mà các
tiến trình đã chiếm giữ. Việc huỷ bỏ các tiến trình phải không cản trở hoạt động
của những tiến trình khác. Xác định được tiến trình chủ để thực hiện thu nhận kết
quả tính toán và giải quyết những việc còn lại cho đến khi kết thúc thuật toán.
Yêu cầu thứ hai của phương pháp này là phân công nhiệm vụ cho các tiến
trình, các tiến trình được tạo ra, được phân công nhiệm vụ và cùng thực hiện. Ví
dụ sau đây minh hoạ việc phân công các tiến trình thực hiện:
Ví dụ 1:
id = create_process(N);
switch(id)

{
case 1: … do NhiemVu1 …(s1); break;
case 2: … do NhiemVu2 …(s2); break;
. . .
case N: … do NhiemVuN …(sn); break;
}
Tiến trình chủ sẽ thu thập kết quả tính toán của các tiến trình khác và thực
hiện các công việc còn lại, còn những tiến trình khác kết thúc. Ví dụ khi chúng ta
viết
join_process(N, id); id là tiến trình còn tiếp tục hoạt động. Nếu ta đặt sau nó
một số câu lệnh thì:
 Các câu lệnh này sẽ không được thực hiện cho đến khi tất cả các tiến
trình đều thực hiện join_process().
 Sau đó chỉ còn lại một tiến trình chủ hoạt động.
b. Cách thức chia sẻ dữ liệu giữa các tiến trình:
Một mặt một tiến trình có thể muốn giữ một phần dữ liệu cục bộ cho riêng
mình, không cho những tiến trình khác nhìn thấy/truy cập tới những dữ liệu đó.
Mặt khác, nó cũng muốn trao đổi thông tin với các tiến trình khác. Xử lý vấn đề
21
Báo cáo đồ án tốt nghiệp
che giấu hay chia sẻ thông tin như thế nào còn tuỳ thuộc vào mô hình mà chúng ta
áp dụng, dựa vào tiến trình hay luồng.
 Các tiến trình trong UNIX, WINDOWS được sử dụng như các đơn vị
tính toán độc lập. Khi muốn sử dụng bộ nhớ chung, ta cần phải xin cấp phát bộ
nhớ và sau khi sử dụng xong phải giải phóng chúng. Người lập trình phải có trách
nhiệm giải phóng bộ nhớ chia sẻ một cách tường minh khi chúng không còn cần
thiết sử dụng. Có hai hàm cơ sở:
o shared(m, &id): cấp phát m byte bộ nhớ chia sẻ cho tiến trình id.
o free_shm(): giải phóng bộ nhớ đã được cấp.
 Đối với các luồng, tất cả các thông tin, theo mặc định, là nhìn thấy được.

Do vậy, trong mô hình này cần phải cố gắng để che giấu thông tin (cơ chế dùng
biến cục bộ)
c. Lập trình chia sẻ bộ nhớ dựa vào luồng (thread)
Các luồng của một tiến trình có thể chia sẻ với nhau về không gian địa chỉ
chương trình, các đoạn dữ liệu và môi trường xử lý, đồng thời cũng có vùng dữ
liệu riêng để thao tác.
Các tiến trình và các luồng trong hệ thống song song cần phải được đồng bộ,
song việc đồng bộ giữa các luồng được thực hiện hiệu quả hơn đổi với các tiến
trình. Đồng bộ giữa các tiến trình đòi hỏi tốn thời gian hoạt động của hệ thống,
trong khi đối với các luồng thì việc đồng bộ chủ yếu tập trung vào sự truy cập các
biến chung (global) của chương trình.
Nhiều hệ điều hành hiện nay hỗ trợ đa luồng như: SUN Solaris, Window NT,
Windows 2000, OS/2, v.v. Hiện nay đã có một chuẩn cho việc lập trình song song
dựa trên các luồng đó là POSIX Threads hay P Threads. Ngoài ra còn có một công
cụ khác nữa hỗ trợ lập trình song song đa luồng là OpenMP, công cụ này hỗ trợ
nhiều nền tảng hệ điều hành hơn là cho cả UNIX và Windows NT, hơn nữa Open
MP cho phép thực thi cả đoạn mã tuần tự, điều này khác với P Threads yêu cầu tất
cả mã lệnh là song song.
22
Báo cáo đồ án tốt nghiệp
2.1.3. Xử lý song song trong môi trường bộ nhớ phân tán:
Tính toán phân tán là những tính toán được thực hiện trên cơ sở kết hợp khả
năng tính toán và truyền thông của hai hay nhiều máy tính trên mạng. Các máy
tính thực hiện trên bộ nhớ và bộ xử lý riêng của nó và thực hiện trao đổi thông tin
qua một mạng truyền thông giữa các máy.
Mô hình tính toán phân tán có những ưu điểm sau:
 Cho phép chia sẻ dữ liệu được lưu trữ ở nhiều máy tính khác nhau.
 Chia sẻ với nhau về một số chức năng chính của máy tính.
 Độ tin cậy cao hơn. Trong trường hợp có một máy tính bị trục trặc thì
những máy tính khác có thể thay thế để hoàn thành nhiệm vụ của hệ thống.

 Tính kinh tế: thường đầu tư vào hệ phân tán sẽ thấp hơn đầu tư cho hệ tập
trung.
Tuy nhiên, hệ tính toán phân tán cũng đứng trước nhiều thách thức:
+ Những vấn đề liên quan đến việc quản trị hệ thống, vấn đề đảm bảo an toàn
hệ thống, bảo mật thông tin, v.v.
+ Xử lý trong các hệ thống phân tán không có bộ nhớ chia sẻ để trao đổi dữ
liệu với nhau. Sự trao đổi được thực hiện bằng cách gửi/nhận thông báo.
Hiện nay có nhiều công cụ lập trình được sử dụng cho tính toán phân tán ở
nhiều mức độ trừu tượng khác nhau, như: CORBA, PVM, MPI, Globus Toolkit 4
v.v.
a. Mô hình gửi/nhận thông báo trong tính toán phân tán:
Trong mô hình tính toán phân tán việc chia sẻ dữ liệu được thực hiện thông
qua cơ chế trao đổi thông điệp.
 Các tiến trình có thể thực hiện trên những bộ xử lý khác nhau và không
có không gian bộ nhớ chia sẻ.
 Chia sẻ dữ liệu thông qua cơ chế send() và receive().
 Tất cả các biến là cục bộ của các tiến trình. Vì thế, những vấn đề về xung
đột dữ liệu (cần phải khoá dữ liệu khi một tiến trình truy cập), hay tranh chấp
23
Báo cáo đồ án tốt nghiệp
thông tin (bài toán loại trừ nhau) không xuất hiện trong mô hình tính toán phân
tán.
Nói chung có hai mô hình gửi/nhận thông báo:
- Gửi/nhận thông báo theo cơ chế dị bộ:
- Gửi/nhận thông báo theo cơ chế đồng bộ: Trong mô hình này, tiến trình gửi
bị chặn lại cho đến khi tiến trình nhận sẵn sàng nhận. Ở đây, sự truyền thông và
đồng bộ hoá luôn gắn chặt với nhau.
* Ưu, nhược điểm của cơ chế gửi/nhận thông báo đồng bộ:
Ưu điểm: Làm cho nhiều vấn đề trong đồng bộ hoá và việc cấp phát bộ nhớ
động trở lên đơn giản hơn.

Nhược điểm:
- Việc gắn chặt các tiến trình với thời gian phân phát thông điệp cũng được
xem như là điều kiện ràng buộc bổ sung đòi hỏi trong khi thiết kế và thực thi
chương trình.
- Việc bắt tiến trình gửi phải chờ dẫn đến việc làm giảm tính đồng thời của
hệ thống.
- Ngoài ra, để cài đặt hiệu quả các hệ thống truyền thông đồng bộ đòi hỏi
phải có những phần cứng đặc biệt để đảm bảo rằng sự truyền thông phải cực
nhanh và sự trao đổi dữ liệu không ảnh hưởng tới sự tính toán của hệ thống. Mà
các mạng truyền thông nhanh có nhiều nút mạng trao đổi dữ liệu với nhau là rất
đắt tiền. Vì những lý do trên, nên hệ gửi/nhận thông báo dị bộ làm việc trên mạng
cục bộ đã được phát triển mạnh mẽ hơn.
Các mô hình lập trình dựa trên cơ chế gửi/nhận thông báo dị bộ.
 Các yêu cầu và trả lời qua lại giữa khách (Client) và chủ (Server) – Mô
hình hướng tâm. Đây là mô hình mà các máy tính chỉ có quan hệ gửi-nhận dữ liệu
với một máy - máy “chủ”. Trong suốt quá trình tính toán, chúng không cần đến
nhau.
 Mô hình “đường-ống”
24
Báo cáo đồ án tốt nghiệp
Mô hình đường ống là mô hình các máy tính được hình dung là xếp thành
một hàng và mỗi máy tính gửi nhận dữ liệu cho 2 máy kề bên.
 Mô hình “vòng-tròn”
Mô hình vòng tròn là mô hình các máy tính được hình dung là xếp thành một
hàng và mỗi máy tính gửi nhận dữ liệu cho 2 máy kề bên.
Ngoài ra còn có mô hình: Hình sao, lưới 2D, lưới 3D, …
b. Lập trình song song phân tán:
Lập trình theo mô hình gửi/nhận thông báo trong hệ thống nhiều máy tính có
thể thực hiện theo ba cách:
1. Sử dụng ngôn ngữ lập trình song song đặc biệt, ví dụ Occam được thiết

kế để sử dụng với các Transputer (Inmos 1986)
2. Sử dụng ngôn ngữ lập trình bậc cao (tuần tự) được mở rộng bằng cách bổ
sung thêm các từ khoá và cú pháp mở rộng để xử lý việc trao đổi thông điệp, ví
dụ CC++ (mở rộng của C++)
Sử dụng những ngôn ngữ lập trình bậc cao và các thư viện gồm những thủ
tục xử lý việc trao đổi thông điệp, ví dụ ngôn ngữ C/C++ và hệ chương trình thư
viện để chạy với PVM, MPI, …
25

×