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

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

26 469 0
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 0,94 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

NGHIÊN CỨU MỘT SỐ THUẬT GIẢI HEURISTIC CHO BÀI TOÁN POT VÀ ỨNG DỤ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.

Trang 1

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

NGHIÊN CỨU MỘT SỐ THUẬT GIẢI HEURISTIC

CHO BÀI TOÁN POT VÀ ỨNG DỤNG

Trang 2

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

Trang 3

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

Trang 4

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 Ri bao gồm các bộ của R được chọn ra theo công thức:

Ri = 𝜎Fi(R), 1≤ i ≤ z

Trong đó Fi là công thức chọn được sử dụng để có được mảnh Ri Chú ý rằng chúng ta xét Fi có dạng chuẩn hội, nó là một vị từ hội sơ cấp (mi)

Trang 5

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à:

Ri = R Si, 1 ≤ i ≤

Trong đó  là số lượng các mảnh được định nghĩa trên R, và Si = 𝜎Fi(S) với Fi

là công thức định nghĩa mảnh ngang nguyên thuỷ Si

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

Trang 6

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à mm

Để 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)

Trang 7

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 FR = {R1, R2, R3,

… Rm} ta có:

R = ∪ Ri; ∀Ri ∈ FR

2 Tái thiết quan hệ phân mảnh dọc

Quan hệ R có phân mảnh dọc FR = {R1, R2, R3, … Rr} và các thuộc tính khóa

K

R = K Ri, ∀Ri ∈ FR

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

Trang 8

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

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

Trang 9

+ 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

Trang 10

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, ti là trọng số của đỉnh i, cij 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ố ti của nó và Ô (cell)

- giao của cột và hàng, chính là trọng số cạnh cij

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, cij= 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 Lk, 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ý

Trang 11

Đị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

𝐿(ti+ 

F K j ij

C ), iV

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), ti là chi phí khi dùng toán tử i ( trọng số của đỉnh i thuộc V), Cijchi 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 (Fl,…,Fp) của V, tức là gom các toán tử vào các nhóm {Fk}k=l,…,p sao cho:

i

t ] là ít nhất, trong trường hợp IP

Trang 12

Đâ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 Fknà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 Fk để tạo ra đỉnh m như sau:

- tm = ti + tj

- 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 Fk để tách hai đỉnh này như sau:

- i và j thuộc hai tập Fk, Fl khác nhau

- Các đỉnh i và j sẽ có trọng số mới là:

tinew = tiold + cij

tjnew = tjold + cij

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

Trang 13

Xóa hàng i và cột i End

Độ phức tạp của thuật toán là O(n)

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 x1, x2,…, xn có thời gian thực hiện lần lượt là

t1, t2,…, tn 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 x1, x2,…, xn

- Cây toán tử đơn điệu T, chứa các t1,…, tn, 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ý

Ngày đăng: 24/10/2014, 15:26

HÌNH ẢNH LIÊN QUAN

Hình 3.1: Sơ đồ cơ sở dữ liệu quan hệ  3.4. Cài đặt - NGHIÊN CỨU MỘT SỐ THUẬT GIẢI HEURISTIC  CHO BÀI TOÁN POT VÀ ỨNG DỤNG
Hình 3.1 Sơ đồ cơ sở dữ liệu quan hệ 3.4. Cài đặt (Trang 21)
Hình 3.3: Cây toán tử - NGHIÊN CỨU MỘT SỐ THUẬT GIẢI HEURISTIC  CHO BÀI TOÁN POT VÀ ỨNG DỤNG
Hình 3.3 Cây toán tử (Trang 22)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w