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

NGHIÊN CỨU MỘT SỐ THUẬT GIẢI HEURISTIC CHO BÀI TOÁN POT VÀ ỨNG DỤNG

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 (961.15 KB, 26 trang )


HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG







Đặng Phương Nga





Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01.01



TÓM TẮT LUẬN VĂN THẠC SĨ


HÀ NỘI - 2014

NGHIÊN CỨU MỘT SỐ THUẬT GIẢI HEURISTIC
CHO BÀI TOÁN POT VÀ ỨNG DỤNG

























































Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG




Người hướng dẫn khoa học:
NCVC.PGS.TS. Lê Huy Thập





Phản biện 1: ……………………………………………………………………………

Phản biện 2: …………………………………………………………………………








Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công
nghệ Bưu chính Viễn thông
Vào lúc: giờ ngày tháng năm




Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông

1


MỞ ĐẦU
Cây ton t là cch thể hiện bằng đồ thị của một câu truy vấn dạng SQL
(Structured Query Language) hay AQL (Algebraic Query Language). Dạng đặc biệt

của cây toán t là cây ton t đưng ng POT (Pipelined Operator Tree). POT là cây
mà một s ton t của n c thể thc hiện song song vi d liệu ra của ton t này c
thể là d liệu vào của ton t.
Trên POT, chúng ta có thể thc hiên các thao tc như cân bằng ti, lập lịch truy
vấn ti ưu, thc hiện các nhát cắt cục bộ, phân phi các toán t cho các bộ x lí,
đưc thc hiện bởi các thuật ton. Khi POT đã đưc x bởi các thuật toán, thì việc
thc hiện câu truy vấn tương ứng sẽ gim ti đa thi gian truyền d liệu, tăng tc độ
truy cập.
Đề tài nghiên cứu các thuật toán Heuristic trên POT là vấn đề chưa đưc
nghiên cứu và chưa đưc ứng dụng cụ thể trong thc tế.
Kết qu đạt đưc của đề tài c thể đưc ứng dụng để gii quyết cc bài ton
phân chia ton t trong câu truy vấn của hệ CSDL phân tn và hệ đa x l phân tn.
C thể ứng dụng cho cc vấn đề thc tế khc như chấm thi tuyển vào cc cơ sở đào
tạo, bn hàng qua mạng….
Sau một thi gian tìm hiểu nhng vấn đề nêu trên, tôi xin chọn đề tài “Nghiên
cứu một số thuật giải heuristic cho bài toán POT và ứng dụng” làm đề tài nghiên
cứu luận văn của mình.
Ngoài phần mở đầu và kết luận, luận văn này gồm 3 chương:
Chương 1: Trình bày tổng quan về các phương php phân mnh d liệu và
cách tái cấu trúc quan hệ, phương php tạo cây toán t SQL và AQL từ các mnh.
Chương 2: Gii thiệu bài toán POT và các thuật toán trên POT, nghiên cứu
các thuật toán Heuristic cho bài toán POT
Chương 3: Ứng dụng tại trưng THCS Gia Thanh, nhằm gim ti đa chi phí
truyền thông và tăng tc độ truy cập gia các vị trí mạng của trưng.
2


CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Các phương pháp phân mảnh và khôi phục các quan hệ.
1.1.1. Các phương pháp phân mảnh

Cc kiểu phân mnh cơ bn là:
- Phân mnh ngang.
+ Phân mnh ngang nguyên thủy
+ Phân mnh ngang dẫn xuất
- Phân mnh dọc.
- Phân mnh hỗn hp.
1.1.1.1. Phân mảnh ngang
Thông tin về CSDL cần thiết cho phân mnh ngang. Thông tin về CSDL là
thông tin về lưc đồ khi niệm toàn cục của CSDL. Tức là chúng ta cần biết đưc
cch mà quan hệ con sẽ hp lại vi nhau như thế nào. Trong mô hình quan hệ, cc
liên kết gia cc thc thể cũng đưc biểu thị bằng quan hệ. Vi mục đích thiết kế
phân tn, cc mi liên kết cũng đưc mô hình ho theo kiểu mô hình quan hệ. Theo
cch này, chúng ta sẽ vẽ một đưng ni c hưng từ quan hệ Parent đến quan hệ
Child.
C hai loại phân mnh ngang cơ bn là: phân mnh ngang nguyên thuỷ và
phân mnh ngang dẫn xuất.
Phân mảnh ngang nguyên thủy
Phân mnh ngang nguyên thuỷ là phân rã một quan hệ thành cc tập gồm cc
bộ da trên cc vị từ đưc định nghĩa trên quan hệ đ. Phân mnh ngang nguyên thuỷ
đưc định nghĩa bằng một thuật ton chọn trên cc quan hệ nguồn của một lưc đồ
CSDL. Mnh ngang R
i
bao gồm cc bộ của R đưc chọn ra theo công thức:
R
i
= 𝜎
Fi
(R), 1≤ i ≤ z.
Trong đ F
i

