Trong cây vấn tin, vấn đề tách gộp các đỉnh của nó để giao cho các bộ xử lý thực hiện các phép toán trên đó. Để làm được điều đó thì đòi hỏi phải thực hiện nhiều công đoạn phức tạp như tính chi phí tại các đỉnh bao gồm các chi phí cục bộ và chi phí truyền dữ liệu từ toán tử này sang toán tử khác, tìm các cạnh có chi phí lớn để loại bỏ đi, …
Nếu các công đoạn này được thực hiện ở trên bảng thì sẽ đơn giản hơn nhiều bởi vì ta có thể dựa vào các thuật toán trên ma trận. Tuy nhiên, để có sự tương ứng giữa các kỹ thuật gộp - tách trên cây toán tử, chúng ta cần phải có phương pháp để chuyển sang kỹ thuật tách gộp trên bảng sẽ được trình bày dưới đây.
2.3.1. Kỹ thuật gộp các hàng - cột
Như chúng ta đã trình bày ở trên, một câu vấn tin có thể được thể hiện bởi một cây toán tử và một câu vấn tin cũng có thể thể hiện bởi một bảng vấn tin.
Định nghĩa Phép Gop:
Phép Gop(i,j), là cách gộp hàng i vào hàng j (cột i vào cột j) với tjnew = tjold + ti và nếu các hàng i và j đã liên kết ([5], [6]) với những hàng nào thì j sẽ liên kết với những hàng đó (tương tự cho cột).
Thuật toán Gop(i,j) gộp hàng con i vào hàng mẹ j
Giả sử POM có n hàng (n cột)
Input: Hàng (cột) con i hàng (cột) mẹ j
Ouput: POM đã gộp hàng (cột) con i vào hàng (cột) mẹ j
Begin tj = tj+ ti
For k = 1 To n
cjk += cik
End For
Ghi nhãn i vào bên cạnh hàng (cột) j
Xóa hàng i và cột i
End Begin
Độ phức tạp thuật toán Gop là O(n).
Toán tử Collapse(i, j):
Toán tử Collapse(i, j) gộphai hàng i và j trong tập Fk để tạo ra hàng mới m như sau:
1)tm = ti + tj.
2)Các hàng liên kết với i và j được chuyển thành liên kết với hàng m.
Bảng 2.2. Toán tử Collapse(i, j) gốc
Bảng 2.3. Toán tử Collapse(i, j) sau khi gộp i,j
Chú ý:Dấu * hoặc ** để chỉ có sự liên kết (có chi phí truyền dữ liệu) Hình 2.1 minh họa phép gộp hai đỉnh i và j trong trường hợp cây toán tử.
Hình 2.1. Gộp hai đỉnh i và j thành đỉnh m
Ví dụ Từ bảng POM ở bảng 2.2 dưới đây
Đỉnh 1 2 3 4 5 6 7 8 9 10 11 Đỉnh ti 7 3 3 2 7 10 7 2 2 4 1 1 7 0 9 2 3 0 11 3 3 0 2 4 2 0 1 5 7 0 5 6 10 0 4 7 7 0 5 8 2 0 1 9 2 0 17 10 4 0 2 11 2 0 Bảng 2.4. POM dữ liệu
khi gộp hàng (cột) 1 vào hàng (cột) 6 và gộp hàng (cột) 9 vào hàng (cột) 11 ta được POM ở bảng 2.3.
Đỉnh 2 3 4 5 61 7 8 10 119 Đỉnh ti 3 3 2 7 17 7 2 4 3 2 3 0 11 3 3 0 2 4 2 0 1 5 7 0 5 61 10 0 7 7 0 5 8 2 0 1 10 4 0 2 119 2 0
Bảng 2.5. POM sau khi gộp
2.3.2. Kỹ thuật tách hàng – cột Định nghĩa Phép Tach:
Phép Tach((i,j) cho phép tách hàng i và hàng j (cột i và cột j). Khi đó
tj new = tj old + cij và ti new = ti old + cij
Phép tách sẽ tạo POMi trong đó chứa i và POMj trong đó chứa j
Thuật toán Tach(i,j) tách hàng con i ra khỏi hàng mẹ j
Giả sử đã cho POM
Khi tách hàng con i ra khỏi hàng mẹj sẽ tạo ra POMi chứa hàng i và POMjchứa hàng j
với số hàng (cột) của POMi là Card(POMi) và của POMj là Card(POMj) tương ứng.
Nếu Card(POMi) > 1 thì chúng ta có thể tiếp tục tách POMi nếu cần (tương tự cho Card(POMj) > 1)
Input: POM cần tách
Ouput: Các POM đã được tách Begin
tj = tj+ cij { i là hàng con, j là hàng mẹ}
ti
= ti + cij { i là hàng con, j là hàng mẹ}
End Begin
Toán tử Cut(i, j)
Toán tử Cut(i, j) được sử dụng tách hàng i không còn liên kết với hàng j nữa trong tập Fk để tách ta làm như sau:
1) i và j thuộc hai tập Fk , Fl khác nhau 2) Các đỉnh i và j sẽ có trọng số mới là: ti new = ti old + cij tjnew = tjold + cji Bảng 2.6. Toán tử Cut(i, j) gốc
Bảng 2.7. Toán tử Cut(i, j) sau khi gộp i,j
Hình 2.2 minh họa phép tách hai đỉnh i và j tương ứng.
Hình 2.2. Tách hai đỉnh i và j
Việc tách Cell(i,j) cũng đồng nghĩa với việc hình thành những hàng mới được định vị trên những bộ xử lý khác nhau. Từ các định nghĩa trên chúng ta có nhận xét sau:
Nếu một bảng truy vấn đặt các cạnh i và j trên cùng bộ xử lý thì việc tải dữ liệu trên các bộ xứ lý là bất biến khi i và j bị gộp. Nếu một bảng truy vấn đặt i và j trên các bộ xử lý riêng biệt thì việc tải dữ liệu là bất biến khi tách Cell (i,j ) bị cắt. Ví dụ Cho POM ở bảng 2.8 1 2 3 4 5 t 6 8 9 9 1 1 6 0 0 0 0 0 2 8 3 0 0 0 0 3 9 3 0 0 0 0 4 9 1 0 0 0 0 5 1 0 0 0 1 0 Bảng 2.8. Dữ liệu POM
Khi dùng thuật toán Tach để tách hàng (cột) 1 và 4 với c4,1= 1 chúng ta được POM1gồm hàng (cột) 1 và các hàng (cột) có liên đới với hàng 1, POM4
gồm hàng (cột) 4 và các hàng (cột) có liên đới với hàng 4. Các POM này được thể hiện các bảng 2.9 và bảng 2.10.
Trong các POM này chúng ta có thể tách tiếp thành các POM nhỏ hơn, chẳng hạn tách hàng 1 và 3 ở POM1 (bảng 2.9) sẽ nhận được POM1,1 (bảng 2.9a) và POM1,2 (bảng 2.9b); 1 2 3 t 7 8 9 1 6 0 0 0 2 8 3 0 0 3 9 3 0 0 Bảng 2.9. POM1 1 2 t 10 8 1 10 0 0 2 8 3 0 Bảng 2.9a. POM1,1 3 t 3 12 0 Bảng 2.9b. POM1,2 4 5 t 10 1 4 10 0 0 5 1 1 0 Bảng 2.10. POM4
Ví dụ thể hiện phép tách - gộp trên bảng truy vấn bằng cách gộp các mảnh vấn tin thành một bảng.
Mảnh F1: gộp dòng 1 và dòng 2 Mảnh F2: gộp duy nhất dòng thứ 3
Mảnh F3: gộp hai dòng 3 và 4 trong lược đồ quan hệ
Bảng 2.11. Ma trận Ip truy vấn
Khi tách hàng R1 và hàng R2 thành mảnh F1 ta thấy:
Vì hàng R1 có các Cell khác không tại (1,2); (1,3); (1,4) là 3,3,1; Tuy nhiên giá trị tại Cell (1,2) không được cộng vào vì cùng mảnh F1, các giá trị được cộng vào đỉnh trọng số ở hàng R1. Cách làm tương tự, ta được các bảng 2.12, 2.13, 2.14
Bảng 2.12. Ma trận Ip truy vấn mảnh F1
Bảng 2.13. Ma trận Ip truy vấn mảnh F2
Bảng 2.14. Ma trận Ip truy vấn mảnh F3
Tiếp tục gộp các hàng trong cùng mảnh và ngược lại khôi phục các hàng thành mảnh chúng ta được các bảng 2.15, 2.16, 2.17 như sau:
Bảng 2.15. Ma trận Ip truy vấn lớp mảnh F1
Bảng 2.16. Ma trận Ip truy vấn lớp mảnh F2
Bảng 2.17. Ma trận Ip truy vấn lớp mảnh F3
Hình 2.3. Cắt các cạnh của cây toán tử
Hình 2.4. Gộp các đỉnh của cây toán tử
2.3. Kết luận chương 2
Câu vấn tin đại số quan hệ được thể hiện bằng một bảng gọi là bảng truy vấn. Các tiêu đề hàng và cột sẽ là tên các quan hệ cơ sở. Các Cell là các toán tử để thực hiện phép toán đại số quan hệ.
- Các tiêu đề hàng - cột được gắn trọng số để chỉ ra rằng đó là chi phí xử lý các phép toán trên quan hệ.
- Các Cell(i,j) cũng được gán trọng số để chỉ chi phí chuyển số liệu từ toán tử i đến toán tử j.
Cách thể hiện bảng vấn tin đại số quan hệ dạng bảng.
Các quan hệ trên bảng có thể được tách - gộp lại nhằm mục đích thu nhỏ bảng và tối ưu hóa câu truy vấn.
Thay đổi các phép toán trong Cell để cắt giảm chi phí xử lý.
Các bài toán xử lý trên cây toán tử có sử dụng các phép toán Tach(i,j) và
Gop(i,j) các đỉnh i,j thì đều có thể dùng các thuật toán trên, nhưng chỉ thao tác ở trên ma trận (với i là hàng trong bảng và j là cột trong bảng), điều này làm cho bài toán trở nên rất đơn giản và giảm chi phí một cách đáng kể.
CHƯƠNG III:
ỨNG DỤNG GIẢI BÀI TOÁN CỤ THỂ
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, cijlà trọng số của cạnh
(i,j), và p là số bộ xử lý.
Vì mỗi cây toán tử T kiểu này đều có ma trận đặc trưng Ip duy nhất và ngược lại, mà đỉnh chính là tiêu đề của cột và hàng kèm với trọng số ti của nó
và Cell giao của cột và dòng chính là trọng số cạnh cij. Hiển nhiên, cii = 0 với mọi i. Như vậy 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 đặc trưng Ip. Do đó có thể gọi ma trận đặc trưng Ip là ma trận truy vấn hay bảng truy vấn Ip.
Ip truy vấn là một phân hoạch các hàng hoặc cột của Ip thành p tập F1, ..., Fp với các hàng - cột thuộc Fk do bộ xử lý thứ k thực hiện.
Để 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 ma trận đặc trưng Ip truy vấn để xử lý.
3.1. Cách tính tải trên hàng và các phân hoạch của bảng vấn tin
Một phân hoạch các hàng hoặc cột của Ip thành p tập F1, ..., Fp , với tập các hàng (cột) thuộc Fkdo bộ xử lý thứ k thực hiện.
Chi phí để thực hiện tại bộ xử lý k là chi phí thực hiện các toán tử trong
Fkcộng với trọng số từ các hàng của bộ xử lý này đến các hàng trên những bộ xử lý khác. Nói cách khác, chi phí thực hiện Fk là tổng trọng số của hàng (cột) trong Fk và tổng trọng số của Cell là giao của hàng (cột) bất kỳ trong Fk đến một hàng (cột) bên ngoài. Quy ước, cij = 0 nếu không truyền thông từ hàng i
đến hàng j.
3.1.1. Phân hoạch bảng vấn tin
Giả sử có p bộ xử lý, một phân hoạch Ip thành p lớp F1, ..., Fp , là chia các hàng - cột Ipthành p lớp F1, ..., Fp, với lớp Fk do bộ xử lý thứ k thực hiện.
Mục đích của hành động tách thuộc tính là tìm ra các tập thuộc tính được truy xuất cùng nhau hoặc hầu như là bằng các tập ứng dụng riêng biệt.
Có hai điều phức tạp cần được làm rõ. Điều đầu tiên ứng với hành động tách thuộc tính. Thủ tục trên tách thuộc tính làm hai. Đối với các thuộc tính lớn có thể cần phải phân hoạch thành m dòng. Thiết kế một thuật toán phân hoạch m dòng có thể được nhưng chi phí tính toán cao. Dọc theo đường chéo của ma trận CA, chúng ta cần phải kiểm tra điểm nào làm cho z lớn nhất. Vì thế độ phức tạp của một thuật toán như thế là O(2m).
Điều phức tạp thứ hai liên quan đến vị trí của khối thuộc tính tạo ra một mảnh Thảo luận của chúng ta đến lúc này đã giả sử rằng điểm tách là duy nhất và nó chia ma trận CA thành một phân hoạch trên trái và phân hoạch thứ hai được tạo bởi các thuộc tính còn lại. Tuy nhiên phân hoạch này cũng có thể được tạo ở trong ma trận. Trong trường hợp này chúng ta cần sửa lại thuật toán một chút. Cột tận trái của ma trận CA được xê dịch sang thành cột tận phải và hàng trên cùng được xê dịch xuống dưới đáy. Sau thao tác xê dịch chúng ta kiểm tra n – 1 vị trí trên đường chéo để tìm giá trị z lớn nhất. ý tưởng của hành động tách là chuyển khối thuộc tính tạo ra một tụ đến góc trái trên cùng của ma trận, là nơi có thể xác định được nó dễ dàng. Với việc đưa thêm thao tác xê dịch vào, độ phức tạp của thuật toán phân hoạch tăng theo một hệ số n và trở thành O(n2).
3.1.2. Cách tính tải trên hàng
+ Tải trên bộ xử lý k, ký hiệu Lk, là: ( ) k k j F ij F i i k t cell L
+ Tỷ lệ tải tại toán tử i trên bộ xử lý k là: t cell i L f k F j j i i i , ) ( 1
Mục đích của việc tính tải là tìm ra những vị trí có chi phí truyền thông lớn trong bảng dữ liệu sau đó phân chia cho CPU xử lý các vấn tin một cách tối ưu nhất.
Ví dụ: Liệt kê danh sách tên các nhân viên, với chức vụ là “Lập trình viên” đang tham gia một dự án nào đó. Câu lệnh SQL sẽ là:
SELECT TenNV FROM E, A WHERE E.MaNV = A.MaNV AND A.ChucVu = “Lập trình viên”.
Câu lệnh trong đại số quan hệ sẽ là: TenNV(Chuc_Vu = ”Lập trình viên” (E⋈MaNVA)).
Kí hiệu R1= E⋈MaNVA, R2 = Chuc_Vu = ”Lập trình viên” R1, R3 = TenNVR2. Bảng truy vấn đặc trưng Ip với các phép toán được trình bày như sau:
E A R1 R2 R3
E 0 ⋈MaNV
A 0 ⋈MaNV
R1 ⋈MaNV ⋈MaNV 0 Chuc_Vu = ”Lập trình viên”
R2 Chuc_Vu = ”Lập trình viên” 0 TenNV
R3 TenNV 0
Bảng 3.1. Bảng truy vấn Ip với các phép toán đại số QH
Giả sử: Xử lý tại E (hàng 1) hết 3 đơn vị và chuyển dữ liệu đến thực hiện phép toán E⋈MaNVA là 4 đơn vị. Xử lý tại A (hàng 2) hết 2 đơn vị và chuyển dữ liệu đến thực hiện phép toán E⋈MaNVA hết 1 đơn vị. Xử lý phép toán
E⋈MaNVA (hàng 3) hết 3 đơn vị và thời gian chuyển dữ liệu đến thực hiện phép
toán Chuc_Vu = ”Lập trình viên” hết 1đơn vị. Xử lý phép toánChuc_Vu = ”Lập trình viên” hết 5 đơn vị và chuyển dữ liệu đến thực hiện phép toán Chuc_Vu = ”Lập trình viên” hết 1đơn vị. Xử lý phép toán TenNVhết 7đơn vị.
Bảng Ipđược chỉ ra ở bảng 3.2.
R(row)
C( colunm) (E) 1 (A) 2 (R1) 3 (R2) 4 (R3) 5 T 3 2 3 5 7 (E) 1 3 0 0 4 0 0 (A) 2 2 0 0 1 0 0 (R1)3 3 4 1 0 1 0 (R2)4 5 0 0 1 0 1 (R3)5 7 0 0 0 1 0 Bảng 3.2. Các ti và cellij của Ip
Giả sử phân hoạch Ip thành các lớp: F1 = {1;3}, F2 = {2;4}, F5 = {5}, thì theo các công thức dưới đây ta có:
( ) k k j F ij F i i k t cell L và t cell i L f k F j j i i i , ) ( 1
L1 = t1 + (t3 + cell34 + cell32 )= 3+(3 +1+1) = 8 là tải trên F1
L2 = (t2 + cell23) + (t4 + cell43+cell45)= (2 + 1) + (5 + 1+ 1) = 10 là tải trên F2 L3 = t5 + cell54 = 7 + 1 = 8 là tải trên F3
Thuật toán tính tải trên mảnh Fk
Từ cách tính tải Lk, là: ( ) k k j F ij F i i k t cell
L ta có thuật toán sau:
Thuật toán phanmanh Fk Vào: mảnh Fk
Ra: tải Lk Lk = 0
For Each i In Fk
For Each j In Ip \ Fk
ti += cellij End For
Lk += ti End For
Ghi chú:
- Khi mảnh Fk chỉ có một hàng thì ta có cách tính tải trên hàng đã cho. - Trong phương pháp nhát cắt cục bộ với các tham số khác nhau chúng ta sẽ có các mảnh “to – nhỏ” khác nhau theo nghĩa tải trên đó.