là công thức chọn đưc s dụng để c đưc mnh R
i
. Chú  rằng
chúng ta xét F
i
c dạng chuẩn hội, n là một vị từ hội sơ cấp (m
i
).
3


Phân mảnh ngang dẫn xuất
Phân mnh ngang dẫn xuất là phân mnh một quan hệ da vào cc vị từ đưc
định nghĩa trên quan hệ chủ (Parent). Phân mnh ngang dẫn xuất là phân mnh ngang
trên quan hệ đích của một đưng ni da theo phép ton chọn trên quan hệ nguồn của
đưng ni đ.
Nếu cho trưc một đưng ni L, trong đ Nguon (L) = S và Dich (L) = R, các
mnh ngang dẫn xuất của R đưc định nghĩa là:
R
i
= R S
i
, 1 ≤ i ≤
Trong đ  là s lưng các mnh đưc định nghĩa trên R, và S
i
= 𝜎
Fi
(S) vi F
i


là công thức định nghĩa mnh ngang nguyên thuỷ S
i
.
Các thông tin cần cho phân mảnh ngang dẫn xuất :
Mun thc hiện phân mnh ngang dẫn xuất, chúng ta cần ba thông tin vào: tập
cc mnh của quan hệ nguồn, quan hệ đích và tập cc vị từ ni na gia nguồn và
đích
Một số vấn đề phức tạp cần phải chú ý.
Trong lưc đồ CSDL, chúng ta hãy gặp nhiều đưng ni đến một quan hệ R (ví
dụ như trong hình 1.1, PhanNhiem c hai đưng ni đến). Như thế c thể c nhiều
cch phân mnh ngang dẫn xuất cho R. Quyết định chọn cch phân mnh nào cần
da trên hai tiêu chuẩn:
(1) Phân mnh c đặc tính ni tt hơn.
(2) Phân mnh đưc s dụng trong nhiều ứng dụng hơn.
1.1.1.2.Phân mảnh dọc
Cho R là một quan hệ trên tập cc thuộc tính Ω = {A
1
, A
2
,…, A
n
}. Khi đ phân
mnh dọc quan hệ R sinh ra cc mnh R
1
, R
2
,, …, R
n
sao cho mỗi mnh là một quan
hệ chứa một tập con cc thuộc tính cu quan hệ R và kha của n. Tức là Ω sẽ đưc

phân mnh sao cho Ω = Ω
1
ᴗ Ω
2
ᴗ…. Ω
n
, trong đ R
i
là mnh quan hệ trên cc thuộc
tính Ω
i
, i=1…k.
4


Mục đích của phân mnh dọc là phân chia quan hệ R thành tập cc quan hệ nhỏ
hơn để c nhiều ứng dụng c thể chỉ cần thc hiện trên một mnh, điều này làm gim
đng kể chi phí. Mnh ti ưu là mnh sinh ra một lưc đồ phân mnh cho phép gim
thiểu thi gian thc hiện của ứng dụng trên mnh đ.
Kỹ thuật phân mnh dọc phức tạp hơn phân mnh ngang, vì s la chọn phân
hoạch rất ln. Trong trưng hp c m thuộc tính không phi kha chính, thì s mnh
c thể là m
m
.
Để c đưc li gii ti ưu cho bài ton phân mnh dọc rất kh, không hiệu qu.
Vì vậy vần phi s dụng cc phương php Heuristic cho phân mnh dọc cc quan hệ
toàn cục. C hai phương php Heuristic:
a. Nhm thuộc tính: bắt đầu gn mỗi thuộc tính cho một mnh và trong mỗi
bưc, ni một s mnh lại vi nhau cho đến khi thỏa mãn điều kiện phân
mnh.

b. Tch mnh: bắt đầu bằng một quan hệ và quyết định cch phân chia quan hệ
da trên hành vi truy xuất của cc ứng dụng trên cc thuộc tính.
Ở đây chúng ta chỉ xem xét kỹ thuật tch mnh vì n thích hp vi phương
php thiết kế CSDLPT từ trên xung.
Việc nhân bn cc thuộc tính kha của quan hệ toàn cục trong cc mnh là một
đặc trưng của phương php phân mnh dọc cho phép khôi phục quan hệ toàn cục và
bo đm tính toàn vẹn ng nghĩa và làm gim đi qu trình trao đổi d liệu. Vì vậy
phương php phân mnh dọc chỉ đề cập đến cc thuộc tính không kha.
1.1.1.3.Phân mảnh hỗn hợp
Trong đa s cc trưng hp, phân mnh ngang hoặc phân mnh dọc đơn gin
cho một lưc đồ CSDL không đủ đp ứng cc yêu cầu từ cc ứng dụng. Trong trưng
hp đ, phân mnh dọc c thể đưc thc hiện sau một phân mnh ngang hoặc ngưc
lại, sinh ra một li phân hoạch c cấu trúc cây (Hình 1.3). Bởi vì, hai loại chiến lưc
phân hoạch này đưc p dụng lần lưt, chọn la này đưc gọi là phân mnh hỗn hp
(hybrid fragmentation).
5


1.1.2 Tái cấu trúc quan hệ
1.Tái thiết quan hệ phân mảnh ngang
Tái thiết quan hệ từ các mnh thc hiện bằng toán t hp trong c phân mnh
ngang nguyên thủy lẫn dẫn xuất  một quan hệ R vi phân mnh F
R
= {R
1
, R
2
, R
3
,

… R
m
} ta có:
R = ∪ R
i
; ∀R
i
∈ F
R

2. Tái thiết quan hệ phân mảnh dọc
Quan hệ R có phân mnh dọc F
R
= {R
1
, R
2
, R
3
, … R
r
} và các thuộc tính khóa
K
R =
K
R
i
, ∀R
i
∈ F

R
3. Tái thiết phân mảnh hỗn hợp
Trong phân mnh hỗn hp, hai loại phân mnh ngang và phân mnh dọc này
đưc áp dụng lần lưt. Vì thế tùy vào từng trưng hp cụ thể, chúng ta tái thiết phân
mnh hỗn hp da trên tái thiết quan hệ phân mnh ngang và tái thiết phân mnh dọc
đã nêu ở trên.
1.2. Phương pháp tạo cây toán tử dạng SQL và dạng AQL từ các mảnh.
Cây ton t là cch thể hiện bằng đồ thị của một câu truy vấn dạng SQL
(Structured Query Language) hay AQL (Algebraic Query Language).
1.2.1. Chuyển SQL sang AQL
1.Các phép toán quan hệ
2. Các câu lệnh trong SQL
3. Chuyển SQL sang AQL
Phép chiếu: đưc kí hiệu là π, sau đ là cc thuộc tính nằm sau SELECT, nêu
điều kiện liên quan đến thuộc tính của quan hệ xuất hiện trong mệnh đề FROM.
6


Phép chọn: đưc kí hiệu là σ, sau đ là cc thuộc tính nằm sau WHERE, nêu
điều kiện liên quan đến thuộc tính của quan hệ xuất hiện trong mệnh đề FROM.
Thưng s dụng AND, OR, NOT, BETWEEN, các phép toán so sánh.
Phép kết nối: đưc kí hiệu là , trong mệnh đề WHERE thưng c điều kiện
kết ni nếu như trong mệnh đề FROM có nhiều hơn hai quan hệ.
1.2.2. Tạo cây toán tử dạng SQL và AQL
Định nghĩa cây toán tử:
Một cây toán t là cây vi mỗi nút lá biểu thị cho một quan hệ đưc lưu trong
cơ sở d liệu, nút không phi là lá biểu thị một quan hệ trung gian đưc sinh ra bởi
phép toán quan hệ. Chuỗi cc phép ton để đi theo hưng lá đến gc, gc biểu thị kết
qu vấn tin.
Cách biến đổi câu vấn tin phép tính quan hệ trở thành một cây toán tử như

sau:
i. Trưc hết tạo ra cc nút l là cc quan hệ trong SQL cc nút l nằm sau
FROM.
ii. Nút gc đưc tạo ra như phép chiếu chứa cc thuộc tính kết qu, cc thuộc tính
này nằm sau SELECT.
iii. Lưng t ho (vị từ sau WHERE ) đưc chuyển thành cc phép tính quan hệ
thích hp (phép chọn, phép ni ,…) đi từ cc nút l đến gc. Chuỗi này c thể
đưc cho trc tiếp qua thứ t xuất hiện của cc vị trí và cc ton t.
1.3 Kết luận chương 1
Trong CSDl quan hệ, các thể hiện của quan hệ là các bng. Vấn đề là tìm một
kiểu phân mnh phù hp để phân rã một bng thành nhiều bng con khác nhau, sao
cho các câu vấn tin đưc tham chiếu đến các bng d liệu một cch đơn gin nhất.
Có ba loại phân mnh cơ bn bao gồm:
- Phân mnh ngang
7


+ Phân mnh ngang nguyên thủy: Một quan hệ đưc thc hiện trên cc
vị từ đưc định nghĩa trên chính quan hệ đ.
+ Phân mnh ngang dẫn xuất: Phân mnh quan hệ dừa vào vị từ đưc
định nghĩa trên quan hệ chủ.
- Phân mnh dọc: chia một quan hệ thành nhiều quan hệ con. Phân mnh
dọc cho phép vấn tin vi cc quan hệ nhỏ hơn nên gim đưc s truy cập
và tăng tc độ truy cập.
- Phân mnh hỗn hp: là tổng hp của phân mnh ngang và phân mnh
dọc. Tùy vào công việc sau đ chọn kiểu phân mnh nào cho phù hp.
Trong mô hình tổ chức d liệu, việc lưu tr d liệu dạng cây giúp cho công
việc tìm kiếm d liệu trở nên dễ dàng hơn gọi là cây toán t. Cây ton t là cch thể
hiện bằng đồ thị của một câu truy vấn dạng SQL hay AQL.


8


CHƯƠNG 2. MỘT SỐ THUẬT TOÁN GIẢI BẰNG HEURISTIC
2.1. Giới thiệu bài toán POT và các thuật toán trên POT.
Chúng ta sẽ tập trung nghiên cứu vào bài ton xc định cây truy vấn ti ưu cho
toán t mà một s toán t của cây có thể thc hiện song song vi nhau. Còn nhng
đỉnh khác phi thc hiện tuần t tức là d liệu sn xuất ra tại đỉnh này là d liệu tiêu
thụ tại đỉnh kế tiếp sau của cây toán t. Cây toán t vi tính chất này đưc gọi là cây
toán tử dạng ống- POT (Pipelined Operator Tree).
Gọi T = (V,E), là cây toán t vi V là tập đỉnh, mỗi đỉnh đại diện cho một toán
t, E là tập các cạnh, t
i
là trọng s của đỉnh i, c
ij
là trọng s của cạnh (i,j), và p là s
bộ x lý.
Vì mỗi cây toán t kiểu này đều đẳng cấu vi ma trận liền kề IP (Isomorphous)
[10], [11] mà đỉnh, chính là tiêu đề cột và hàng kèm vi trọng s t
i
của nó và Ô (cell)
- giao của cột và hàng, chính là trọng s cạnh c
ij
.
Gia T và IP có một song ánh, cho nên khi nói về cây toán t T chúng ta có thể
hiểu là ma trận liền kề IP. Do đ c thể gọi ma trận liền kề IP là ma trận truy vấn, IP
truy vấn hay đơn gin là IP.
Để x lý (bằng my tính) đồ thị nói chung- cây toán t ni riêng, ngưi ta
dùng IP.
Định nghĩa 2.1. Cây truy vấn của cây toán t T (IP truy vấn) là một phân

hoạch cc đỉnh của V (hàng hoặc cột của IP) thành p tập F
1
,…,F
p
, vi tập đỉnh (cột-
hàng) thuộc F
k
do bộ x lý thứ k thc thi.
Chi phí để thc hiện tại bộ x lý k là chi phí thc hiện cc đỉnh trong F
k
cộng
vi trọng s từ cc đỉnh này đến cc đỉnh trên nhng bộ x lý khác. Nói cách khác,
chi phí thc hiện F
k
và tổng trọng s của các cạnh (cell) ni từ một đỉnh (cột- hàng)
bất kỳ trong F
k
đến một đỉnh (cột- hàng) bên ngoài.
Quy ưc, c
ij
= 0 nếu không có cạnh từ i đến j.
Định nghĩa 2.2.Ti trên bộ x lý k, kí hiệu L
k
, là chi phí thc hiện các toán t
định vị trên bộ x lý này cộng vi chi phí truyền thông từ bộ x l k đến các bộ x lý
9


khc. Nghĩa là, L
K

=
)(



KK
Fj
ij
Fi
i
Ct
hoặc L
K
=
)(



KK
Fj
ij
Fi
i
Cellt
, trong trưng hp
IP.
Định nghĩa 2.3.
Gọi L là thi gian hoàn thành cây truy vấn dạng ng đưc tính từ thi gian các
toán t khởi động cho đến khi toán t cui cùng hoàn tất công việc. Một cây ti ưu sẽ
tồn tại ít nhất một bộ x lý ở tình trạng “ bão hòa”. Tức là thi gian thc thi của cây

truy vấn ti ưu vi p bộ x l đưc xc định bởi biểu thức:
L= max
l ≤k ≤ p
L
k
= max
l ≤k ≤ p
[
)(



KK
Fj
ij
Fi
i
Ct
]
Hoặc:
L= max
l ≤k ≤ p
L
k
= max
l ≤k ≤p
[
)(




KK
Fj
ij
Fi
i
Cellt
] trong trưng hp IP.
Định nghĩa 2.4. Tỉ lệ ti tại toán t. Tỉ lệ ti tại toán t i trên bộ x l k đưc
tính bởi công thức: f
i
=
1
𝐿
(t
i
+


K
Fj
ij
C
),

i

V.
Từ cc định nghĩa trên, chúng ta định nghĩa bài ton lập cây toán t dạng ng
như sau:

Bài toán POT: Cho cây toán t dạng ng T = (V,E), trong đ V là tập các toán
t ( gọi là cc đỉnh), t
i
là chi phí khi dùng toán t i ( trọng s của đỉnh i thuộc V), C
ij

chi phí truyền thông gia hai bộ x lý ( trọng s của cạnh (i,j) thuộc E); p là s bộ x
l ( k= l,…,p). Hãy tìm một truy vấn vi thi gian tr li cc tiểu. Nghĩa là:
Tìm một phân hoạch (F
l
,…,F
p
) của V, tức là gom các toán t vào các nhóm
{F
k
}
k=l,…,p
sao cho:
L= max
l ≤k ≤ p
L
k
= max
l ≤k ≤ p
[
)(



KK

Fj
ij
Fi
i
Ct
] là ít nhất.
Hoặc:
L= max
l ≤k ≤ p
L
k
= max
l ≤k ≤p
[
)(



KK
Fj
ij
Fi
i
Cellt
] là ít nhất, trong trưng hp IP.
10


Đây là bài ton NP - kh. Để tìm li gii ti ưu cho cây ton t dạng ng,
chúng ta xây dng một thuật ton trên cơ sở s dụng hai phép toán gộp đỉnh và cắt

cạnh của cây toán t để quyết định vị trí cc đỉnh kề nhau nên đặt cùng một nhóm F
k

nào đ hay không, tức là nhng toán t nào sẽ đưc giao cho bộ x lý k thc hiện.
2.1.1. Các thuật toán tách - gộp các đỉnh của POT
Định nghĩa 2.5. Cho cây toán t T(V,E), toán t Gop(i,j) hay (Collapse(i,j))
gộp hai đỉnh i và j trong tập F
k
để tạo ra đỉnh m như sau:
- t
m
= t
i
+ t
j
.
- Cc cạnh ni vi i và j đưc chuyển thành ni vi m
Định nghĩa 2.6. Cho cây toán t T(V,E), toán t Tach(i, j) (hay cut(i,j)) đưc
s dụng cắt cạnh (i, j) vi hai đỉnh i và j trong tập F
k
để tch hai đỉnh này như sau:
- i và j thuộc hai tập F
k
, F
l
khác nhau.
- Cc đỉnh i và j sẽ c trọng s mi là:
t
i
new

= t
i
old
+ c
ij

t
j
new
= t
j
old
+ c
ij
1.Thuật toán gộp:
Gop(i,m) gộp hàng con i vào hàng cha m. Gi s IP truy vấn cấp n ×n
Input: Hàng con i, hàng cha m
Output: IP truy vấn đã gộp hàng con i vào hàng cha m
Begin
t
m
= t
m
+ t
i

For k=1 to n do
c
m,k
+=c

i,k
End For
Ghi nhãn hàng con i vào bên cạnh hàng cha m
11


Xóa hàng i và cột i
End.
Độ phức tạp của thuật toán là O(n).
2.Thuật toán Tách
Tach(i,m) tách hàng con i ra khỏi hàng cha m.
Input: Toán tử cần tách
Output: Các toán tử đã được tách
Begin
t
m
new
= t
m
old
+ c
i,m
{với i là hàng con, m là hàng cha}
t
i
new
= t
i
old
+ c

i,m
{với i là hàng con, m là hàng cha}
End.
Độ phức tạp của thuật toán là O(n).
2.1.2. Thuật toán Dividing
Gi s có p bộ x lý, n công việc x
1
, x
2
,…, x
n
có thi gian thc hiện lần lưt là
t
1
, t
2
,…, t
n
. Mỗi công việc có thể thc hiện trên một bộ x lý bất kỳ nhưng phi thc
hiện trọn vẹn. Hãy tìm cách phân chia n công việc cho p bộ x lý sao cho thi gian
hoàn thành là nhanh nhất.
Thuật toán Dividing
Đầu vào:
- JOBS: tập gồm c n công việc x
1
, x
2
,…, x
n


- Cây ton t đơn điệu T, chứa cc t
1
,…, t
n
, là thi gian thc hiện tương
ứng vi cc công việc và khc 0.
- p: s bộ x l
12


- F: tập gồm cc phân hoạch F
1,
F
2
,…F
p
để phân chia công việc vào đ.
Tập F ban đầu đưc khởi tạo bằng rỗng (Ø)
Đầu ra:
- Tập kết qu F chứa cc F
i
và các công việc x
i
đã đưc phân chia.
Cách thức hoạt động:
Bưc 1:
- Nhập vào tập công việc JOBS = {x
1
,…, x
n

}
- Nhập vào tập thi gian thc hiện cc công việc T = {t
1
,…, t
n
}
- Nhập vào s lưng mnh d liệu p và khởi tạo tập F = {F
1
,…,F
p
} = Ø
Bưc 2:
- Chọn ra F
i
c tổng t(F
i
) là nhỏ nhất trong tập F
- Chọn ra x
j
có t
j
ln nhất trong tập JOBS.
- Đưa x
j
vào tập F
i

- Loại bỏ x
j
khỏi tập JOBS

Bưc 3:
- Kiểm tra xem tập JOBS c rỗng không.
+ Nếu không quay lại bưc 2
+ Nếu c thì thc hiện bưc 4
Bưc 4:
- Lưu phân hoạch F vi cc phần t (F
1
,…, F
p
)

chứa cc phần t x
j
sao cho
thi gian hoàn thành cc công việc là nhanh nhất.
Thuật toán Dividing độ phức tạp đa thức.
2.1.3. Thuật toán Dividing-BalancedCuts
Chúng ta thấy rằng đầu ra của thuật toán BalancedCuts [4] là một phân hoạch
liên thông có s tập như  mun (s tập này phụ thuộc vào s bộ x lý). Nếu áp dụng
thuật ton BalancedCuts cho cc trưng hp bộ x l thay đổi từ p đến n thì sẽ thu
13


đưc (n-p+l) bộ cây ti ưu tương ứng. Sau đ kết qu của mỗi trưng hp sẽ đưc áp
dụng tiếp cho thuật toán phân chia công việc Dividing. Cui cùng ta thu đưc (n-p+l)
cây truy vấn vừa bo đm tính ti ưu truyền thông vừa đm bo cân bằng ti. Chúng
ta chọn kết qu tt nhất trong (n-p+l) cây này để làm cây truy vấn ti ưu. Kết qu kết
hp này bao gi cũng không xấu hơn kết qu của từng thuật toán riêng lẻ.
Thuật toán Dividing-BalancedCuts
Đầu vào:

- Cây ton t đơn điệu T, chứa cc t
1
,…, t
n
, là thi gian thc hiện tương
ứng vi cc công việc và khc 0.
- p: s bộ x l
Đầu ra:
- Kết qu phân hoạch F chứa cc (F
1,
F
2
, … F
p
) sao cho max
1≤i≤p
Cost(F
i
) là
nhỏ nhất.
Kết qu của thuật toán phân hoạch (F
1
,F
2
,…,F
p
) sao cho maxCost (F
i
) là nhỏ
nhất.

Thuật toán Dividing-BalancedCuts c độ phức tạp đa thức. Thuật ton đưc áp
dụng khá tt không nhng cho nhng cây truy vấn thông thưng vi yêu cầu về cân
bằng ti mà còn cho các cây truy vấn hình sao. Tính đúng đắn của thuật ton đưc
suy từ thuật toán BalancedCuts. Khi n= p thì kết qu của thuật toán chính là kết qu
của thuật toán BalancedCuts.
2.2. Nghiên cứu các thuật toán Heuristic cho bài toán POT
2.2.1. Giới thiệu thuật toán nhát cắt cục bộ cho bài toán POT
Thuật toán nhát cắt cục bộ (LocalCuts) là một mở rộng của thuật toán tìm cây
ti ưu cho cây ton t POT. Mở rộng này có thể gii quyết trong trưng hp s nhóm
sinh ra bởi thuật toán LocalCuts nhiều hơn s bộ x l cho phép, đồng thi bo đm
yếu t cân bằng ti gia các bộ x lý.
14


2.2.2. Thuật toán LocalCuts
Thuật toán LocalCuts
Input:
 Cây ton t đã qua tiền x l T [4], gồm n đỉnh.
 Tham s α> 1, trong đ α là một gi trị nhỏ hơn tỉ s gia trọng s của
đỉnh l và cạnh s cạnh ni đỉnh l đ vi đỉnh mẹ.
Output : Phân hoạch liên thông (T
l
,…,T
k
).
Thuật toán xem xét s dụng toán t Collapse hay cut cho một đỉnh l và đỉnh
cha của nó ( xem xét kh năng ni nó vi đỉnh cha vào một phân hoạch liên thông).
Cách thức hoạt động:
Bưc 1:
- Nhập vào tập thi gian thc hiện cc công việc T = {t

1
,…, t
n
}
- Nhập vào tham s α > 1
Bưc 2:
- Xét đỉnh con j
- Nếu t
j
> α.c
jm
thc hiện ton t cut(j,m).
- Nếu t
j
≤ α.c
jm
thc hiện ton t collapse(j,m).
Bưc 3:
- Kiểm tra xem nếu còn đỉnh cha m c đỉnh con i không.
+ Nếu có quay lại bưc 2
+ Nếu không thì thc hiện bưc 4
Bưc 4:
- Lưu phân hoạch liên thông T vi cc phần t (T
1
,…, T
k
)
.

Nhận xét:

Thuật ton c độ phức tạp O(n), n là s đỉnh của cây toán t đã qua tiền x lý.
15


Kết qu thuật toán là một phân hoạch liên thông không thể đon trưc đưc
nên thông thưng thuật toán này sẽ cùng đi đôi vi một thuật toán khác (cân bằng ti
chẳng hạn) để phân phi các phân hoạch liên thông này cho các bộ x lý.
Thuật toán LocalCuts chỉ xem xét s dụng toán t collapse hay cut cho một
đỉnh l và đỉnh cha của nó (hay xem xét kh năng ni nó vi đỉnh cha vào một phân
hoạch liên thông), nên quyết định này độc lập vi trọng s của đỉnh cha, do đ trong
một s trưng hp sẽ làm tăng trọng s của đỉnh cha lên một cch đng kể.
Từ đây, chúng ta c thể gộp cc đỉnh trong mnh và dùng thuật toán Dividing
để cân bằng ti trên các bộ x lý (vi s lưng) cho trưc.
Chú ý: Có thể gán cho các giá trị α > 1 khc nhau để đưc các phân hoạch khác
nhau.
2.2.3.Thuật toán cân bằng tải dựa vào Dividing
Gi s có p bộ x lý, n công việc x
1
, x
2
,…, x
n
có thi gian thc hiện lần lưt là
t
1
, t
2
,…, t
n
. Mỗi công việc có thể thc hiện trên một bộ x lý bất kỳ nhưng phi thc

hiện trọn vẹn.
Thuật toán cân bằng ti da vào nguyên tắc sau: “ Giao công việc có thi gian
thc hiện ln nhất trong các công việc chưa đưc phân công cho bộ x lý hiện thi có
ti ít nhất” trong đ, ti của bộ x l k đưc xc định bởi công thức L
K
=
)(



KK
Fj
ij
Fi
i
Ct

Đầu vào:
- JOBS: tập gồm c n công việc x
1
, x
2
,…, x
n

- Cây ton t đơn điệu T, chứa cc t
1
,…, t
n
, là thi gian thc hiện tương

ứng vi cc công việc và khc 0.
- p: s bộ x l
16


- F: tập gồm cc phân hoạch F
1,
F
2
,…, F
p
để phân chia công việc vào đ.
Tập F ban đầu đưc khởi tạo bằng rỗng (Ø)
Đầu ra:
- Tập kết qu F chứa cc F
i
và cc công việc x
i
đã đưc phân chia.
Cách thức hoạt động:
Bưc 1:
- Nhập vào tập công việc JOBS = {x
1
,…,x
n
}
- Nhập vào tập thi gian thc hiện cc công việc T = {t
1
,…, t
n

}
- Nhập vào s lưng mnh d liệu p và khởi tạo tập F = {F
1
,…,F
p
} = Ø
Bưc 2:
- Chọn ra F
i
có Ti(F
i
) là nhỏ nhất trong tập F
- Chọn ra x
j
có t
j
ln nhất trong tập JOBS.
- Đưa x
j
vào tập F
i

- Loại bỏ x
j
khỏi tập JOBS
Bưc 3:
- Kiểm tra xem tập JOBS c rỗng không.
+ Nếu không quay lại bưc 2
+ Nếu c thì thc hiện bưc 4
Bưc 4:

- Lưu lại tập kết qu phân hoạch (F
1
,…,F
p
).
Thuật ton trên c độ phức tạp O(n
2
).
Tuy thuật ton không để ý trọng s nhưng đơn gin và bo đm cân bằng ti
gia các bộ x l nên thưng đưc s dụng kết hp vi các thuật ton khc để cho
nhng kết qu tt hơn.
2.2.4. Ví dụ minh họa
Thuật toán cân bằng tải kết hợp với thuật toán LocalCuts:
17


2.3. Kết luận chương 2
Gii thuật Heuristic cho phép tìm kiếm phương n phân chia công việc tt nhất
cho các bộ x l để ti ưu về cân bằng ti và truyền thông. Đặc biệt, việc trình bày
song song gia cây toán t và IP truy vấn bằng ánh xạ đẳng cấu cho phép chúng ta
vừa có cái nhìn trc quan rõ ràng dễ hiểu vừa có thể s dụng một ngôn ng lập trình
bậc cao để thể hiện kết qu vi d liệu thc trên các mng.
18


CHƯƠNG 3: ỨNG DỤNG TẠI TRƯỜNG THCS GIA THANH, NHẰM GIẢM
TỐI ĐA CHI PHÍ TRUYỀN THÔNG VÀ TĂNG TỐC ĐỘ TRUY CẬP GIỮA
CÁC VỊ TRÍ MẠNG CỦA TRƯỜNG
3.1 Bài toán
Bài toán lập lịch là một trong nhng vấn đề quan trọng đưc nghiên cứu trong

cc môi trưng tính ton, đặc biệt là cc môi trưng tính ton phân tn như môi
trưng tính toán song song.
Trong quá trình hoạt động thc tiễn, công việc của tác gi đòi hỏi phi qun lý
học sinh trong môi trưng tính toán phân tán vì thế nhằm gim ti đa chi phí truyền
thông và tăng tc độ truy cập gia các vị trí mạng của trưng, tác gi ứng dụng lí
thuyết vào xây dng cơ sở d liệu qun lý học sinh.
Áp dụng bảng vấn tin cho bài toán lập lịch
Cc bưc để áp dụng bng vấn tin vào bài toán lập lịch:
 Xây dng trưc câu vấn tin SQL.
 Tạo lập cây ton t vi:
- i: cc nút (ton t) trong cây ton t.
- t
i
:

trọng s của nút thứ i, là chi phí (thi gian x l hoặc chi phí
tiền) thc hiện phép ton tại nút này.
- C
ij
:

trọng s cạnh, là chi phí (thi gian hoặc chi phí tiền) để truyền
d liệu từ ton t i sang ton t j hoặc ngưc lại.
 Chuyển cây ton t sang bng IP (truy vấn)
 Áp dụng thuật ton Dividing cơ bn hoặc thuật ton cân bằng ti (c
thuật gii Heuristic) để gii bài ton phân chia công việc .
3.2. Xây dựng Cơ sở dữ liệu
Vi bài toán trên, tác gi da vào quá trình hoạt động thc tiễn đề đề xuất xây
dng cơ sở d liệu qun lý học sinh. Vi các bng như sau:
 Môn học: Chứa thông tin về cc môn học trong trưng c ging dạy.

 Khối học: Chứa thông tin về cc khi học trong trưng.
 Khối học: Chứa thông tin về cc lp học của trưng.
19


 Học sinh: Chứa thông tin về cc học sinh trong trưng.
 Điểm: Chứa thông tin về điểm của học sinh cc học kỳ và cc năm trong
trưng.
Chúng ta c sơ đồ quan hệ như hình 3.1
3.3. Thu thập dữ liệu
D liệu đưc thu thập tương ứng vi các bng nêu trên, từ trung tâm thông tin
của trưng trung học cơ sở Gia Thanh – Gia Viễn – Ninh Bình.

Hình 3.1: Sơ đồ cơ sở dữ liệu quan hệ
3.4. Cài đặt
3.4.1 Xây dựng câu truy vấn
Xây dng câu truy vấn SQL lấy ra tên các học sinh đủ tiêu chuẩn đi thi học
sinh giỏi khoa học t nhiên cấp tỉnh. Điều kiện là phi đạt điểm xuất sắc 3 môn toán,
lý, ha (c điểm tổng kết trung bình 3 môn này từ 9 trở lên) thuộc khi 8, 9 và đang
học các lp chọn (lp A).
SELECT C.HoTen
20


FROM Khoi A JOIN Lop B ON A.KhoiID = B.KhoiID
AND A.KhoiID IN (8, 9)
JOIN HocSinh C ON B.LopID = C.LopID
AND B.TenLop LIKE '%A'
JOIN Diem E ON C.HocSinhID = E.HocSinhID
JOIN MonHoc D ON D.MonHocID = E.MonHocID

AND D.TenMon IN (N'Toán', N'Lý', N'Hóa')
GROUP BY C.HoTen
HAVING AVG(E.DiemTK) >= 9
3.4.2 Tạo lập cây toán tử
Da vào câu truy vấn đưc xây dng ở trên, chúng ta xây dưng đưc cây toán
t hình 3.3. Trọng s các cạnh (chi phí x lý) đưc gi định.

Hình 3.3: Cây toán tử
3.4.3 Chuyển cây toán tử sang bảng IP (truy vấn)
Vi cây toán t vi cc đỉnh và trọng s như hình 3.3, chúng ta c thể chuyển
thành bng IP để thc cài đặt thuật toán trên máy tính.
21


3.4.4. Chương trình thực hiện thuật toán cân bằng tải
3.4.4.1. Tổ chức chương trình
Chương trình đưc đặt tên là ThuatToanPhanChiaCongViec_Heuristic, xây
dng dưi dạng Windows Form, trên nền dotNET của Microsoft. Đưc tổ chức như
sau:

Trong đ, các thành phần chính:
- FrmCanBangTaiHeuristic: Cho phép ngưi dùng nhập cc thông tin đầu vào
của thuật ton.
- FrmKetQua: Hiển thị kết qu của thuật ton.
- HeuristicAlgorithm.cs: Chứa cc thủ tục x l thuật ton.
3.4.4.2. Triển khai
Đầu vào:
-
14 công việc x
1

, x
2
,…, x
14
- Cây ton t đơn điệu T, chứa cc t
1
,…, t
14
như

bng 3.6.
- S bộ x l: 4
- 4 phân hoạch F
1,
F
2
, F
3
, F
4
để phân chia công việc vào đ. Tập F ban đầu
đưc khởi tạo bằng rỗng (Ø)
Đầu ra:
22


- Tập kết qu F chứa cc F
1,
F
2

, F
3
, F
4
và cc công việc đã đưc phân
chia.
Giao diện kết quả thực hiện thuật toán:

3.5. Kết luận chương 3
Vấn đề quan trọng của chương này là da vào các nghiên cứu ở cc chương
trưc để ứng dụng lập lịch bài toán POT. Tức là chuyển POT sang bng ( ma trận), từ
đ c thể dùng các phép tính ma trận để tiến hành phân chia công việc. Việc ứng
dụng đưc thc hiện trên d liệu gi định vi s toán t cho trưc. Tuy nhiên việc x
lý có thể đưc thc hiện hoàn toàn trên mng thông qua các chỉ s i và j vi s toán
t không hạn chế.Việc phân b các toán t cho các bộ x l đưc thc hiện thông qua
thuật toán phân chia công việc.
Có thể dùng một ngôn ng lập trình nào đ để thể hiện các thuật ton và thao tc đã
trình bày trong chương mà ở đây chưa đưc đề cập ti.

23


KẾT LUẬN
Kết qu đạt đưc của đề tài c thể đưc ứng dụng để gii quyết cc bài ton
phân chia ton t trong câu truy vấn của hệ CSDL phân tn và hệ đa x l phân tn.
Ngoài ra còn c thể ứng dụng cho cc vấn đề thc tế khc như chấm thi tuyển vào cc
cơ sở đào tạo, bn hàng qua mạng, x lí các thông tin về thiên tai, an ninh,
Hưng phát triển của luận văn:
Lập lịch t động tìm và rút trích xâu con để tìm ra các toán t của SQL và cho
tương ứng vi các toán t đại s quan hệ, chuyển sang câu vấn tin đại s, từ đ xây

dng thành IP truy vấn (không còn qua POT) và áp dụng các thuật toán trên.

×